[gatein-commits] gatein SVN: r5204 - in epp/portal/branches/EPP_5_1_Branch: webui/framework/src/main/java/org/exoplatform/webui/application and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Nov 22 09:46:51 EST 2010


Author: thomas.heute at jboss.com
Date: 2010-11-22 09:46:50 -0500 (Mon, 22 Nov 2010)
New Revision: 5204

Modified:
   epp/portal/branches/EPP_5_1_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java
   epp/portal/branches/EPP_5_1_Branch/webui/framework/src/main/java/org/exoplatform/webui/application/ConfigurationManager.java
   epp/portal/branches/EPP_5_1_Branch/webui/portlet/src/main/java/org/exoplatform/webui/application/portlet/PortletApplicationController.java
Log:
JBEPP-657: java.lang.Exception: Cannot find the configuration for the component


Modified: epp/portal/branches/EPP_5_1_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java	2010-11-22 14:41:04 UTC (rev 5203)
+++ epp/portal/branches/EPP_5_1_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java	2010-11-22 14:46:50 UTC (rev 5204)
@@ -49,7 +49,7 @@
 
    private HashMap<String, Object> attributes_;
 
-   private HashMap<String, Application> applications_;
+   private volatile HashMap<String, Application> applications_;
 
    private HashMap<String, WebRequestHandler> handlers_;
 
@@ -89,14 +89,36 @@
       return applications;
    }
 
-   public void removeApplication(String appId)
+   public synchronized void removeApplication(String appId)
    {
       applications_.remove(appId);
    }
 
-   public void addApplication(Application app)
+   /**
+    * This methods will add the new application if and only if it hasn't yet been registered
+    * @param app the {@link Application} to add
+    * @return the given application if no application with the same id has been added
+    * otherwise the application already registered
+    */
+   @SuppressWarnings("unchecked")
+   public <T extends Application> T addApplication(T app)
    {
-      applications_.put(app.getApplicationId(), app);
+      Application result = getApplication(app.getApplicationId());
+      if (result == null)
+      {
+         synchronized (this)
+         {
+            result = getApplication(app.getApplicationId());
+            if (result == null)
+            {
+               HashMap<String, Application> applications = new HashMap<String, Application>(applications_);
+               applications.put(app.getApplicationId(), app);
+               this.applications_ = applications;
+               result = app;
+            }
+         }
+      }
+      return (T)result;
    }
 
    public void register(WebRequestHandler handler) throws Exception

Modified: epp/portal/branches/EPP_5_1_Branch/webui/framework/src/main/java/org/exoplatform/webui/application/ConfigurationManager.java
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/webui/framework/src/main/java/org/exoplatform/webui/application/ConfigurationManager.java	2010-11-22 14:41:04 UTC (rev 5203)
+++ epp/portal/branches/EPP_5_1_Branch/webui/framework/src/main/java/org/exoplatform/webui/application/ConfigurationManager.java	2010-11-22 14:46:50 UTC (rev 5204)
@@ -19,7 +19,14 @@
 
 package org.exoplatform.webui.application;
 
-import org.exoplatform.webui.config.*;
+import org.exoplatform.webui.config.Component;
+import org.exoplatform.webui.config.ComponentHandle;
+import org.exoplatform.webui.config.Event;
+import org.exoplatform.webui.config.EventInterceptor;
+import org.exoplatform.webui.config.InitParams;
+import org.exoplatform.webui.config.Param;
+import org.exoplatform.webui.config.Validator;
+import org.exoplatform.webui.config.WebuiConfiguration;
 import org.exoplatform.webui.config.annotation.ComponentConfig;
 import org.exoplatform.webui.config.annotation.ComponentConfigs;
 import org.exoplatform.webui.config.annotation.EventConfig;
@@ -37,9 +44,9 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * May 10, 2006
@@ -55,7 +62,7 @@
     * <p/>
     * The components of which we manage the configuration
     */
-   private Map<String, Component> configs_ = new HashMap<String, Component>();
+   private final Map<String, Component> configs_ = new ConcurrentHashMap<String, Component>();
 
    /** The logger. */
    private final Logger log;

Modified: epp/portal/branches/EPP_5_1_Branch/webui/portlet/src/main/java/org/exoplatform/webui/application/portlet/PortletApplicationController.java
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/webui/portlet/src/main/java/org/exoplatform/webui/application/portlet/PortletApplicationController.java	2010-11-22 14:41:04 UTC (rev 5203)
+++ epp/portal/branches/EPP_5_1_Branch/webui/portlet/src/main/java/org/exoplatform/webui/application/portlet/PortletApplicationController.java	2010-11-22 14:46:50 UTC (rev 5204)
@@ -133,7 +133,7 @@
       {
          application = new PortletApplication(getPortletConfig());
          application.onInit();
-         controller.addApplication(application);
+         application = controller.addApplication(application);
       }
       return application;
    }



More information about the gatein-commits mailing list