[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