Author: thomas.heute(a)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;
}