Author: adrianc
Date: Mon Oct 21 19:22:21 2013
New Revision: 1534331

URL: http://svn.apache.org/r1534331
Log:
ComponentConfig.java refactor - improved thread-safety for the WebappInfo inner 
class.

Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/component/ComponentConfig.java
    
ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java

Modified: 
ofbiz/trunk/framework/base/src/org/ofbiz/base/component/ComponentConfig.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/component/ComponentConfig.java?rev=1534331&r1=1534330&r2=1534331&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/base/src/org/ofbiz/base/component/ComponentConfig.java 
(original)
+++ 
ofbiz/trunk/framework/base/src/org/ofbiz/base/component/ComponentConfig.java 
Mon Oct 21 19:22:21 2013
@@ -206,7 +206,7 @@ public final class ComponentConfig {
             for (ComponentConfig cc : getAllComponents()) {
                 for (WebappInfo wInfo : cc.getWebappInfos()) {
                     String key = UtilValidate.isNotEmpty(wInfo.position) ? 
wInfo.position : wInfo.title;
-                    if (serverName.equals(wInfo.server) && 
wInfo.appBarDisplay) {
+                    if (serverName.equals(wInfo.server) && 
wInfo.getAppBarDisplay()) {
                         if (UtilValidate.isNotEmpty(menuName)) {
                             if (menuName.equals(wInfo.menuName)) {
                                 tm.put(key, wInfo);
@@ -781,10 +781,10 @@ public final class ComponentConfig {
         public final String location;
         public final String[] basePermission;
         public final String position;
-        // FIXME: CatalinaContainer modifies this field.
-        public boolean appBarDisplay;
         public final boolean sessionCookieAccepted;
         public final boolean privileged;
+        // CatalinaContainer modifies this field.
+        private volatile boolean appBarDisplay;
 
         private WebappInfo(ComponentConfig componentConfig, Element element) {
             this.componentConfig = componentConfig;
@@ -873,6 +873,10 @@ public final class ComponentConfig {
             }
         }
 
+        public synchronized boolean getAppBarDisplay() {
+            return this.appBarDisplay;
+        }
+
         public String[] getBasePermission() {
             return this.basePermission;
         }
@@ -908,5 +912,9 @@ public final class ComponentConfig {
         public boolean isSessionCookieAccepted() {
             return sessionCookieAccepted;
         }
+
+        public synchronized void setAppBarDisplay(boolean appBarDisplay) {
+            this.appBarDisplay = appBarDisplay;
+        }
     }
 }

Modified: 
ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java?rev=1534331&r1=1534330&r2=1534331&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
 (original)
+++ 
ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
 Mon Oct 21 19:22:21 2013
@@ -779,7 +779,7 @@ public class CatalinaContainer implement
                 List<String> virtualHosts = appInfo.getVirtualHosts();
                 String mount = appInfo.getContextRoot();
                 List<String> keys = FastList.newInstance();
-                if (UtilValidate.isEmpty(virtualHosts)) {
+                if (virtualHosts.isEmpty()) {
                     keys.add(engineName + ":DEFAULT:" + mount);
                 } else {
                     for (String virtualHost: virtualHosts) {
@@ -790,12 +790,12 @@ public class CatalinaContainer implement
                     // nothing was removed from the new list of keys; this
                     // means there are no existing loaded entries that overlap
                     // with the new set
-                    if (appInfo.location != null) {
+                    if (!appInfo.location.isEmpty()) {
                         futures.add(executor.submit(createContext(appInfo)));
                     }
                     loadedMounts.addAll(keys);
                 } else {
-                    appInfo.appBarDisplay = false; // disable app bar display 
on overrided apps
+                    appInfo.setAppBarDisplay(false); // disable app bar 
display on overrided apps
                     Debug.logInfo("Duplicate webapp mount; not loading : " + 
appInfo.getName() + " / " + appInfo.getLocation(), module);
                 }
             }


Reply via email to