You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Hans Bakker <ma...@antwebsystems.com> on 2013/10/28 07:31:16 UTC

Re: svn commit: r1534331 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/component/ComponentConfig.java catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java

Hi Adrian,

we have an additional component here which integrate selenium with junit 
in OFBiz.

Because of the change below, our code does not compile anymore and i was 
wondering if you can give us suggestions how to modify our code:
1. ModelTestSuite modelTestSuite = new 
ModelTestSuite(testSuiteInfo.componentConfig.getComponentName(), 
documentElement, testCase);
gives the error:
componentConfig has private access in 
org.ofbiz.base.component.ComponentConfig.ResourceInfo


2.  TestSuiteInfo testSuiteInfo = new TestSuiteInfo(componentConfig, 
testSuiteElement);
gives the error:
TestSuiteInfo(org.ofbiz.base.component.ComponentConfig,org.w3c.dom.Element) 
has private access in org.ofbiz.base.component.ComponentConfig.TestSuiteInfo

was it really required to change these signatures? If yes, please 
suggest how to solve this.....

Regards,
Hans



On 10/22/2013 02:22 AM, adrianc@apache.org wrote:
> 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);
>                   }
>               }
>
>


Re: svn commit: r1534331 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/component/ComponentConfig.java catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java

Posted by Adrian Crum <ad...@sandglass-software.com>.
Fixed, revision 1536586.


Adrian Crum
Sandglass Software
www.sandglass-software.com

On 10/28/2013 7:04 PM, Hans Bakker wrote:
> Adrian,
>
> We already solved the first problem,
>
> however can you tell me how to create a new TestSuiteInfo like the
> following:
>
>   x = new TestSuiteInfo(componentConfig, testSuiteElement);
>
> which is now private which was public before, how should i create it now?
>
> Regards,
> Hans
>
> On 10/28/2013 06:34 PM, Adrian Crum wrote:
>> Yes, of course it was necessary to change the classes - as your
>> compiler errors point out.
>>
>> The general design principle for modelling XML files is to create an
>> immutable (read-only) representation of the XML file. Not only is this
>> an accurate representation of a (supposedly) immutable XML file, it is
>> also thread-safe.
>>
>> You are trying to change a model state or you are trying to access
>> private members (I can't be sure because I can't see your modifications).
>>
>> If the error message is caused by modifying the model state, then you
>> need to refactor your code to treat the model as read-only. If you are
>> trying to access private members, then create accessors for them.
>>
>> Adrian Crum
>> Sandglass Software
>> www.sandglass-software.com
>>
>> On 10/27/2013 11:31 PM, Hans Bakker wrote:
>>> Hi Adrian,
>>>
>>> we have an additional component here which integrate selenium with junit
>>> in OFBiz.
>>>
>>> Because of the change below, our code does not compile anymore and i was
>>> wondering if you can give us suggestions how to modify our code:
>>> 1. ModelTestSuite modelTestSuite = new
>>> ModelTestSuite(testSuiteInfo.componentConfig.getComponentName(),
>>> documentElement, testCase);
>>> gives the error:
>>> componentConfig has private access in
>>> org.ofbiz.base.component.ComponentConfig.ResourceInfo
>>>
>>>
>>> 2.  TestSuiteInfo testSuiteInfo = new TestSuiteInfo(componentConfig,
>>> testSuiteElement);
>>> gives the error:
>>> TestSuiteInfo(org.ofbiz.base.component.ComponentConfig,org.w3c.dom.Element)
>>>
>>> has private access in
>>> org.ofbiz.base.component.ComponentConfig.TestSuiteInfo
>>>
>>> was it really required to change these signatures? If yes, please
>>> suggest how to solve this.....
>>>
>>> Regards,
>>> Hans
>>>
>>>
>>>
>>> On 10/22/2013 02:22 AM, adrianc@apache.org wrote:
>>>> 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);
>>>>                   }
>>>>               }
>>>>
>>>>
>>>
>

Re: svn commit: r1534331 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/component/ComponentConfig.java catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java

Posted by Hans Bakker <ma...@antwebsystems.com>.
Adrian,

We already solved the first problem,

however can you tell me how to create a new TestSuiteInfo like the 
following:

  x = new TestSuiteInfo(componentConfig, testSuiteElement);

which is now private which was public before, how should i create it now?

Regards,
Hans

On 10/28/2013 06:34 PM, Adrian Crum wrote:
> Yes, of course it was necessary to change the classes - as your 
> compiler errors point out.
>
> The general design principle for modelling XML files is to create an 
> immutable (read-only) representation of the XML file. Not only is this 
> an accurate representation of a (supposedly) immutable XML file, it is 
> also thread-safe.
>
> You are trying to change a model state or you are trying to access 
> private members (I can't be sure because I can't see your modifications).
>
> If the error message is caused by modifying the model state, then you 
> need to refactor your code to treat the model as read-only. If you are 
> trying to access private members, then create accessors for them.
>
> Adrian Crum
> Sandglass Software
> www.sandglass-software.com
>
> On 10/27/2013 11:31 PM, Hans Bakker wrote:
>> Hi Adrian,
>>
>> we have an additional component here which integrate selenium with junit
>> in OFBiz.
>>
>> Because of the change below, our code does not compile anymore and i was
>> wondering if you can give us suggestions how to modify our code:
>> 1. ModelTestSuite modelTestSuite = new
>> ModelTestSuite(testSuiteInfo.componentConfig.getComponentName(),
>> documentElement, testCase);
>> gives the error:
>> componentConfig has private access in
>> org.ofbiz.base.component.ComponentConfig.ResourceInfo
>>
>>
>> 2.  TestSuiteInfo testSuiteInfo = new TestSuiteInfo(componentConfig,
>> testSuiteElement);
>> gives the error:
>> TestSuiteInfo(org.ofbiz.base.component.ComponentConfig,org.w3c.dom.Element) 
>>
>> has private access in
>> org.ofbiz.base.component.ComponentConfig.TestSuiteInfo
>>
>> was it really required to change these signatures? If yes, please
>> suggest how to solve this.....
>>
>> Regards,
>> Hans
>>
>>
>>
>> On 10/22/2013 02:22 AM, adrianc@apache.org wrote:
>>> 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);
>>>                   }
>>>               }
>>>
>>>
>>


Re: svn commit: r1534331 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/component/ComponentConfig.java catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java

Posted by Adrian Crum <ad...@sandglass-software.com>.
Yes, of course it was necessary to change the classes - as your compiler 
errors point out.

The general design principle for modelling XML files is to create an 
immutable (read-only) representation of the XML file. Not only is this 
an accurate representation of a (supposedly) immutable XML file, it is 
also thread-safe.

You are trying to change a model state or you are trying to access 
private members (I can't be sure because I can't see your modifications).

If the error message is caused by modifying the model state, then you 
need to refactor your code to treat the model as read-only. If you are 
trying to access private members, then create accessors for them.

Adrian Crum
Sandglass Software
www.sandglass-software.com

On 10/27/2013 11:31 PM, Hans Bakker wrote:
> Hi Adrian,
>
> we have an additional component here which integrate selenium with junit
> in OFBiz.
>
> Because of the change below, our code does not compile anymore and i was
> wondering if you can give us suggestions how to modify our code:
> 1. ModelTestSuite modelTestSuite = new
> ModelTestSuite(testSuiteInfo.componentConfig.getComponentName(),
> documentElement, testCase);
> gives the error:
> componentConfig has private access in
> org.ofbiz.base.component.ComponentConfig.ResourceInfo
>
>
> 2.  TestSuiteInfo testSuiteInfo = new TestSuiteInfo(componentConfig,
> testSuiteElement);
> gives the error:
> TestSuiteInfo(org.ofbiz.base.component.ComponentConfig,org.w3c.dom.Element)
> has private access in
> org.ofbiz.base.component.ComponentConfig.TestSuiteInfo
>
> was it really required to change these signatures? If yes, please
> suggest how to solve this.....
>
> Regards,
> Hans
>
>
>
> On 10/22/2013 02:22 AM, adrianc@apache.org wrote:
>> 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);
>>                   }
>>               }
>>
>>
>