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); } }