You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jspwiki.apache.org by Glen Mazza <gl...@gmail.com> on 2013/08/07 05:43:08 UTC

Switch to Apache Roller-style properties configuration?

Hi Team,

Apache Roller maintains two configuration files, a roller.properties[1] 
which sits within the war, filled with defaults and never needs 
modification (although a user can alter it if he wishes, it will work), 
and a roller-custom.properties file[2] which is placed in the classpath 
($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or 
GlassFish.)  For any value you put in roller-custom.properties, it will 
overwrite what is in roller.properties in the WAR.  So you only need the 
values in the custom file that you're actually overriding, making it 
very short and simple.  And if you don't use a roller-custom.properties, 
all of the defaults in the WAR will prevail.

You can keep deploying new versions of Roller.war to your servlet 
container while never needing to re-configure either roller.properties 
or roller-custom.properties, re-opening WARs, etc. as the 
roller-custom.properties still sitting in $CATALINA_HOME/lib 
automatically is used--this is very convenient during development when 
the WARs frequently get updated.  Same with JUnit and Selenium testing, 
we don't alter the roller.properties but just place the 
roller-custom.properties[2] in the test classpath under 
src/test/resources (if you have multiple config files, you can change 
the custom file name via setting a system property[3]).  All this is 
handled by the WebloggerConfig[4] class, which first reads in 
roller.properties and the overwrites any values from 
roller-custom.properties.

[1] 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup 
<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
[2] 
http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log
[3] 
http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460
[4] 
<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup

I'd like to do the same thing with Apache JSPWiki, modify our own 
PropertyReader.java to accept a new jspwiki-custom.properties file. 
Also, to get rid of the mostly forgotten and empty 
/ini/default_jspwiki.properties and put whatever default values there 
into jspwiki.properties (unless where the latter has already overridden 
those properties.)  Basically, jspwiki.properties will assume the role 
of default_jspwiki.properties and we'll have a new optional 
jspwiki-custom.properties that will not be in the WAR at all (you don't 
want to have it in the WAR as it would get read over what's in 
$CATALINA_HOME/lib, and if you had something to put in 
jspwiki-custom.properties in the WAR you'd just use jspwiki.properties 
anyway.)  Backwards compatibility would not be an issue, as you'd just 
take your jspwiki.properties file from the old WAR and can still insert 
it into the new WAR or just rename it jspwiki-custom.properties and put 
it on the external classpath. WDYT?

Regards,
Glen


Re: Switch to Apache Roller-style properties configuration?

Posted by Ichiro Furusato <ic...@gmail.com>.
Hi Glen,

I'm in favour of simplifying the property management of JSPWiki. The
default_jspwiki.properties file is indeed unused (so far as I know).
Projects tend to get more complicated over time rather than the converse,
so if you think this is a substantial improvement and simplifies things
then I'm all for it.

My only reservation is that the work I've done so far on simplifying the
WikiEngine (via the EntityManager idea) overlaps a bit with this, in that
there are a couple of places where manager implementations are actually
specified in jspwiki.properties. The EntityManager actually extracts those
to a different place, i.e., out of jspwiki.properties. So in the sense that
what I'm proposing simplifies property management a bit, what you're
proposing is orthogonal to the EntityManager work. Which, admittedly, is
not part of any workflow or plan, just something I'm trying to build and
donate to the project.

We (Neocortext) do have PropertyManager and PropertyUtils classes that
perform certain things that might be helpful, dunno. The latter has the
ability to have a *.properties file that sits in the same directory as its
class file, which cascades against the application and System properties
(in descending priority order). So you can set class-level defaults, permit
application-level overrides, over System properties. With some juggling
we've also put System properties at the top of the priority tree so that
command-line System properties override the class properties. But it sounds
like that wouldn't be particularly valuable here and may make things more
complicated.

But in the sense that JSPWiki's property management could use some cleanup,
+1.

Ichiro

PS. Things have slowed down at this end due to a very large project and
some other time constraints that have hit lately, but the EventManager
still remains on our agenda (since it is part of a larger project).


On Wed, Aug 7, 2013 at 3:43 PM, Glen Mazza <gl...@gmail.com> wrote:

> Hi Team,
>
> Apache Roller maintains two configuration files, a roller.properties[1]
> which sits within the war, filled with defaults and never needs
> modification (although a user can alter it if he wishes, it will work), and
> a roller-custom.properties file[2] which is placed in the classpath
> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
> GlassFish.)  For any value you put in roller-custom.properties, it will
> overwrite what is in roller.properties in the WAR.  So you only need the
> values in the custom file that you're actually overriding, making it very
> short and simple.  And if you don't use a roller-custom.properties, all of
> the defaults in the WAR will prevail.
>
> You can keep deploying new versions of Roller.war to your servlet
> container while never needing to re-configure either roller.properties or
> roller-custom.properties, re-opening WARs, etc. as the
> roller-custom.properties still sitting in $CATALINA_HOME/lib automatically
> is used--this is very convenient during development when the WARs
> frequently get updated.  Same with JUnit and Selenium testing, we don't
> alter the roller.properties but just place the roller-custom.properties[2]
> in the test classpath under src/test/resources (if you have multiple config
> files, you can change the custom file name via setting a system
> property[3]).  All this is handled by the WebloggerConfig[4] class, which
> first reads in roller.properties and the overwrites any values from
> roller-custom.properties.
>
> [1] http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
> resources/org/apache/roller/**weblogger/config/roller.**
> properties?view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup><
> http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
> resources/org/apache/roller/**weblogger/config/roller.**
> properties?revision=1511052&**view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
> >
> [2] http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**
> resources/roller-custom.**properties?view=log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
> [3] http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**
> revision=1511052&view=markup#**l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
> [4] <http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
> java/org/apache/roller/**weblogger/config/**WebloggerConfig.java?revision=
> **1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
> >http://**svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**
> apache/roller/weblogger/**config/WebloggerConfig.java?**view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>
> I'd like to do the same thing with Apache JSPWiki, modify our own
> PropertyReader.java to accept a new jspwiki-custom.properties file. Also,
> to get rid of the mostly forgotten and empty /ini/default_jspwiki.**properties
> and put whatever default values there into jspwiki.properties (unless where
> the latter has already overridden those properties.)  Basically,
> jspwiki.properties will assume the role of default_jspwiki.properties and
> we'll have a new optional jspwiki-custom.properties that will not be in the
> WAR at all (you don't want to have it in the WAR as it would get read over
> what's in $CATALINA_HOME/lib, and if you had something to put in
> jspwiki-custom.properties in the WAR you'd just use jspwiki.properties
> anyway.)  Backwards compatibility would not be an issue, as you'd just take
> your jspwiki.properties file from the old WAR and can still insert it into
> the new WAR or just rename it jspwiki-custom.properties and put it on the
> external classpath. WDYT?
>
> Regards,
> Glen
>
>

Re: Switch to Apache Roller-style properties configuration?

Posted by Glen Mazza <gl...@gmail.com>.
Updated, in trunk the property is now named jspwiki.custom.cascade.#.

Glen

On 08/19/2013 01:07 AM, Harry Metske wrote:
> +1
>
> regards,
> Harry
>
>
> On 19 August 2013 05:13, Glen Mazza <gl...@gmail.com> wrote:
>
>> Actually, I'd give this a day or two until I confirm the cascade stuff
>> still works on trunk.  Team: mind if I switch the property name on trunk
>> from jspwiki.propertyfile.cascade.x to jspwiki.custom.cascade.x to stress
>> that you're cascading on top of the jspwiki-custom.properties file and not
>> jspwiki.properties (actually, still doing the latter if you haven't defined
>> jspwiki-custom.properties of course but it's expected for
>> jspwiki-custom.properties to be your first level of customization and the
>> cascade stuff is only if that's not sufficient.)  I think keeping both
>> properties will do more harm than good (too many ways to declare the same
>> thing adds too much confusion).
>>
>> Glen
>>
>>
>> On 08/18/2013 05:50 PM, Glen Mazza wrote:
>>
>>> Thanks for the explanation.  It would be good to check if the latest
>>> changes will still work with your setup.
>>>
>>> In your case, you'd remove the jspwiki.propertyfile parameter element
>>> from each of your five config files and rename the
>>> jspwiki-common.properties to jspwiki-custom.properties, and just place the
>>> file in $CATALINA_HOME/lib. JSPWiki should automatically detect it.
>>>   (You're also welcome to remove every element from the new
>>> jspwiki-custom.properties that has the same value in the default
>>> jspwiki.properties distributed in the WAR, nicely shrinking it.)  I'm
>>> hoping though the "jspwiki.propertyfile.cascade.**x"... configuration
>>> will still work but I fear will it will modify the default
>>> jspwiki.properties and not the jspwiki-custom.properties as it should.
>>>   Hmm, more hacking may be necessary on our side--at least it should be
>>> renamed to jspwiki.custom.cascade.x...
>>>
>>> Glen
>>>
>>> On 08/18/2013 05:32 PM, Adrien Beau wrote:
>>>
>>>> On Fri, Aug 16, 2013 at 12:19 PM, Harry Metske <ha...@gmail.com>
>>>> wrote:
>>>>
>>>>> indeed , tomcat has no option to have webapp specific classloading and
>>>>> therefore it is war surgery.
>>>>> Other appservers might have, for example WebSphere has so called shared
>>>>> libraries that can be assigned to one or more applications, so you can
>>>>> have
>>>>> different configurations for multiple wiki's without war-surgery.
>>>>>
>>>> You can have webapp specific system properties in Tomcat. Currently, I
>>>> have 5 separate JSPWiki instances in the same Tomcat instance, all
>>>> running from the same JSPWiki WAR, but each with a specific property
>>>> file.
>>>>
>>>> I'm still using 2.10.0-svn-10, so this is from before the recent
>>>> property changes. I'm using Tomcat 7.0.42, but I believe this was
>>>> already working in Tomcat 6.
>>>>
>>>> In the Tomcat conf/Catalina/localhost directory, I have five "Context"
>>>> XML files (one per JSPWiki instance). They all follow the same simple
>>>> pattern. For example, here's my Perso.xml context file, which creates
>>>> a "Perso" JSPWiki instance (accessible from
>>>> http://<tomcat:port>/Perso/):
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <Context docBase="F:/app/jspwiki-2.10.**0-svn-10" swallowOutput="true">
>>>>       <Parameter override="false"
>>>>           name="jspwiki.propertyfile"
>>>> value="F:/app/jspwiki-2.10.0-**svn-10/WEB-INF/jspwiki-common.**
>>>> properties"/>
>>>>       <Parameter override="false"
>>>>           name="jspwiki.propertyfile.**cascade.1"
>>>>           value="F:/wiki/perso/conf/**override.properties"/>
>>>> </Context>
>>>>
>>>> docBase is where I extracted the JSPWiki WAR file
>>>> (F:/app/jspwiki-2.10.0-svn-10 in my case).
>>>>
>>>> Inside the WEB-INF directory of the WAR file, I put a
>>>> jspwiki-common.properties file that contains all settings common to
>>>> all my JSPWiki instances. This is the jspwiki.propertyfile parameter,
>>>> which is the same in all contexts.
>>>>
>>>> Inside a directory dedicated to my Perso JSPWiki instance, I put a
>>>> override.properties file that contains the settings specific to the
>>>> Perso JSPWiki instance. This is the jspwiki.propertyfile.cascade.1
>>>> parameter, which is different in every context.
>>>>
>>>> Once defined in a context file, despite originating from the same WAR,
>>>> the web apps behave fully independently from each other. They have
>>>> their own work directories, their own sessions, etc.
>>>>
>>>> Regards,
>>>>
>>>> Adrien
>>>>
>>>


Re: Switch to Apache Roller-style properties configuration?

Posted by Harry Metske <ha...@gmail.com>.
+1

regards,
Harry


On 19 August 2013 05:13, Glen Mazza <gl...@gmail.com> wrote:

> Actually, I'd give this a day or two until I confirm the cascade stuff
> still works on trunk.  Team: mind if I switch the property name on trunk
> from jspwiki.propertyfile.cascade.x to jspwiki.custom.cascade.x to stress
> that you're cascading on top of the jspwiki-custom.properties file and not
> jspwiki.properties (actually, still doing the latter if you haven't defined
> jspwiki-custom.properties of course but it's expected for
> jspwiki-custom.properties to be your first level of customization and the
> cascade stuff is only if that's not sufficient.)  I think keeping both
> properties will do more harm than good (too many ways to declare the same
> thing adds too much confusion).
>
> Glen
>
>
> On 08/18/2013 05:50 PM, Glen Mazza wrote:
>
>> Thanks for the explanation.  It would be good to check if the latest
>> changes will still work with your setup.
>>
>> In your case, you'd remove the jspwiki.propertyfile parameter element
>> from each of your five config files and rename the
>> jspwiki-common.properties to jspwiki-custom.properties, and just place the
>> file in $CATALINA_HOME/lib. JSPWiki should automatically detect it.
>>  (You're also welcome to remove every element from the new
>> jspwiki-custom.properties that has the same value in the default
>> jspwiki.properties distributed in the WAR, nicely shrinking it.)  I'm
>> hoping though the "jspwiki.propertyfile.cascade.**x"... configuration
>> will still work but I fear will it will modify the default
>> jspwiki.properties and not the jspwiki-custom.properties as it should.
>>  Hmm, more hacking may be necessary on our side--at least it should be
>> renamed to jspwiki.custom.cascade.x...
>>
>> Glen
>>
>> On 08/18/2013 05:32 PM, Adrien Beau wrote:
>>
>>> On Fri, Aug 16, 2013 at 12:19 PM, Harry Metske <ha...@gmail.com>
>>> wrote:
>>>
>>>> indeed , tomcat has no option to have webapp specific classloading and
>>>> therefore it is war surgery.
>>>> Other appservers might have, for example WebSphere has so called shared
>>>> libraries that can be assigned to one or more applications, so you can
>>>> have
>>>> different configurations for multiple wiki's without war-surgery.
>>>>
>>> You can have webapp specific system properties in Tomcat. Currently, I
>>> have 5 separate JSPWiki instances in the same Tomcat instance, all
>>> running from the same JSPWiki WAR, but each with a specific property
>>> file.
>>>
>>> I'm still using 2.10.0-svn-10, so this is from before the recent
>>> property changes. I'm using Tomcat 7.0.42, but I believe this was
>>> already working in Tomcat 6.
>>>
>>> In the Tomcat conf/Catalina/localhost directory, I have five "Context"
>>> XML files (one per JSPWiki instance). They all follow the same simple
>>> pattern. For example, here's my Perso.xml context file, which creates
>>> a "Perso" JSPWiki instance (accessible from
>>> http://<tomcat:port>/Perso/):
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <Context docBase="F:/app/jspwiki-2.10.**0-svn-10" swallowOutput="true">
>>>      <Parameter override="false"
>>>          name="jspwiki.propertyfile"
>>> value="F:/app/jspwiki-2.10.0-**svn-10/WEB-INF/jspwiki-common.**
>>> properties"/>
>>>      <Parameter override="false"
>>>          name="jspwiki.propertyfile.**cascade.1"
>>>          value="F:/wiki/perso/conf/**override.properties"/>
>>> </Context>
>>>
>>> docBase is where I extracted the JSPWiki WAR file
>>> (F:/app/jspwiki-2.10.0-svn-10 in my case).
>>>
>>> Inside the WEB-INF directory of the WAR file, I put a
>>> jspwiki-common.properties file that contains all settings common to
>>> all my JSPWiki instances. This is the jspwiki.propertyfile parameter,
>>> which is the same in all contexts.
>>>
>>> Inside a directory dedicated to my Perso JSPWiki instance, I put a
>>> override.properties file that contains the settings specific to the
>>> Perso JSPWiki instance. This is the jspwiki.propertyfile.cascade.1
>>> parameter, which is different in every context.
>>>
>>> Once defined in a context file, despite originating from the same WAR,
>>> the web apps behave fully independently from each other. They have
>>> their own work directories, their own sessions, etc.
>>>
>>> Regards,
>>>
>>> Adrien
>>>
>>
>>
>

Re: Switch to Apache Roller-style properties configuration?

Posted by Glen Mazza <gl...@gmail.com>.
Actually, I'd give this a day or two until I confirm the cascade stuff 
still works on trunk.  Team: mind if I switch the property name on trunk 
from jspwiki.propertyfile.cascade.x to jspwiki.custom.cascade.x to 
stress that you're cascading on top of the jspwiki-custom.properties 
file and not jspwiki.properties (actually, still doing the latter if you 
haven't defined jspwiki-custom.properties of course but it's expected 
for jspwiki-custom.properties to be your first level of customization 
and the cascade stuff is only if that's not sufficient.)  I think 
keeping both properties will do more harm than good (too many ways to 
declare the same thing adds too much confusion).

Glen

On 08/18/2013 05:50 PM, Glen Mazza wrote:
> Thanks for the explanation.  It would be good to check if the latest 
> changes will still work with your setup.
>
> In your case, you'd remove the jspwiki.propertyfile parameter element 
> from each of your five config files and rename the 
> jspwiki-common.properties to jspwiki-custom.properties, and just place 
> the file in $CATALINA_HOME/lib. JSPWiki should automatically detect 
> it.  (You're also welcome to remove every element from the new 
> jspwiki-custom.properties that has the same value in the default 
> jspwiki.properties distributed in the WAR, nicely shrinking it.)  I'm 
> hoping though the "jspwiki.propertyfile.cascade.x"... configuration 
> will still work but I fear will it will modify the default 
> jspwiki.properties and not the jspwiki-custom.properties as it 
> should.  Hmm, more hacking may be necessary on our side--at least it 
> should be renamed to jspwiki.custom.cascade.x...
>
> Glen
>
> On 08/18/2013 05:32 PM, Adrien Beau wrote:
>> On Fri, Aug 16, 2013 at 12:19 PM, Harry Metske 
>> <ha...@gmail.com> wrote:
>>> indeed , tomcat has no option to have webapp specific classloading and
>>> therefore it is war surgery.
>>> Other appservers might have, for example WebSphere has so called shared
>>> libraries that can be assigned to one or more applications, so you 
>>> can have
>>> different configurations for multiple wiki's without war-surgery.
>> You can have webapp specific system properties in Tomcat. Currently, I
>> have 5 separate JSPWiki instances in the same Tomcat instance, all
>> running from the same JSPWiki WAR, but each with a specific property
>> file.
>>
>> I'm still using 2.10.0-svn-10, so this is from before the recent
>> property changes. I'm using Tomcat 7.0.42, but I believe this was
>> already working in Tomcat 6.
>>
>> In the Tomcat conf/Catalina/localhost directory, I have five "Context"
>> XML files (one per JSPWiki instance). They all follow the same simple
>> pattern. For example, here's my Perso.xml context file, which creates
>> a "Perso" JSPWiki instance (accessible from
>> http://<tomcat:port>/Perso/):
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <Context docBase="F:/app/jspwiki-2.10.0-svn-10" swallowOutput="true">
>>      <Parameter override="false"
>>          name="jspwiki.propertyfile"
>> value="F:/app/jspwiki-2.10.0-svn-10/WEB-INF/jspwiki-common.properties"/>
>>      <Parameter override="false"
>>          name="jspwiki.propertyfile.cascade.1"
>>          value="F:/wiki/perso/conf/override.properties"/>
>> </Context>
>>
>> docBase is where I extracted the JSPWiki WAR file
>> (F:/app/jspwiki-2.10.0-svn-10 in my case).
>>
>> Inside the WEB-INF directory of the WAR file, I put a
>> jspwiki-common.properties file that contains all settings common to
>> all my JSPWiki instances. This is the jspwiki.propertyfile parameter,
>> which is the same in all contexts.
>>
>> Inside a directory dedicated to my Perso JSPWiki instance, I put a
>> override.properties file that contains the settings specific to the
>> Perso JSPWiki instance. This is the jspwiki.propertyfile.cascade.1
>> parameter, which is different in every context.
>>
>> Once defined in a context file, despite originating from the same WAR,
>> the web apps behave fully independently from each other. They have
>> their own work directories, their own sessions, etc.
>>
>> Regards,
>>
>> Adrien
>


Re: Switch to Apache Roller-style properties configuration?

Posted by Glen Mazza <gl...@gmail.com>.
Thanks for the explanation.  It would be good to check if the latest 
changes will still work with your setup.

In your case, you'd remove the jspwiki.propertyfile parameter element 
from each of your five config files and rename the 
jspwiki-common.properties to jspwiki-custom.properties, and just place 
the file in $CATALINA_HOME/lib. JSPWiki should automatically detect it.  
(You're also welcome to remove every element from the new 
jspwiki-custom.properties that has the same value in the default 
jspwiki.properties distributed in the WAR, nicely shrinking it.)  I'm 
hoping though the "jspwiki.propertyfile.cascade.x"... configuration will 
still work but I fear will it will modify the default jspwiki.properties 
and not the jspwiki-custom.properties as it should.  Hmm, more hacking 
may be necessary on our side--at least it should be renamed to 
jspwiki.custom.cascade.x...

Glen

On 08/18/2013 05:32 PM, Adrien Beau wrote:
> On Fri, Aug 16, 2013 at 12:19 PM, Harry Metske <ha...@gmail.com> wrote:
>> indeed , tomcat has no option to have webapp specific classloading and
>> therefore it is war surgery.
>> Other appservers might have, for example WebSphere has so called shared
>> libraries that can be assigned to one or more applications, so you can have
>> different configurations for multiple wiki's without war-surgery.
> You can have webapp specific system properties in Tomcat. Currently, I
> have 5 separate JSPWiki instances in the same Tomcat instance, all
> running from the same JSPWiki WAR, but each with a specific property
> file.
>
> I'm still using 2.10.0-svn-10, so this is from before the recent
> property changes. I'm using Tomcat 7.0.42, but I believe this was
> already working in Tomcat 6.
>
> In the Tomcat conf/Catalina/localhost directory, I have five "Context"
> XML files (one per JSPWiki instance). They all follow the same simple
> pattern. For example, here's my Perso.xml context file, which creates
> a "Perso" JSPWiki instance (accessible from
> http://<tomcat:port>/Perso/):
>
> <?xml version="1.0" encoding="UTF-8"?>
> <Context docBase="F:/app/jspwiki-2.10.0-svn-10" swallowOutput="true">
>      <Parameter override="false"
>          name="jspwiki.propertyfile"
>          value="F:/app/jspwiki-2.10.0-svn-10/WEB-INF/jspwiki-common.properties"/>
>      <Parameter override="false"
>          name="jspwiki.propertyfile.cascade.1"
>          value="F:/wiki/perso/conf/override.properties"/>
> </Context>
>
> docBase is where I extracted the JSPWiki WAR file
> (F:/app/jspwiki-2.10.0-svn-10 in my case).
>
> Inside the WEB-INF directory of the WAR file, I put a
> jspwiki-common.properties file that contains all settings common to
> all my JSPWiki instances. This is the jspwiki.propertyfile parameter,
> which is the same in all contexts.
>
> Inside a directory dedicated to my Perso JSPWiki instance, I put a
> override.properties file that contains the settings specific to the
> Perso JSPWiki instance. This is the jspwiki.propertyfile.cascade.1
> parameter, which is different in every context.
>
> Once defined in a context file, despite originating from the same WAR,
> the web apps behave fully independently from each other. They have
> their own work directories, their own sessions, etc.
>
> Regards,
>
> Adrien


Re: Switch to Apache Roller-style properties configuration?

Posted by Adrien Beau <ad...@gmail.com>.
On Fri, Aug 16, 2013 at 12:19 PM, Harry Metske <ha...@gmail.com> wrote:
>
> indeed , tomcat has no option to have webapp specific classloading and
> therefore it is war surgery.
> Other appservers might have, for example WebSphere has so called shared
> libraries that can be assigned to one or more applications, so you can have
> different configurations for multiple wiki's without war-surgery.

You can have webapp specific system properties in Tomcat. Currently, I
have 5 separate JSPWiki instances in the same Tomcat instance, all
running from the same JSPWiki WAR, but each with a specific property
file.

I'm still using 2.10.0-svn-10, so this is from before the recent
property changes. I'm using Tomcat 7.0.42, but I believe this was
already working in Tomcat 6.

In the Tomcat conf/Catalina/localhost directory, I have five "Context"
XML files (one per JSPWiki instance). They all follow the same simple
pattern. For example, here's my Perso.xml context file, which creates
a "Perso" JSPWiki instance (accessible from
http://<tomcat:port>/Perso/):

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="F:/app/jspwiki-2.10.0-svn-10" swallowOutput="true">
    <Parameter override="false"
        name="jspwiki.propertyfile"
        value="F:/app/jspwiki-2.10.0-svn-10/WEB-INF/jspwiki-common.properties"/>
    <Parameter override="false"
        name="jspwiki.propertyfile.cascade.1"
        value="F:/wiki/perso/conf/override.properties"/>
</Context>

docBase is where I extracted the JSPWiki WAR file
(F:/app/jspwiki-2.10.0-svn-10 in my case).

Inside the WEB-INF directory of the WAR file, I put a
jspwiki-common.properties file that contains all settings common to
all my JSPWiki instances. This is the jspwiki.propertyfile parameter,
which is the same in all contexts.

Inside a directory dedicated to my Perso JSPWiki instance, I put a
override.properties file that contains the settings specific to the
Perso JSPWiki instance. This is the jspwiki.propertyfile.cascade.1
parameter, which is different in every context.

Once defined in a context file, despite originating from the same WAR,
the web apps behave fully independently from each other. They have
their own work directories, their own sessions, etc.

Regards,

Adrien

Re: Switch to Apache Roller-style properties configuration?

Posted by Harry Metske <ha...@gmail.com>.
indeed , tomcat has no option to have webapp specific classloading and
therefore it is war surgery.
Other appservers might have, for example WebSphere has so called shared
libraries that can be assigned to one or more applications, so you can have
different configurations for multiple wiki's without war-surgery.

regards,
Harry



On 16 August 2013 06:31, Glen Mazza <gl...@gmail.com> wrote:

> OK, I didn't change that section of the code, it was reading from a file
> location before, and it's reading from a file location after:
> http://svn.apache.org/viewvc/**jspwiki/trunk/jspwiki-war/src/**
> main/java/org/apache/wiki/**PropertyReader.java?r1=**
> 1505241&r2=1512071&diff_**format=h<http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java?r1=1505241&r2=1512071&diff_format=h>
>
> For Roller, the chances of having multiple Roller instances on one Tomcat
> is slim-to-none (you normally load it once and create 500 blogs, not two
> instances of 250 blogs apiece), but I could see how multiple JSPWikis on
> the same Tomcat could occur.  Still, moving from file to resource for the
> below might not help much, because jspwiki.custom.config is a system
> property and hence would hold, if I'm not mistaken, for the JVM running
> Tomcat.  I.e., you can't run 4 JSPWiki instances with a different system
> property for each as one would overwrite all the others (correct me if I'm
> wrong here).  Rather, in that case, you'll need to place your
> jspwiki-custom.properties back into the WEB-INF/classes folder of each WAR
> running the JSPWiki instance.  If you have 4 JSPWiki instances, each with
> their own jspwiki-custom.properties within the WAR, that should work fine.
>  Less ideal, but no worse than what it was a week ago when you *always* had
> to do WAR surgery, now it just has to be done if you have multiple JSPWiki
> WARs on the same Tomcat instance.
>
> So as I see it right now, switching from file to classpath isn't going to
> help with multiple instances on the same Tomcat, while stripping away the
> ability to do a quick mvn tomcat7:run-war -Djspwiki.custom.config=**myfile.properties,
> with the latter file simply in the working directory where you ran the
> command without a need for it to be on the classpath.
>
> Glen
>
>
> On 08/15/2013 12:53 AM, Harry Metske wrote:
>
>> Glen,
>>
>> I know how the PropertyReader works right now.
>> I first started testing the stuff without heaving read the code at all.
>> After not getting it to work I checked the code and discovered this
>> behavior.
>> I found it odd that the default custom property file is loaded via
>> classloading, and that if you specify another name it is loaded via direct
>> file reading.
>> Loading propfiles from the classpath requires write access to a location
>> that's on the classpath, that is positive (more secure) negative (less
>> flexible).
>> When running multiple wiki's in the same AppServer I find classloading
>> configuration more convenient than specifying file paths.
>> It simply depends on the usage scenario and also is a matter of personal
>> preference.
>>
>> kind regards,
>> Harry
>>
>>
>>
>> On 14 August 2013 22:06, Glen Mazza <gl...@gmail.com> wrote:
>>
>>  I don't think so, you're reading too far down in the code, *just* above
>>> that segment is where the default "jspwiki-custom.properties" file is
>>> read,
>>> and there we indeed use config_class.****getResourceAsStream (just like
>>>
>>> Roller).
>>>
>>> Where you're reading, is in the case when someone explicitly configures
>>> the "jspwiki.custom.config" system property (like here for Roller:
>>> http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>> revision=1513320&view=markup#****l448<http://svn.apache.org/**
>>> viewvc/roller/trunk/app/pom.**xml?revision=1513320&view=**markup#l448<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1513320&view=markup#l448>
>>> >)
>>>
>>> to use another file name besides "jspwiki-custom.properties".  In that
>>> case, there's zero guarantee that that file is part of the classpath,
>>> indeed the file is anywhere the user specifies, so java.io.File is more
>>> appropriate then.
>>>
>>> Glen
>>>
>>>
>>> On 08/14/2013 03:51 PM, Harry Metske wrote:
>>>
>>>  Glenn,
>>>>
>>>> currently the custom property file is loaded as a java.io.File. I had
>>>> expected (and preferred) classloading of the file, like the below patch.
>>>> WDYT ?
>>>>
>>>> regards,
>>>> Harry
>>>>
>>>>
>>>> Index: jspwiki-war/src/main/java/org/****apache/wiki/PropertyReader.***
>>>> *java
>>>> IDEA additional info:
>>>> Subsystem: com.intellij.openapi.diff.****impl.patch.CharsetEP
>>>> <+>UTF-8
>>>> ==============================****============================**
>>>> ==**=======
>>>> --- jspwiki-war/src/main/java/org/****apache/wiki/PropertyReader.***
>>>> *java
>>>> (revision
>>>> 1513997)
>>>> +++ jspwiki-war/src/main/java/org/****apache/wiki/PropertyReader.***
>>>> *java
>>>>
>>>> (revision
>>>> )
>>>> @@ -124,7 +124,7 @@
>>>>                else
>>>>                {
>>>>                    context.log(PARAM_PROPERTYFILE + " defined, using " +
>>>> propertyFile + " as the custom properties file.");
>>>> -                propertyStream = new FileInputStream( new
>>>> File(propertyFile) );
>>>> +                propertyStream = config_class.****
>>>> getResourceAsStream("/"
>>>>
>>>> +
>>>> propertyFile );
>>>>                }
>>>>
>>>>                Properties props = getDefaultProperties();
>>>>
>>>>
>>>> On 9 August 2013 09:50, Harry Metske <ha...@gmail.com> wrote:
>>>>
>>>>   Glen,
>>>>
>>>>> thanks, looks good.
>>>>> I will do some testing too if time permits the coming week.
>>>>>
>>>>> regards,
>>>>> Harry
>>>>>
>>>>>
>>>>>
>>>>> On 9 August 2013 00:27, Glen Mazza <gl...@gmail.com> wrote:
>>>>>
>>>>>   Hi All,
>>>>>
>>>>>> OK, converted.  Main issue was that I had to move jspwiki.properties
>>>>>> out
>>>>>> of the WEB-INF folder and into to src/main/resources/ini (where the
>>>>>> default_jspwiki.properties, now incorporated into jspwiki.properties,
>>>>>> used
>>>>>> to be.) I believe it was because certain bootstrapping classes don't
>>>>>> have
>>>>>> access to the WEB-INF folder.  (I didn't research the matter much,
>>>>>> seeing
>>>>>> how Roller also places it in their roller.jar and not the WEB-INF
>>>>>> folder of
>>>>>> the roller WAR.)
>>>>>>
>>>>>> Right now, in my tomcat/lib folder I have this tiny
>>>>>> jspwiki-custom.properties file:
>>>>>>
>>>>>> jspwiki.applicationName = SampleApp
>>>>>> jspwiki.xmlGroupDatabaseFile = /home/gmazza/groupdatabase.xml
>>>>>> jspwiki.xmlUserDatabaseFile = /home/gmazza/userdatabase.xml
>>>>>> log4j.appender.FileLog.File = /home/gmazza/jspwikilog.log
>>>>>>
>>>>>> It seems to be working fine.  I can keep changing the WAR, the values
>>>>>> above override what's in jspwiki.properties and my user accounts don't
>>>>>> need
>>>>>> to be recreated anymore, as userdatabase.xml is read from the above
>>>>>> file
>>>>>> and no longer from within the WAR.
>>>>>>
>>>>>> The Selenium tests will need conversion, I'll look at that next, but
>>>>>> even
>>>>>> before the change only about half the tests were working.  Let me know
>>>>>> of
>>>>>> any hiccups that occur.
>>>>>>
>>>>>> Regards,
>>>>>> Glen
>>>>>>
>>>>>>
>>>>>> On 08/08/2013 11:10 AM, Juan Pablo Santos Rodríguez wrote:
>>>>>>
>>>>>>   Hi,
>>>>>>
>>>>>>> I was thinking in existing users who might be using this feature, but
>>>>>>> just
>>>>>>> realised that simlpy using -Djspwiki.custom.config for the same file
>>>>>>> would
>>>>>>> be equally valid, so I'm +1 on your approach
>>>>>>>
>>>>>>>
>>>>>>> br,
>>>>>>> juan pablo
>>>>>>>
>>>>>>> On Thu, Aug 8, 2013 at 2:43 PM, Glen Mazza <gl...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>    Umm, I really would *not* want to go that route, there's no
>>>>>>> practical
>>>>>>>
>>>>>>>  benefit to providing both options (never has been on Roller for
>>>>>>>> over a
>>>>>>>> decade now), it would raise unnecessary confusion among users, and
>>>>>>>> it
>>>>>>>> would
>>>>>>>> be cumbersome to code.
>>>>>>>>
>>>>>>>> With my proposed change, you are never going to alter the
>>>>>>>> jspwiki.properties file again (unless you manually go in and tweak
>>>>>>>> it,
>>>>>>>> which you should never need to do anyway).  You can only override it
>>>>>>>> with
>>>>>>>> another file, with just those handful of values you wish to
>>>>>>>> override.
>>>>>>>>    If
>>>>>>>> you don't override it, then jspwiki.properties in the WAR defaults.
>>>>>>>>
>>>>>>>> What I'm proposing is not just how Roller does things but precisely
>>>>>>>> how
>>>>>>>> Apache Karaf does too, you alter a custom file that overrides the
>>>>>>>> default,
>>>>>>>> and they leave a blunt comment in the default file to leave it alone
>>>>>>>> and
>>>>>>>> alter the custom file instead.
>>>>>>>>
>>>>>>>> Glen
>>>>>>>>
>>>>>>>>
>>>>>>>> On 08/08/2013 08:32 AM, Juan Pablo Santos Rodríguez wrote:
>>>>>>>>
>>>>>>>>    Hi,
>>>>>>>>
>>>>>>>>  one quick note, if I recall correctly, "-Djspwiki.propertyfile" is
>>>>>>>>> used to
>>>>>>>>> load the main jspwiki.properties from outside the war, so it should
>>>>>>>>> be
>>>>>>>>> able
>>>>>>>>> to coexist with "-Djspwiki.custom.config", something like:
>>>>>>>>>
>>>>>>>>> - jspwiki.properties, loaded first, from war (unless
>>>>>>>>> -Djspwiki.propertyfile
>>>>>>>>> is given)
>>>>>>>>> - jspwiki-custom.properties, loaded afterwards, from classpath
>>>>>>>>> (unless
>>>>>>>>> -Djspwiki.custom.config is given)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> br,
>>>>>>>>> juan pablo
>>>>>>>>>
>>>>>>>>> On Thu, Aug 8, 2013 at 2:14 PM, Glen Mazza <gl...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>     Yes, I like -Djspwiki.custom.config too.  I'll see what I can
>>>>>>>>> do
>>>>>>>>> for
>>>>>>>>>
>>>>>>>>>   logging.
>>>>>>>>>
>>>>>>>>>> Glen
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 08/08/2013 08:01 AM, Harry Metske wrote:
>>>>>>>>>>
>>>>>>>>>>     Changing the propname to something else would not be a
>>>>>>>>>> problem,
>>>>>>>>>>
>>>>>>>>>>        "-Djspwiki.custom.config" is fine.
>>>>>>>>>>
>>>>>>>>>>> What I meant is that it should be very clear _how_ these things
>>>>>>>>>>> play
>>>>>>>>>>> together, both in documentation and logging.
>>>>>>>>>>>
>>>>>>>>>>> kind regards,
>>>>>>>>>>> Harry
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>      Yes, [#1] would be the [3] I mentioned below.  But would it
>>>>>>>>>>> be
>>>>>>>>>>> a
>>>>>>>>>>> problem
>>>>>>>>>>>
>>>>>>>>>>>    if I renamed our "-Djspwiki.propertyfile" setting to
>>>>>>>>>>>
>>>>>>>>>>>  "-Djspwiki.custom.**
>>>>>>>>>>>> **propertyfile"
>>>>>>>>>>>> (or "-Djspwiki.custom.config" similar to Roller) as it's
>>>>>>>>>>>> technically no
>>>>>>>>>>>> longer a replacement of the jspwiki.properties file (which will
>>>>>>>>>>>> always
>>>>>>>>>>>> be
>>>>>>>>>>>> in the WAR) but an overlay of it (same thing, so long as your
>>>>>>>>>>>> overlay
>>>>>>>>>>>> has a
>>>>>>>>>>>> value for every property in the jspwiki.properties file, which
>>>>>>>>>>>> current
>>>>>>>>>>>> -Djspwiki.propertyfiles have to do anyway as they fully replace
>>>>>>>>>>>> that
>>>>>>>>>>>> file.)
>>>>>>>>>>>>       I don't see this as a backwards compatibility issue as
>>>>>>>>>>>> it's
>>>>>>>>>>>> just a
>>>>>>>>>>>> command-line setting.
>>>>>>>>>>>>
>>>>>>>>>>>> Glen
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>      from an administration perspective (part of my daily live)
>>>>>>>>>>>> I
>>>>>>>>>>>> consider
>>>>>>>>>>>>
>>>>>>>>>>>>    having configuration separate from binaries a must-have.
>>>>>>>>>>>>
>>>>>>>>>>>>  So +1 on this, it should get easier to deploy (the 100% same)
>>>>>>>>>>>>> JSPWiki.war
>>>>>>>>>>>>> everywhere and having a per-environment small "override"
>>>>>>>>>>>>> property
>>>>>>>>>>>>> file
>>>>>>>>>>>>> that
>>>>>>>>>>>>> adapts the JSPWiki instance to the environment.
>>>>>>>>>>>>> I would like to see proper logging on property handling so we
>>>>>>>>>>>>> can
>>>>>>>>>>>>> see
>>>>>>>>>>>>> which
>>>>>>>>>>>>> property gets loaded from where, and what the final property
>>>>>>>>>>>>> values
>>>>>>>>>>>>> are
>>>>>>>>>>>>> going to be active.
>>>>>>>>>>>>> (and, similar to what Ichiro already mentioned, it should play
>>>>>>>>>>>>> nice
>>>>>>>>>>>>> with
>>>>>>>>>>>>> JSPWiki System property mechanism, see [#1].
>>>>>>>>>>>>>
>>>>>>>>>>>>> [#1] https://issues.apache.org/******
>>>>>>>>>>>>> ******jira/browse/JSPWIKI-568<https://issues.apache.org/**********jira/browse/JSPWIKI-568>
>>>>>>>>>>>>> <**https://issues.apache.org/**********jira/browse/JSPWIKI-568<https://issues.apache.org/********jira/browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <ht**tps://issues.apache.org/**********jira/browse/JSPWIKI-568<http://issues.apache.org/********jira/browse/JSPWIKI-568>
>>>>>>>>>>>>> **<https://issues.apache.org/********jira/browse/JSPWIKI-568<https://issues.apache.org/******jira/browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <http**s://issues.apache.org/**********jira/browse/JSPWIKI-568<http://issues.apache.org/********jira/browse/JSPWIKI-568>
>>>>>>>>>>>>> **<http://issues.apache.org/********jira/browse/JSPWIKI-568<http://issues.apache.org/******jira/browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <h**ttps://issues.apache.org/********jira/browse/JSPWIKI-568<http://issues.apache.org/******jira/browse/JSPWIKI-568>
>>>>>>>>>>>>> <h**ttps://issues.apache.org/******jira/browse/JSPWIKI-568<https://issues.apache.org/****jira/browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <https:**//issues.apache.org/********jira/**browse/JSPWIKI-568<http://issues.apache.org/******jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> **<http://issues.apache.org/******jira/**browse/JSPWIKI-568<http://issues.apache.org/****jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <h**ttp://issues.apache.org/******jira/**browse/JSPWIKI-568<http://issues.apache.org/****jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> <ht**tp://issues.apache.org/**jira/****browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <htt**ps://issues.apache.org/******jira/**browse/JSPWIKI-568<http://issues.apache.org/****jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> <h**ttp://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <htt**ps://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> <htt**ps://issues.apache.org/**jira/**browse/JSPWIKI-568<https://issues.apache.org/**jira/browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <https:**//issues.apache.org/********jira/**browse/JSPWIKI-568<http://issues.apache.org/******jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> **<http://issues.apache.org/******jira/**browse/JSPWIKI-568<http://issues.apache.org/****jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <h**ttp://issues.apache.org/******jira/**browse/JSPWIKI-568<http://issues.apache.org/****jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> <ht**tp://issues.apache.org/**jira/****browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <htt**p://issues.apache.org/****jira/****browse/JSPWIKI-568<http://issues.apache.org/**jira/****browse/JSPWIKI-568>
>>>>>>>>>>>>> <ht**tp://issues.apache.org/jira/******browse/JSPWIKI-568<http://issues.apache.org/jira/****browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <ht**tp://issues.apache.org/**jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/****browse/JSPWIKI-568>
>>>>>>>>>>>>> <ht**tp://issues.apache.org/jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <http**s://issues.apache.org/******jira/**browse/JSPWIKI-568<http://issues.apache.org/****jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> <h**ttp://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>>
>>>>>>>>>>>>> <htt**p://issues.apache.org/**jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/****browse/JSPWIKI-568>
>>>>>>>>>>>>> <ht**tp://issues.apache.org/jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <http**s://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> <htt**p://issues.apache.org/jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <http**s://issues.apache.org/**jira/**browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>>>>> <http**s://issues.apache.org/jira/**browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> kind regards,
>>>>>>>>>>>>> Harry
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>       Hi Team,
>>>>>>>>>>>>>
>>>>>>>>>>>>>     Apache Roller maintains two configuration files, a
>>>>>>>>>>>>>
>>>>>>>>>>>>>   roller.properties[1]
>>>>>>>>>>>>>
>>>>>>>>>>>>>> which sits within the war, filled with defaults and never
>>>>>>>>>>>>>> needs
>>>>>>>>>>>>>> modification (although a user can alter it if he wishes, it
>>>>>>>>>>>>>> will
>>>>>>>>>>>>>> work),
>>>>>>>>>>>>>> and
>>>>>>>>>>>>>> a roller-custom.properties file[2] which is placed in the
>>>>>>>>>>>>>> classpath
>>>>>>>>>>>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for
>>>>>>>>>>>>>> JBoss
>>>>>>>>>>>>>> or
>>>>>>>>>>>>>> GlassFish.)  For any value you put in
>>>>>>>>>>>>>> roller-custom.properties,
>>>>>>>>>>>>>> it
>>>>>>>>>>>>>> will
>>>>>>>>>>>>>> overwrite what is in roller.properties in the WAR.  So you
>>>>>>>>>>>>>> only
>>>>>>>>>>>>>> need
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> values in the custom file that you're actually overriding,
>>>>>>>>>>>>>> making
>>>>>>>>>>>>>> it
>>>>>>>>>>>>>> very
>>>>>>>>>>>>>> short and simple.  And if you don't use a
>>>>>>>>>>>>>> roller-custom.properties,
>>>>>>>>>>>>>> all
>>>>>>>>>>>>>> of
>>>>>>>>>>>>>> the defaults in the WAR will prevail.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> You can keep deploying new versions of Roller.war to your
>>>>>>>>>>>>>> servlet
>>>>>>>>>>>>>> container while never needing to re-configure either
>>>>>>>>>>>>>> roller.properties
>>>>>>>>>>>>>> or
>>>>>>>>>>>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>>>>>>>>>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>>>>>>>>>>>> automatically
>>>>>>>>>>>>>> is used--this is very convenient during development when the
>>>>>>>>>>>>>> WARs
>>>>>>>>>>>>>> frequently get updated.  Same with JUnit and Selenium testing,
>>>>>>>>>>>>>> we
>>>>>>>>>>>>>> don't
>>>>>>>>>>>>>> alter the roller.properties but just place the
>>>>>>>>>>>>>> roller-custom.properties[2]
>>>>>>>>>>>>>> in the test classpath under src/test/resources (if you have
>>>>>>>>>>>>>> multiple
>>>>>>>>>>>>>> config
>>>>>>>>>>>>>> files, you can change the custom file name via setting a
>>>>>>>>>>>>>> system
>>>>>>>>>>>>>> property[3]).  All this is handled by the WebloggerConfig[4]
>>>>>>>>>>>>>> class,
>>>>>>>>>>>>>> which
>>>>>>>>>>>>>> first reads in roller.properties and the overwrites any values
>>>>>>>>>>>>>> from
>>>>>>>>>>>>>> roller-custom.properties.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> [1] http://svn.apache.org/viewvc/*******<http://svn.apache.org/viewvc/*****>
>>>>>>>>>>>>>> <http://svn.apache.org/**viewvc/***<http://svn.apache.org/viewvc/***>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> *******roller/trunk/app/src/******<http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/* <http://svn.apache.org/viewvc/*>
>>>>>>>>>>>>>> *********roller/trunk/app/src/******<http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/********roller/trunk/**app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> main/****<http://svn.apache.******org/viewvc/******roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> app/src/main/****<http://svn.****apache.org/viewvc/********
>>>>>>>>>>>>>> roller/trunk/app/src/main/******<
>>>>>>>>>>>>>> http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>>>>>>>>> main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/****roller/trunk/**app/
>>>>>>>>>>>>>> ******
>>>>>>>>>>>>>> src/main/**<http://svn.apache.******org/viewvc/****roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> app/src/main/**<http://svn.**a**
>>>>>>>>>>>>>> pache.org/viewvc/****roller/**<http://apache.org/viewvc/****roller/**>
>>>>>>>>>>>>>> trunk/app/src/main/**<http://**svn.apache.org/viewvc/******
>>>>>>>>>>>>>> roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.org/**********viewvc/**roller/trunk/app/**
>>>>>>>>>>>>>> src/**<http://svn.apache.org/********viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>>> **<http://svn.apache.org/********viewvc/**roller/trunk/app/**
>>>>>>>>>>>>>> src/**<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> ****main/**<http://svn.apache.****org/****viewvc/**roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> *app/src/****main/**<http://**svn.apache.org/****viewvc/****
>>>>>>>>>>>>>> roller/trunk/app/src/****main/****<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/**roller/trunk/**
>>>>>>>>>>>>>> app/src/**main/**<http://svn.****
>>>>>>>>>>>>>> apache.org/**viewvc/**roller/****<http://apache.org/**viewvc/**roller/**>
>>>>>>>>>>>>>> trunk/app/src/**main/**<http:/**/svn.apache.org/**viewvc/****
>>>>>>>>>>>>>> roller/trunk/app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/**roller/trunk/app/****
>>>>>>>>>>>>>> src/main/**<http://svn.apache.**
>>>>>>>>>>>>>> ****org/viewvc/**roller/trunk/****
>>>>>>>>>>>>>> app/**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/**roller/trunk/*
>>>>>>>>>>>>>> *app/*
>>>>>>>>>>>>>> *src/main/**<http://svn.**apache.org/viewvc/**roller/**
>>>>>>>>>>>>>> trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> resources/org/apache/roller/**************weblogger/config/**
>>>>>>>>>>>>>> roller.**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> properties?view=markup<http://************svn.apache.org/**
>>>>>>>>>>>>>> viewvc/* <http://svn.apache.org/viewvc/*>
>>>>>>>>>>>>>> ***** <http://svn.apache.org/viewvc/******<http://svn.apache.org/viewvc/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> ** <http://svn.apache.org/viewvc/********<http://svn.apache.org/viewvc/******>
>>>>>>>>>>>>>> <http://svn.apache.org/**viewvc/****<http://svn.apache.org/viewvc/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/********roller/**<http://svn.apache.org/viewvc/******roller/**>
>>>>>>>>>>>>>> <http://svn.**apache.org/viewvc/****roller/****<http://svn.apache.org/viewvc/****roller/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.**apache.org/**viewvc/**roller/**<http://apache.org/viewvc/**roller/**>
>>>>>>>>>>>>>> <http://svn.**apache.org/viewvc/**roller/**<http://svn.apache.org/viewvc/**roller/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  http://svn.apache.**org/******viewvc/roller/**<http://svn.
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> apache.org/viewvc/roller/**<**ht**tp://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/**roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> trunk/app/src/main/resources/************org/apache/roller/**
>>>>>>>>>>>>>> weblogger/****
>>>>>>>>>>>>>> config/roller.properties?view=************markup<http://svn.
>>>>>>>>>>>>>> ******
>>>>>>>>>>>>>> apache.<http://svn.apache.>
>>>>>>>>>>>>>> ****
>>>>>>>>>>>>>> org/viewvc/roller/trunk/app/****
>>>>>>>>>>>>>> ******src/main/resources/org/****
>>>>>>>>>>>>>> apache/****
>>>>>>>>>>>>>> roller/weblogger/config/**********roller.properties?view=**
>>>>>>>>>>>>>> markup<*
>>>>>>>>>>>>>> *****
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>>>>>>>>> main/**<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> **<http://svn.apache.org/**viewvc/****roller/trunk/app/**
>>>>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.org/****viewvc/**roller/trunk/app/src/****<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> main/**<http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/**roller/trunk/app/src/**main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> resources/org/apache/roller/****
>>>>>>>>>>>>>> ****weblogger/config/roller.**
>>>>>>>>>>>>>> properties?view=markup<http://******svn.apache.org/viewvc/**
>>>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/**roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> trunk/app/src/main/resources/******org/apache/roller/**
>>>>>>>>>>>>>> weblogger/**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> config/roller.properties?view=******markup<http://svn.apache.
>>>>>>>>>>>>>> ****
>>>>>>>>>>>>>> org/viewvc/roller/trunk/app/****
>>>>>>>>>>>>>> src/main/resources/org/apache/****
>>>>>>>>>>>>>> roller/weblogger/config/****roller.properties?view=markup<**
>>>>>>>>>>>>>> http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>>>>>>>>>>>>>> resources/org/apache/roller/**weblogger/config/roller.**
>>>>>>>>>>>>>> properties?view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>     http://svn.apache.org/viewvc/*****<http://svn.apache.org/viewvc/***>
>>>>>>>>>>>>>>> *********roller/trunk/app/src/******<http://svn.apache.org/*
>>>>>>>>>>>>>>> *viewvc/**********roller/trunk/**app/src/**<http://svn.apache.org/viewvc/**********roller/trunk/app/src/**>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> <http://svn.apache.org/****viewvc/********roller/trunk/**<http://svn.apache.org/**viewvc/********roller/trunk/**>
>>>>>>>>>>>>>>> app/src/**<http://svn.apache.**org/viewvc/********roller/**
>>>>>>>>>>>>>>> trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>>   main/****<http://svn.apache.******
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> org/viewvc/******roller/trunk/******
>>>>>>>>>>>>>> app/src/main/****<http://svn.****apache.org/viewvc/********
>>>>>>>>>>>>>> roller/trunk/app/src/main/******<
>>>>>>>>>>>>>> http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>>>>>>>>> main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/****roller/trunk/**app/
>>>>>>>>>>>>>> ******
>>>>>>>>>>>>>> src/main/**<http://svn.apache.******org/viewvc/****roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> app/src/main/**<http://svn.**a**
>>>>>>>>>>>>>> pache.org/viewvc/****roller/**<http://apache.org/viewvc/****roller/**>
>>>>>>>>>>>>>> trunk/app/src/main/**<http://**svn.apache.org/viewvc/******
>>>>>>>>>>>>>> roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.org/**********viewvc/**roller/trunk/app/**
>>>>>>>>>>>>>> src/**<http://svn.apache.org/********viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>>> **<http://svn.apache.org/********viewvc/**roller/trunk/app/**
>>>>>>>>>>>>>> src/**<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> ****main/**<http://svn.apache.****org/****viewvc/**roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> *app/src/****main/**<http://**svn.apache.org/****viewvc/****
>>>>>>>>>>>>>> roller/trunk/app/src/****main/****<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/**roller/trunk/**
>>>>>>>>>>>>>> app/src/**main/**<http://svn.****
>>>>>>>>>>>>>> apache.org/**viewvc/**roller/****<http://apache.org/**viewvc/**roller/**>
>>>>>>>>>>>>>> trunk/app/src/**main/**<http:/**/svn.apache.org/**viewvc/****
>>>>>>>>>>>>>> roller/trunk/app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/**roller/trunk/app/****
>>>>>>>>>>>>>> src/main/**<http://svn.apache.**
>>>>>>>>>>>>>> ****org/viewvc/**roller/trunk/****
>>>>>>>>>>>>>> app/**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/**roller/trunk/*
>>>>>>>>>>>>>> *app/*
>>>>>>>>>>>>>> *src/main/**<http://svn.**apache.org/viewvc/**roller/**
>>>>>>>>>>>>>> trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> resources/org/apache/roller/**************weblogger/config/**
>>>>>>>>>>>>>> roller.**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> properties?revision=1511052&**************view=markup<http://
>>>>>>>>>>>>>> ****
>>>>>>>>>>>>>> svn. <http://svn.>***
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> apache.<http://svn.apache.>
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> org/viewvc/roller/trunk/app/************src/main/resources/**
>>>>>>>>>>>>>> org/**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> apache/****
>>>>>>>>>>>>>> roller/weblogger/config/************roller.properties?**
>>>>>>>>>>>>>> revision=**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> 1511052&view=markup<http://********s**vn.apache.org/viewvc/**
>>>>>>>>>>>>>> roller/** <http://vn.apache.org/viewvc/****roller/**<http://vn.apache.org/viewvc/**roller/**>
>>>>>>>>>>>>>> <http://vn.apache.**org/viewvc/roller/**<http://vn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>  <
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> http://svn.apache.**org/****viewvc/roller/**<http://svn.**
>>>>>>>>>>>>>> apache.org/viewvc/roller/**<ht**tp://svn.apache.org/viewvc/**
>>>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/roller/**>>
>>>>>>>>>>>>>> trunk/app/src/main/resources/**********org/apache/roller/**
>>>>>>>>>>>>>> weblogger/****
>>>>>>>>>>>>>> config/roller.properties?**********revision=1511052&view=**
>>>>>>>>>>>>>> markup<*
>>>>>>>>>>>>>> ***h**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ttp://svn.apache.org/viewvc/****
>>>>>>>>>>>>>> ****roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> <http://svn.apache.org/**viewvc/****roller/trunk/app/**
>>>>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> **<http://svn.apache.org/**viewvc/**<http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>>> **roller/trunk/app/src/main/****<
>>>>>>>>>>>>>> http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> resources/org/apache/roller/****
>>>>>>>>>>>>>> ****weblogger/config/roller.**
>>>>>>>>>>>>>> properties?revision=1511052&********view=markup<http://svn.**
>>>>>>>>>>>>>> apache. <http://svn.apache.>**
>>>>>>>>>>>>>> org/viewvc/roller/trunk/app/******src/main/resources/org/**
>>>>>>>>>>>>>> apache/*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> roller/weblogger/config/******roller.properties?revision=**
>>>>>>>>>>>>>> 1511052&view=markup<http://**s**
>>>>>>>>>>>>>> vn.apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>>> trunk/app/src/main/resources/***
>>>>>>>>>>>>>> *org/apache/roller/weblogger/****
>>>>>>>>>>>>>> config/roller.properties?****revision=1511052&view=markup<h**
>>>>>>>>>>>>>> ttp://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>>>>>>>>>>>>>> resources/org/apache/roller/**weblogger/config/roller.**
>>>>>>>>>>>>>> properties?revision=1511052&**view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> [2] http://svn.apache.org/viewvc/*******<http://svn.apache.org/viewvc/*****>
>>>>>>>>>>>>>> <http://svn.apache.org/**viewvc/***<http://svn.apache.org/viewvc/***>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> *******roller/trunk/app/src/******<http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/* <http://svn.apache.org/viewvc/*>
>>>>>>>>>>>>>> *********roller/trunk/app/src/******<http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/********roller/trunk/**app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> test/****<http://svn.apache.******org/viewvc/******roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> app/src/test/****<http://svn.****apache.org/viewvc/********
>>>>>>>>>>>>>> roller/trunk/app/src/test/******<
>>>>>>>>>>>>>> http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>>>>>>>>> test/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/test/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/****roller/trunk/**app/
>>>>>>>>>>>>>> ******
>>>>>>>>>>>>>> src/test/**<http://svn.apache.******org/viewvc/****roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> app/src/test/**<http://svn.**a**
>>>>>>>>>>>>>> pache.org/viewvc/****roller/**<http://apache.org/viewvc/****roller/**>
>>>>>>>>>>>>>> trunk/app/src/test/**<http://**svn.apache.org/viewvc/******
>>>>>>>>>>>>>> roller/trunk/app/src/test/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.org/**********viewvc/**roller/trunk/app/**
>>>>>>>>>>>>>> src/**<http://svn.apache.org/********viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>>> **<http://svn.apache.org/********viewvc/**roller/trunk/app/**
>>>>>>>>>>>>>> src/**<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> ****test/**<http://svn.apache.****org/****viewvc/**roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> *app/src/****test/**<http://**svn.apache.org/****viewvc/****
>>>>>>>>>>>>>> roller/trunk/app/src/****test/****<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****test/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/**roller/trunk/**
>>>>>>>>>>>>>> app/src/**test/**<http://svn.****
>>>>>>>>>>>>>> apache.org/**viewvc/**roller/****<http://apache.org/**viewvc/**roller/**>
>>>>>>>>>>>>>> trunk/app/src/**test/**<http:/**/svn.apache.org/**viewvc/****
>>>>>>>>>>>>>> roller/trunk/app/src/**test/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**test/**>
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/**roller/trunk/app/****
>>>>>>>>>>>>>> src/test/**<http://svn.apache.**
>>>>>>>>>>>>>> ****org/viewvc/**roller/trunk/****
>>>>>>>>>>>>>> app/**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> src/test/**<http://svn.apache.****org/viewvc/**roller/trunk/*
>>>>>>>>>>>>>> *app/*
>>>>>>>>>>>>>> *src/test/**<http://svn.**apache.org/viewvc/**roller/**
>>>>>>>>>>>>>> trunk/app/src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> resources/roller-custom.**************properties?view=log<**
>>>>>>>>>>>>>> http:/*
>>>>>>>>>>>>>> */****
>>>>>>>>>>>>>> svn.apache.org/viewvc/roller/***
>>>>>>>>>>>>>> *********trunk/app/src/test/**<http://svn.apache.org/viewvc/roller/**********trunk/app/src/test/**>
>>>>>>>>>>>>>> **<http://svn.apache.org/viewvc/**
>>>>>>>>>>>>>> roller/********trunk/app/src/**test/**<http://svn.apache.org/viewvc/roller/********trunk/app/src/test/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <h**ttp://svn.apache.org/**viewvc/**roller/******trunk/**
>>>>>>>>>>>>>> app/src/**<http://svn.apache.org/viewvc/**roller/******trunk/app/src/**>
>>>>>>>>>>>>>> test/**<http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/roller/******trunk/app/**src/test/**<http://svn.apache.org/viewvc/roller/******trunk/app/src/test/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> resources/****<http://svn.****ap**ache.org/viewvc/roller/****
>>>>>>>>>>>>>> **** <http://ache.org/viewvc/roller/******><
>>>>>>>>>>>>>> http://apache.org/viewvc/**roller/******<http://apache.org/viewvc/roller/******>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> trunk/app/src/test/resources/**********<
>>>>>>>>>>>>>> http://svn.apache.org/**** <http://svn.apache.org/**>
>>>>>>>>>>>>>> viewvc/roller/****trunk/app/****src/test/resources/****<
>>>>>>>>>>>>>> http:/**/svn.apache.org/viewvc/roller/**
>>>>>>>>>>>>>> ****trunk/app/src/test/**resources/****<http://svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.**apache.org/******viewvc/roller/****<http://apache.org/****viewvc/roller/****>
>>>>>>>>>>>>>> <http://**apache.org/**viewvc/roller/******<http://apache.org/**viewvc/roller/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://**apache.org/viewvc/**roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>>>> <http://apache.org/**viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> trunk/app/src/test/resources/**********<
>>>>>>>>>>>>>> http://svn.apache.org/**** <http://svn.apache.org/**>
>>>>>>>>>>>>>> viewvc/roller/**trunk/app/src/******test/resources/**<http://
>>>>>>>>>>>>>> ****
>>>>>>>>>>>>>> svn.apache.org/viewvc/roller/******trunk/app/src/test/**
>>>>>>>>>>>>>> resources/*<http://svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/*>
>>>>>>>>>>>>>> ***<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**
>>>>>>>>>>>>>> test/resources/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> roller-custom.properties?view=************log<http://svn.**
>>>>>>>>>>>>>> apache. <http://svn.apache.>*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> org/**** <http://svn.apache.org/****><**h**ttp://svn.apache.<
>>>>>>>>>>>>>> http://**svn.apache <http://svn.apache>.>
>>>>>>>>>>>>>> **org/**<http**://svn.apache.**org/**<http://svn.apache.org/**><
>>>>>>>>>>>>>> http://svn.apache.org/**>>
>>>>>>>>>>>>>> viewvc/roller/trunk/app/src/****
>>>>>>>>>>>>>> ******test/resources/roller-**
>>>>>>>>>>>>>> custom.****
>>>>>>>>>>>>>> properties?view=log<http://******s**vn.apache.org/viewvc/**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> roller/** <http://vn.apache.org/viewvc/**roller/**<http://vn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>>> ><
>>>>>>>>>>>>>> http://svn.apache.**org/**viewvc/roller/**<http://svn.**
>>>>>>>>>>>>>> apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> trunk/app/src/test/resources/***
>>>>>>>>>>>>>> *****roller-custom.properties?****
>>>>>>>>>>>>>> view=**log<http://svn.apache.******org/viewvc/roller/trunk/**
>>>>>>>>>>>>>> app/**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> src/test/resources/roller-******custom.properties?view=log<**
>>>>>>>>>>>>>> htt**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> p://svn.apache.org/viewvc/****roller/trunk/app/src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>>>>>>>>>>> resources/roller-custom.****properties?view=log<http://**
>>>>>>>>>>>>>> svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/*
>>>>>>>>>>>>>> *roller-custom.properties?view=**log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> [3] http://svn.apache.org/viewvc/*****<http://svn.apache.org/viewvc/***>
>>>>>>>>>>>>>> *********roller/trunk/app/pom.*****<http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/**********roller/trunk/**app/pom.*<http://svn.apache.org/viewvc/**********roller/trunk/app/pom.*>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> *xml?**<http://svn.apache.org/**
>>>>>>>>>>>>>> **viewvc/********roller/trunk/****<http://svn.apache.org/**viewvc/********roller/trunk/**>
>>>>>>>>>>>>>> app/pom.xml?**<http://svn.**apache.org/viewvc/**********
>>>>>>>>>>>>>> roller/trunk/app/pom.xml?**<http://svn.apache.org/viewvc/********roller/trunk/app/pom.xml?**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> ** <http://svn.apache.org/viewvc/****<http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>>> ********roller/trunk/app/pom.******<http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/********roller/trunk/**app/pom.**<http://svn.apache.org/viewvc/********roller/trunk/app/pom.**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> xml?**<http://svn.apache.org/****viewvc/******roller/trunk/**
>>>>>>>>>>>>>> app/**<http://svn.apache.org/**viewvc/******roller/trunk/app/**>
>>>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/******roller/trunk/
>>>>>>>>>>>>>> **app/pom.xml?**<http://svn.apache.org/viewvc/******roller/trunk/app/pom.xml?**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  http://svn.apache.org/********
>>>>>>>>>>>>>> viewvc/****roller/trunk/app/********<http://svn.apache.org/******viewvc/****roller/trunk/app/******>
>>>>>>>>>>>>>> <http://svn.apache.org/******viewvc/****roller/trunk/app/***
>>>>>>>>>>>>>> ***<http://svn.apache.org/****viewvc/****roller/trunk/app/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> pom.xml?**<http://svn.apache.****org/**viewvc/****roller/**
>>>>>>>>>>>>>> trunk/**
>>>>>>>>>>>>>> app/**pom.xml?**<http://svn.**apache.org/**viewvc/******
>>>>>>>>>>>>>> roller/trunk/app/**pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/****roller/trunk/**app/**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> pom.xml?**<http://svn.apache.***
>>>>>>>>>>>>>> *org/viewvc/****roller/trunk/****
>>>>>>>>>>>>>> app/pom.xml?**<http://svn.**apache.org/viewvc/****roller/**
>>>>>>>>>>>>>> trunk/app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> **<http://svn.apache.org/*******
>>>>>>>>>>>>>> *viewvc/****roller/trunk/app/******<http://svn.apache.org/******viewvc/****roller/trunk/app/****>
>>>>>>>>>>>>>> ** <http://svn.apache.org/******
>>>>>>>>>>>>>> viewvc/****roller/trunk/app/******<http://svn.apache.org/****viewvc/****roller/trunk/app/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> pom.xml?**<http://svn.apache.****org/**viewvc/****roller/**
>>>>>>>>>>>>>> trunk/**
>>>>>>>>>>>>>> app/**pom.xml?**<http://svn.**apache.org/**viewvc/******
>>>>>>>>>>>>>> roller/trunk/app/**pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/****roller/trunk/**app/**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> pom.xml?**<http://svn.apache.***
>>>>>>>>>>>>>> *org/viewvc/****roller/trunk/****
>>>>>>>>>>>>>> app/pom.xml?**<http://svn.**apache.org/viewvc/****roller/**
>>>>>>>>>>>>>> trunk/app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/**roller/trunk/app/****
>>>>>>>>>>>>>> pom.xml?**<http://svn.apache.***
>>>>>>>>>>>>>> ***org/viewvc/**roller/trunk/****
>>>>>>>>>>>>>> app/**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> pom.xml?**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>>>> app/**
>>>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/**roller/trunk/app/
>>>>>>>>>>>>>> **pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> revision=1511052&view=markup#**************l460<http://svn.**
>>>>>>>>>>>>>> apache. <http://svn.apache.>**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> org/**** <http://svn.apache.org/****><***
>>>>>>>>>>>>>> *h**ttp://svn.apache.<
>>>>>>>>>>>>>> http://**svn.apache <http://svn.apache>.>
>>>>>>>>>>>>>> **org/**<http**://svn.apache.****org/**<
>>>>>>>>>>>>>> http://svn.apache.org/**** <http://svn.apache.org/**>><
>>>>>>>>>>>>>> http://svn.apache.org/**>>
>>>>>>>>>>>>>> viewvc/roller/trunk/app/pom.****
>>>>>>>>>>>>>> ********xml?revision=1511052&****
>>>>>>>>>>>>>> view=**
>>>>>>>>>>>>>> ******
>>>>>>>>>>>>>> markup#l460<http://svn.apache.**********org/viewvc/roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> app/****
>>>>>>>>>>>>>> pom.xml?revision=1511052&view=**********markup#l460<http://**
>>>>>>>>>>>>>> svn. <http://svn.>**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> apache.org/viewvc/roller/*******
>>>>>>>>>>>>>> *trunk/app/pom.xml?revision=**<http://apache.org/viewvc/roller/******trunk/app/pom.xml?revision=**>
>>>>>>>>>>>>>> **<http://apache.org/viewvc/**roller/****trunk/app/pom.xml?**
>>>>>>>>>>>>>> revision=**<http://apache.org/viewvc/roller/****trunk/app/pom.xml?revision=**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <**http://apache.org/viewvc/****roller/**trunk/app/pom.xml?**<http://apache.org/viewvc/**roller/**trunk/app/pom.xml?**>
>>>>>>>>>>>>>> revision=**<http://apache.org/**
>>>>>>>>>>>>>> viewvc/roller/**trunk/app/pom.**xml?revision=**<http://apache.org/viewvc/roller/**trunk/app/pom.xml?revision=**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> 1511052&view=markup#l460<http:******//
>>>>>>>>>>>>>> svn.apache.org/viewvc/**
>>>>>>>>>>>>>> roller/trunk/app/pom.xml?******revision=1511052&view=markup#*
>>>>>>>>>>>>>> ****
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *l460<http://svn.apache.org/****
>>>>>>>>>>>>>> viewvc/roller/trunk/app/pom.**<http://svn.apache.org/**viewvc/roller/trunk/app/pom.**>
>>>>>>>>>>>>>> xml?revision=1511052&view=****markup#l460<http://svn.apache.*
>>>>>>>>>>>>>> *org/viewvc/roller/trunk/app/**pom.xml?revision=1511052&view=
>>>>>>>>>>>>>> **markup#l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> [4] <http://svn.apache.org/viewvc/******<http://svn.apache.org/viewvc/****>
>>>>>>>>>>>>>> <http://svn.apache.org/**viewvc/**<http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> ********roller/trunk/app/src/********<
>>>>>>>>>>>>>> http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/********roller/trunk/****app/src/**<http://svn.apache.
>>>>>>>>>>>>>> **org/viewvc/********roller/**trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> main/****<http://svn.apache.******org/viewvc/******roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> app/src/main/****<http://svn.****apache.org/viewvc/********
>>>>>>>>>>>>>> roller/trunk/app/src/main/******<
>>>>>>>>>>>>>> http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>>>>>>>>> main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/****roller/trunk/**app/
>>>>>>>>>>>>>> ******
>>>>>>>>>>>>>> src/main/**<http://svn.apache.******org/viewvc/****roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> app/src/main/**<http://svn.**a**
>>>>>>>>>>>>>> pache.org/viewvc/****roller/**<http://apache.org/viewvc/****roller/**>
>>>>>>>>>>>>>> trunk/app/src/main/**<http://**svn.apache.org/viewvc/******
>>>>>>>>>>>>>> roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.org/**********viewvc/**roller/trunk/app/**
>>>>>>>>>>>>>> src/**<http://svn.apache.org/********viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>>> **<http://svn.apache.org/********viewvc/**roller/trunk/app/**
>>>>>>>>>>>>>> src/**<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> ****main/**<http://svn.apache.****org/****viewvc/**roller/**
>>>>>>>>>>>>>> trunk/*
>>>>>>>>>>>>>> *app/src/****main/**<http://**svn.apache.org/****viewvc/****
>>>>>>>>>>>>>> roller/trunk/app/src/****main/****<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/**roller/trunk/**
>>>>>>>>>>>>>> app/src/**main/**<http://svn.****
>>>>>>>>>>>>>> apache.org/**viewvc/**roller/****<http://apache.org/**viewvc/**roller/**>
>>>>>>>>>>>>>> trunk/app/src/**main/**<http:/**/svn.apache.org/**viewvc/****
>>>>>>>>>>>>>> roller/trunk/app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> <http://svn.apache.**org/******viewvc/**roller/trunk/app/****
>>>>>>>>>>>>>> src/main/**<http://svn.apache.**
>>>>>>>>>>>>>> ****org/viewvc/**roller/trunk/****
>>>>>>>>>>>>>> app/**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/**roller/trunk/*
>>>>>>>>>>>>>> *app/*
>>>>>>>>>>>>>> *src/main/**<http://svn.**apache.org/viewvc/**roller/**
>>>>>>>>>>>>>> trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> java/org/apache/roller/**************weblogger/config/****
>>>>>>>>>>>>>> WebloggerConfig.java?revision=
>>>>>>>>>>>>>> **1491090&view=markup<http://************svn.apache.org/**
>>>>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>>> ** <http://svn.apache.org/viewvc/****<http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> roller/**** <http://svn.apache.org/viewvc/******roller/****<http://svn.apache.org/viewvc/****roller/****>
>>>>>>>>>>>>>> <http://svn.**apache.org/viewvc/**roller/******<http://svn.apache.org/viewvc/**roller/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.**apache.org/**viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>>>> <http://svn.**apache.org/viewvc/roller/****<http://svn.apache.org/viewvc/roller/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  http://svn.apache.**org/******viewvc/roller/**<http://svn.
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> apache.org/viewvc/roller/**<**ht**tp://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/**roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> trunk/app/src/main/java/org/************apache/roller/**
>>>>>>>>>>>>>> weblogger/*
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> config/WebloggerConfig.java?****
>>>>>>>>>>>>>> ********revision=1491090&view=*****
>>>>>>>>>>>>>> ***
>>>>>>>>>>>>>> markup<h**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ttp://svn.apache.org/viewvc/**********roller/trunk/app/src/**
>>>>>>>>>>>>>> main/*<http://svn.apache.org/viewvc/********roller/trunk/app/src/main/*>
>>>>>>>>>>>>>> ***<http://svn.apache.org/**viewvc/******roller/trunk/app/**
>>>>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> <http://svn.apache.org/****viewvc/****roller/trunk/app/**<http://svn.apache.org/**viewvc/****roller/trunk/app/**>
>>>>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/*
>>>>>>>>>>>>>> *app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> **<http://svn.apache.org/****viewvc/****roller/trunk/app/**<http://svn.apache.org/**viewvc/****roller/trunk/app/**>
>>>>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/*
>>>>>>>>>>>>>> *app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/**
>>>>>>>>>>>>>> src/main/**<http://svn.apache.**
>>>>>>>>>>>>>> org/viewvc/**roller/trunk/app/**src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> java/org/apache/roller/**********weblogger/config/**
>>>>>>>>>>>>>> WebloggerConfig.java?revision=**
>>>>>>>>>>>>>> ********1491090&view=markup<**
>>>>>>>>>>>>>> http:/**
>>>>>>>>>>>>>> /**
>>>>>>>>>>>>>> svn.apache.org/viewvc/roller/***
>>>>>>>>>>>>>> *****trunk/app/src/main/java/****<http://svn.apache.org/viewvc/roller/******trunk/app/src/main/java/**>
>>>>>>>>>>>>>> org/****<http://svn.apache.**org/viewvc/roller/****trunk/**
>>>>>>>>>>>>>> app/src/main/java/org/****<http://svn.apache.org/viewvc/roller/****trunk/app/src/main/java/org/****>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> <http://svn.apache.**org/**viewvc/roller/**trunk/app/**
>>>>>>>>>>>>>> src/main/java/org/**<http://**svn.apache.org/viewvc/roller/**
>>>>>>>>>>>>>> **trunk/app/src/main/java/org/****<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> apache/roller/weblogger/********
>>>>>>>>>>>>>> config/WebloggerConfig.java?**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> revision=1491090&view=markup<****h**ttp://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/****<http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> roller/trunk/app/src/main/******java/org/apache/roller/**
>>>>>>>>>>>>>> weblogger/config/******WebloggerConfig.java?revision=******
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 1491090&view=markup<http://**s**
>>>>>>>>>>>>>> vn.apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>>> trunk/app/src/main/java/org/****apache/roller/weblogger/**
>>>>>>>>>>>>>> config/WebloggerConfig.java?****revision=1491090&view=markup<
>>>>>>>>>>>>>> h**ttp://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>>>>>>>>>>>>>> java/org/apache/roller/**weblogger/config/**
>>>>>>>>>>>>>> WebloggerConfig.java?revision=**1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> http://**svn.apache.org/********
>>>>>>>>>>>>>>> ****viewvc/roller/**trunk/app/****<http://svn.apache.org/**********viewvc/roller/**trunk/app/**>
>>>>>>>>>>>>>>> src/**<http://svn.apache.org/***
>>>>>>>>>>>>>>> *******viewvc/roller/**trunk/**app/src/**<http://svn.apache.org/********viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> ******<http://svn.apache.org/***
>>>>>>>>>>>>>>> *******viewvc/roller/**trunk/****<http://svn.apache.org/********viewvc/roller/**trunk/**>
>>>>>>>>>>>>>>> app/src/******<http://svn.**apache.org/******viewvc/**
>>>>>>>>>>>>>>> roller/**trunk/app/src/******<http://svn.apache.org/******viewvc/roller/**trunk/app/src/******>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> <http://svn.apache.org/*********
>>>>>>>>>>>>>>> *viewvc/roller/**trunk/app/**<http://svn.apache.org/********viewvc/roller/**trunk/app/**>
>>>>>>>>>>>>>>> <**http://svn.apache.org/********
>>>>>>>>>>>>>>> viewvc/roller/**trunk/app/**<http://svn.apache.org/******viewvc/roller/**trunk/app/**>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> src/****<http://svn.apache.****
>>>>>>>>>>>>>>> org/****viewvc/roller/**trunk/****
>>>>>>>>>>>>>>> app/src/****<http://svn.**apache.org/****viewvc/roller/***
>>>>>>>>>>>>>>> *trunk/app/src/****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> <http://svn.apache.org/**********viewvc/roller/**trunk/app/*
>>>>>>>>>>>>>>> *src/*<http://svn.apache.org/********viewvc/roller/**trunk/app/src/*>
>>>>>>>>>>>>>>> ***<http://svn.apache.org/********viewvc/roller/**trunk/app/
>>>>>>>>>>>>>>> **src/**<http://svn.apache.org/******viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ****<http://svn.apache.org/*****
>>>>>>>>>>>>>>> ***viewvc/roller/**trunk/app/****<http://svn.apache.org/******viewvc/roller/**trunk/app/**>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> src/****<http://svn.apache.**org/****viewvc/roller/**trunk/*
>>>>>>>>>>>>>>> *app/src/****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> <http://svn.apache.org/********
>>>>>>>>>>>>>>> viewvc/roller/**trunk/app/src/****<http://svn.apache.org/******viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>>>>> ****<http://svn.apache.org/******viewvc/roller/**trunk/app/*
>>>>>>>>>>>>>>> *src/****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> <http://svn.apache.org/******viewvc/roller/**trunk/app/src/*
>>>>>>>>>>>>>>> *****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>>>>> <http://svn.apache.org/****viewvc/roller/**trunk/app/src/**
>>>>>>>>>>>>>>> **<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> main/java/org/**<http://svn.**********apache.org/viewvc/**
>>>>>>>>>>>>>>> roller/* <http://apache.org/viewvc/roller/*>
>>>>>>>>>>>>>>> ****** <http://apache.org/viewvc/**roller/*****<http://apache.org/viewvc/roller/*****>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> * <http://apache.org/viewvc/****roller/****<http://apache.org/viewvc/**roller/****>
>>>>>>>>>>>>>>> <http://apache.org/**viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> http://apache.org/viewvc/******roller/****<http://apache.org/viewvc/****roller/****>
>>>>>>>>>>>>>>> <http://apache.org/**viewvc/**roller/****<http://apache.org/viewvc/**roller/****>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> <http://apache.org/**viewvc/**roller/****<http://apache.org/**viewvc/roller/****>
>>>>>>>>>>>>>>> <http://apache.org/**viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> trunk/app/src/main/java/org/**********<
>>>>>>>>>>>>>>> http://svn.apache.org/**** <http://svn.apache.org/**>
>>>>>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/******<http://svn.apache.org/viewvc/****>
>>>>>>>>>>>>>>> <http://svn.apache.org/**viewvc/**<http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> roller/**trunk/app/src/main/********java/org/**<http://svn.
>>>>>>>>>>>>>>> **
>>>>>>>>>>>>>>> apache. <http://svn.apache.>**
>>>>>>>>>>>>>>> org/viewvc/roller/**trunk/app/**
>>>>>>>>>>>>>>> ****src/main/java/org/**<http:**//
>>>>>>>>>>>>>>> **svn.apache.org/viewvc/**roller/***<http://svn.apache.org/viewvc/roller/***>
>>>>>>>>>>>>>>> *trunk/app/src/main/java/org/******<http://svn.apache.org/**
>>>>>>>>>>>>>>> viewvc/roller/**trunk/app/src/**main/java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>      apache/roller/weblogger/************
>>>>>>>>>>>>>>> **config/WebloggerConfig.java?**********
>>>>>>>>>>>>>>> **
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>    **view=markup<
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  http://svn.apache.**org/********
>>>>>>>>>>>>>> **viewvc/roller/trunk/app/**
>>>>>>>>>>>>>> src/main/java/org/apache/*******
>>>>>>>>>>>>>> *****roller/weblogger/config/****
>>>>>>>>>>>>>> WebloggerConfig.java?view=************markup<http://svn.**
>>>>>>>>>>>>>> apache. <http://svn.apache.>**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> org/**** <http://svn.apache.org/****><**h**ttp://svn.apache.<
>>>>>>>>>>>>>> http://**svn.apache <http://svn.apache>.>
>>>>>>>>>>>>>> **org/**<http**://svn.apache.**org/**<http://svn.apache.org/**><
>>>>>>>>>>>>>> http://svn.apache.org/**>>
>>>>>>>>>>>>>> viewvc/roller/trunk/app/src/**********main/java/org/apache/**
>>>>>>>>>>>>>> roller/**
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> weblogger/config/**********WebloggerConfig.java?view=********
>>>>>>>>>>>>>> **markup<
>>>>>>>>>>>>>> http://svn.apache.org/********viewvc/roller/trunk/app/src/**<http://svn.apache.org/******viewvc/roller/trunk/app/src/**>
>>>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/roller/trunk/app/src/**<http://svn.apache.org/****viewvc/roller/trunk/app/src/**>
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/roller/trunk/app/src/**<http://svn.apache.org/****viewvc/roller/trunk/app/src/**>
>>>>>>>>>>>>>> **<http://svn.apache.org/****viewvc/roller/trunk/app/src/**<http://svn.apache.org/**viewvc/roller/trunk/app/src/**>
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>> main/java/org/apache/roller/********weblogger/config/**
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> WebloggerConfig.java?view=********markup<http://svn.apache.**
>>>>>>>>>>>>>> org/** <http://svn.apache.org/**>
>>>>>>>>>>>>>> ** <http://svn.apache.org/**>
>>>>>>>>>>>>>> viewvc/roller/trunk/app/src/****
>>>>>>>>>>>>>> **main/java/org/apache/roller/****
>>>>>>>>>>>>>> weblogger/config/******WebloggerConfig.java?view=******
>>>>>>>>>>>>>> markup<
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> http://svn.apache.org/****viewvc/roller/trunk/app/src/**<http://svn.apache.org/**viewvc/roller/trunk/app/src/**>
>>>>>>>>>>>>>> main/java/org/apache/roller/****weblogger/config/**
>>>>>>>>>>>>>> WebloggerConfig.java?view=****markup<http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/roller/trunk/app/src/**main/java/org/apache/roller/**
>>>>>>>>>>>>>> weblogger/config/**WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> I'd like to do the same thing with Apache JSPWiki, modify our
>>>>>>>>>>>>>> own
>>>>>>>>>>>>>> PropertyReader.java to accept a new jspwiki-custom.properties
>>>>>>>>>>>>>> file.
>>>>>>>>>>>>>> Also,
>>>>>>>>>>>>>> to get rid of the mostly forgotten and empty
>>>>>>>>>>>>>> /ini/default_jspwiki.****
>>>>>>>>>>>>>> properties
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> and put whatever default values there into jspwiki.properties
>>>>>>>>>>>>>> (unless
>>>>>>>>>>>>>> where
>>>>>>>>>>>>>> the latter has already overridden those properties.)
>>>>>>>>>>>>>>  Basically,
>>>>>>>>>>>>>> jspwiki.properties will assume the role of
>>>>>>>>>>>>>> default_jspwiki.properties
>>>>>>>>>>>>>> and
>>>>>>>>>>>>>> we'll have a new optional jspwiki-custom.properties that will
>>>>>>>>>>>>>> not
>>>>>>>>>>>>>> be
>>>>>>>>>>>>>> in
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> WAR at all (you don't want to have it in the WAR as it would
>>>>>>>>>>>>>> get
>>>>>>>>>>>>>> read
>>>>>>>>>>>>>> over
>>>>>>>>>>>>>> what's in $CATALINA_HOME/lib, and if you had something to put
>>>>>>>>>>>>>> in
>>>>>>>>>>>>>> jspwiki-custom.properties in the WAR you'd just use
>>>>>>>>>>>>>> jspwiki.properties
>>>>>>>>>>>>>> anyway.)  Backwards compatibility would not be an issue, as
>>>>>>>>>>>>>> you'd
>>>>>>>>>>>>>> just
>>>>>>>>>>>>>> take
>>>>>>>>>>>>>> your jspwiki.properties file from the old WAR and can still
>>>>>>>>>>>>>> insert it
>>>>>>>>>>>>>> into
>>>>>>>>>>>>>> the new WAR or just rename it jspwiki-custom.properties and
>>>>>>>>>>>>>> put
>>>>>>>>>>>>>> it on
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> external classpath. WDYT?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>> Glen
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>

Re: Switch to Apache Roller-style properties configuration?

Posted by Glen Mazza <gl...@gmail.com>.
OK, I didn't change that section of the code, it was reading from a file 
location before, and it's reading from a file location after: 
http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java?r1=1505241&r2=1512071&diff_format=h

For Roller, the chances of having multiple Roller instances on one 
Tomcat is slim-to-none (you normally load it once and create 500 blogs, 
not two instances of 250 blogs apiece), but I could see how multiple 
JSPWikis on the same Tomcat could occur.  Still, moving from file to 
resource for the below might not help much, because 
jspwiki.custom.config is a system property and hence would hold, if I'm 
not mistaken, for the JVM running Tomcat.  I.e., you can't run 4 JSPWiki 
instances with a different system property for each as one would 
overwrite all the others (correct me if I'm wrong here).  Rather, in 
that case, you'll need to place your jspwiki-custom.properties back into 
the WEB-INF/classes folder of each WAR running the JSPWiki instance.  If 
you have 4 JSPWiki instances, each with their own 
jspwiki-custom.properties within the WAR, that should work fine.  Less 
ideal, but no worse than what it was a week ago when you *always* had to 
do WAR surgery, now it just has to be done if you have multiple JSPWiki 
WARs on the same Tomcat instance.

So as I see it right now, switching from file to classpath isn't going 
to help with multiple instances on the same Tomcat, while stripping away 
the ability to do a quick mvn tomcat7:run-war 
-Djspwiki.custom.config=myfile.properties, with the latter file simply 
in the working directory where you ran the command without a need for it 
to be on the classpath.

Glen

On 08/15/2013 12:53 AM, Harry Metske wrote:
> Glen,
>
> I know how the PropertyReader works right now.
> I first started testing the stuff without heaving read the code at all.
> After not getting it to work I checked the code and discovered this
> behavior.
> I found it odd that the default custom property file is loaded via
> classloading, and that if you specify another name it is loaded via direct
> file reading.
> Loading propfiles from the classpath requires write access to a location
> that's on the classpath, that is positive (more secure) negative (less
> flexible).
> When running multiple wiki's in the same AppServer I find classloading
> configuration more convenient than specifying file paths.
> It simply depends on the usage scenario and also is a matter of personal
> preference.
>
> kind regards,
> Harry
>
>
>
> On 14 August 2013 22:06, Glen Mazza <gl...@gmail.com> wrote:
>
>> I don't think so, you're reading too far down in the code, *just* above
>> that segment is where the default "jspwiki-custom.properties" file is read,
>> and there we indeed use config_class.**getResourceAsStream (just like
>> Roller).
>>
>> Where you're reading, is in the case when someone explicitly configures
>> the "jspwiki.custom.config" system property (like here for Roller:
>> http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**
>> revision=1513320&view=markup#**l448<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1513320&view=markup#l448>)
>> to use another file name besides "jspwiki-custom.properties".  In that
>> case, there's zero guarantee that that file is part of the classpath,
>> indeed the file is anywhere the user specifies, so java.io.File is more
>> appropriate then.
>>
>> Glen
>>
>>
>> On 08/14/2013 03:51 PM, Harry Metske wrote:
>>
>>> Glenn,
>>>
>>> currently the custom property file is loaded as a java.io.File. I had
>>> expected (and preferred) classloading of the file, like the below patch.
>>> WDYT ?
>>>
>>> regards,
>>> Harry
>>>
>>>
>>> Index: jspwiki-war/src/main/java/org/**apache/wiki/PropertyReader.**java
>>> IDEA additional info:
>>> Subsystem: com.intellij.openapi.diff.**impl.patch.CharsetEP
>>> <+>UTF-8
>>> ==============================**==============================**=======
>>> --- jspwiki-war/src/main/java/org/**apache/wiki/PropertyReader.**java
>>> (revision
>>> 1513997)
>>> +++ jspwiki-war/src/main/java/org/**apache/wiki/PropertyReader.**java
>>> (revision
>>> )
>>> @@ -124,7 +124,7 @@
>>>                else
>>>                {
>>>                    context.log(PARAM_PROPERTYFILE + " defined, using " +
>>> propertyFile + " as the custom properties file.");
>>> -                propertyStream = new FileInputStream( new
>>> File(propertyFile) );
>>> +                propertyStream = config_class.**getResourceAsStream("/"
>>> +
>>> propertyFile );
>>>                }
>>>
>>>                Properties props = getDefaultProperties();
>>>
>>>
>>> On 9 August 2013 09:50, Harry Metske <ha...@gmail.com> wrote:
>>>
>>>   Glen,
>>>> thanks, looks good.
>>>> I will do some testing too if time permits the coming week.
>>>>
>>>> regards,
>>>> Harry
>>>>
>>>>
>>>>
>>>> On 9 August 2013 00:27, Glen Mazza <gl...@gmail.com> wrote:
>>>>
>>>>   Hi All,
>>>>> OK, converted.  Main issue was that I had to move jspwiki.properties out
>>>>> of the WEB-INF folder and into to src/main/resources/ini (where the
>>>>> default_jspwiki.properties, now incorporated into jspwiki.properties,
>>>>> used
>>>>> to be.) I believe it was because certain bootstrapping classes don't
>>>>> have
>>>>> access to the WEB-INF folder.  (I didn't research the matter much,
>>>>> seeing
>>>>> how Roller also places it in their roller.jar and not the WEB-INF
>>>>> folder of
>>>>> the roller WAR.)
>>>>>
>>>>> Right now, in my tomcat/lib folder I have this tiny
>>>>> jspwiki-custom.properties file:
>>>>>
>>>>> jspwiki.applicationName = SampleApp
>>>>> jspwiki.xmlGroupDatabaseFile = /home/gmazza/groupdatabase.xml
>>>>> jspwiki.xmlUserDatabaseFile = /home/gmazza/userdatabase.xml
>>>>> log4j.appender.FileLog.File = /home/gmazza/jspwikilog.log
>>>>>
>>>>> It seems to be working fine.  I can keep changing the WAR, the values
>>>>> above override what's in jspwiki.properties and my user accounts don't
>>>>> need
>>>>> to be recreated anymore, as userdatabase.xml is read from the above file
>>>>> and no longer from within the WAR.
>>>>>
>>>>> The Selenium tests will need conversion, I'll look at that next, but
>>>>> even
>>>>> before the change only about half the tests were working.  Let me know
>>>>> of
>>>>> any hiccups that occur.
>>>>>
>>>>> Regards,
>>>>> Glen
>>>>>
>>>>>
>>>>> On 08/08/2013 11:10 AM, Juan Pablo Santos Rodríguez wrote:
>>>>>
>>>>>   Hi,
>>>>>> I was thinking in existing users who might be using this feature, but
>>>>>> just
>>>>>> realised that simlpy using -Djspwiki.custom.config for the same file
>>>>>> would
>>>>>> be equally valid, so I'm +1 on your approach
>>>>>>
>>>>>>
>>>>>> br,
>>>>>> juan pablo
>>>>>>
>>>>>> On Thu, Aug 8, 2013 at 2:43 PM, Glen Mazza <gl...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>    Umm, I really would *not* want to go that route, there's no practical
>>>>>>
>>>>>>> benefit to providing both options (never has been on Roller for over a
>>>>>>> decade now), it would raise unnecessary confusion among users, and it
>>>>>>> would
>>>>>>> be cumbersome to code.
>>>>>>>
>>>>>>> With my proposed change, you are never going to alter the
>>>>>>> jspwiki.properties file again (unless you manually go in and tweak it,
>>>>>>> which you should never need to do anyway).  You can only override it
>>>>>>> with
>>>>>>> another file, with just those handful of values you wish to override.
>>>>>>>    If
>>>>>>> you don't override it, then jspwiki.properties in the WAR defaults.
>>>>>>>
>>>>>>> What I'm proposing is not just how Roller does things but precisely
>>>>>>> how
>>>>>>> Apache Karaf does too, you alter a custom file that overrides the
>>>>>>> default,
>>>>>>> and they leave a blunt comment in the default file to leave it alone
>>>>>>> and
>>>>>>> alter the custom file instead.
>>>>>>>
>>>>>>> Glen
>>>>>>>
>>>>>>>
>>>>>>> On 08/08/2013 08:32 AM, Juan Pablo Santos Rodríguez wrote:
>>>>>>>
>>>>>>>    Hi,
>>>>>>>
>>>>>>>> one quick note, if I recall correctly, "-Djspwiki.propertyfile" is
>>>>>>>> used to
>>>>>>>> load the main jspwiki.properties from outside the war, so it should
>>>>>>>> be
>>>>>>>> able
>>>>>>>> to coexist with "-Djspwiki.custom.config", something like:
>>>>>>>>
>>>>>>>> - jspwiki.properties, loaded first, from war (unless
>>>>>>>> -Djspwiki.propertyfile
>>>>>>>> is given)
>>>>>>>> - jspwiki-custom.properties, loaded afterwards, from classpath
>>>>>>>> (unless
>>>>>>>> -Djspwiki.custom.config is given)
>>>>>>>>
>>>>>>>>
>>>>>>>> br,
>>>>>>>> juan pablo
>>>>>>>>
>>>>>>>> On Thu, Aug 8, 2013 at 2:14 PM, Glen Mazza <gl...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>     Yes, I like -Djspwiki.custom.config too.  I'll see what I can do
>>>>>>>> for
>>>>>>>>
>>>>>>>>   logging.
>>>>>>>>> Glen
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 08/08/2013 08:01 AM, Harry Metske wrote:
>>>>>>>>>
>>>>>>>>>     Changing the propname to something else would not be a problem,
>>>>>>>>>
>>>>>>>>>        "-Djspwiki.custom.config" is fine.
>>>>>>>>>> What I meant is that it should be very clear _how_ these things
>>>>>>>>>> play
>>>>>>>>>> together, both in documentation and logging.
>>>>>>>>>>
>>>>>>>>>> kind regards,
>>>>>>>>>> Harry
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>      Yes, [#1] would be the [3] I mentioned below.  But would it be
>>>>>>>>>> a
>>>>>>>>>> problem
>>>>>>>>>>
>>>>>>>>>>    if I renamed our "-Djspwiki.propertyfile" setting to
>>>>>>>>>>
>>>>>>>>>>> "-Djspwiki.custom.**
>>>>>>>>>>> **propertyfile"
>>>>>>>>>>> (or "-Djspwiki.custom.config" similar to Roller) as it's
>>>>>>>>>>> technically no
>>>>>>>>>>> longer a replacement of the jspwiki.properties file (which will
>>>>>>>>>>> always
>>>>>>>>>>> be
>>>>>>>>>>> in the WAR) but an overlay of it (same thing, so long as your
>>>>>>>>>>> overlay
>>>>>>>>>>> has a
>>>>>>>>>>> value for every property in the jspwiki.properties file, which
>>>>>>>>>>> current
>>>>>>>>>>> -Djspwiki.propertyfiles have to do anyway as they fully replace
>>>>>>>>>>> that
>>>>>>>>>>> file.)
>>>>>>>>>>>       I don't see this as a backwards compatibility issue as it's
>>>>>>>>>>> just a
>>>>>>>>>>> command-line setting.
>>>>>>>>>>>
>>>>>>>>>>> Glen
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>>>>>>>>>>
>>>>>>>>>>>      from an administration perspective (part of my daily live) I
>>>>>>>>>>> consider
>>>>>>>>>>>
>>>>>>>>>>>    having configuration separate from binaries a must-have.
>>>>>>>>>>>
>>>>>>>>>>>> So +1 on this, it should get easier to deploy (the 100% same)
>>>>>>>>>>>> JSPWiki.war
>>>>>>>>>>>> everywhere and having a per-environment small "override" property
>>>>>>>>>>>> file
>>>>>>>>>>>> that
>>>>>>>>>>>> adapts the JSPWiki instance to the environment.
>>>>>>>>>>>> I would like to see proper logging on property handling so we can
>>>>>>>>>>>> see
>>>>>>>>>>>> which
>>>>>>>>>>>> property gets loaded from where, and what the final property
>>>>>>>>>>>> values
>>>>>>>>>>>> are
>>>>>>>>>>>> going to be active.
>>>>>>>>>>>> (and, similar to what Ichiro already mentioned, it should play
>>>>>>>>>>>> nice
>>>>>>>>>>>> with
>>>>>>>>>>>> JSPWiki System property mechanism, see [#1].
>>>>>>>>>>>>
>>>>>>>>>>>> [#1] https://issues.apache.org/**********jira/browse/JSPWIKI-568<https://issues.apache.org/********jira/browse/JSPWIKI-568>
>>>>>>>>>>>> <ht**tps://issues.apache.org/********jira/browse/JSPWIKI-568<https://issues.apache.org/******jira/browse/JSPWIKI-568>
>>>>>>>>>>>> <http**s://issues.apache.org/********jira/browse/JSPWIKI-568<http://issues.apache.org/******jira/browse/JSPWIKI-568>
>>>>>>>>>>>> <h**ttps://issues.apache.org/******jira/browse/JSPWIKI-568<https://issues.apache.org/****jira/browse/JSPWIKI-568>
>>>>>>>>>>>> <https:**//issues.apache.org/******jira/**browse/JSPWIKI-568<http://issues.apache.org/****jira/**browse/JSPWIKI-568>
>>>>>>>>>>>> <h**ttp://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>>> <htt**ps://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>>> <htt**ps://issues.apache.org/**jira/**browse/JSPWIKI-568<https://issues.apache.org/**jira/browse/JSPWIKI-568>
>>>>>>>>>>>> <https:**//issues.apache.org/******jira/**browse/JSPWIKI-568<http://issues.apache.org/****jira/**browse/JSPWIKI-568>
>>>>>>>>>>>> <h**ttp://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>>> <htt**p://issues.apache.org/**jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/****browse/JSPWIKI-568>
>>>>>>>>>>>> <ht**tp://issues.apache.org/jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>>>> <http**s://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>>> <htt**p://issues.apache.org/jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>>>> <http**s://issues.apache.org/**jira/**browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>>>> <http**s://issues.apache.org/jira/**browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>>>>>>>>>> kind regards,
>>>>>>>>>>>> Harry
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>       Hi Team,
>>>>>>>>>>>>
>>>>>>>>>>>>     Apache Roller maintains two configuration files, a
>>>>>>>>>>>>
>>>>>>>>>>>>   roller.properties[1]
>>>>>>>>>>>>> which sits within the war, filled with defaults and never needs
>>>>>>>>>>>>> modification (although a user can alter it if he wishes, it will
>>>>>>>>>>>>> work),
>>>>>>>>>>>>> and
>>>>>>>>>>>>> a roller-custom.properties file[2] which is placed in the
>>>>>>>>>>>>> classpath
>>>>>>>>>>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss
>>>>>>>>>>>>> or
>>>>>>>>>>>>> GlassFish.)  For any value you put in roller-custom.properties,
>>>>>>>>>>>>> it
>>>>>>>>>>>>> will
>>>>>>>>>>>>> overwrite what is in roller.properties in the WAR.  So you only
>>>>>>>>>>>>> need
>>>>>>>>>>>>> the
>>>>>>>>>>>>> values in the custom file that you're actually overriding,
>>>>>>>>>>>>> making
>>>>>>>>>>>>> it
>>>>>>>>>>>>> very
>>>>>>>>>>>>> short and simple.  And if you don't use a
>>>>>>>>>>>>> roller-custom.properties,
>>>>>>>>>>>>> all
>>>>>>>>>>>>> of
>>>>>>>>>>>>> the defaults in the WAR will prevail.
>>>>>>>>>>>>>
>>>>>>>>>>>>> You can keep deploying new versions of Roller.war to your
>>>>>>>>>>>>> servlet
>>>>>>>>>>>>> container while never needing to re-configure either
>>>>>>>>>>>>> roller.properties
>>>>>>>>>>>>> or
>>>>>>>>>>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>>>>>>>>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>>>>>>>>>>> automatically
>>>>>>>>>>>>> is used--this is very convenient during development when the
>>>>>>>>>>>>> WARs
>>>>>>>>>>>>> frequently get updated.  Same with JUnit and Selenium testing,
>>>>>>>>>>>>> we
>>>>>>>>>>>>> don't
>>>>>>>>>>>>> alter the roller.properties but just place the
>>>>>>>>>>>>> roller-custom.properties[2]
>>>>>>>>>>>>> in the test classpath under src/test/resources (if you have
>>>>>>>>>>>>> multiple
>>>>>>>>>>>>> config
>>>>>>>>>>>>> files, you can change the custom file name via setting a system
>>>>>>>>>>>>> property[3]).  All this is handled by the WebloggerConfig[4]
>>>>>>>>>>>>> class,
>>>>>>>>>>>>> which
>>>>>>>>>>>>> first reads in roller.properties and the overwrites any values
>>>>>>>>>>>>> from
>>>>>>>>>>>>> roller-custom.properties.
>>>>>>>>>>>>>
>>>>>>>>>>>>> [1] http://svn.apache.org/viewvc/*****<http://svn.apache.org/viewvc/***>
>>>>>>>>>>>>> *******roller/trunk/app/src/****<http://svn.apache.org/viewvc/*
>>>>>>>>>>>>> *********roller/trunk/app/src/****<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>>> main/****<http://svn.apache.****org/viewvc/******roller/trunk/*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> app/src/main/****<http://svn.**apache.org/viewvc/********
>>>>>>>>>>>>> roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>>>> **>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/****roller/trunk/**app/****
>>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/****roller/trunk/*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> app/src/main/**<http://svn.**apache.org/viewvc/****roller/**
>>>>>>>>>>>>> trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>> <http://svn.apache.org/********viewvc/**roller/trunk/app/src/**
>>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>> ****main/**<http://svn.apache.**org/****viewvc/**roller/trunk/*
>>>>>>>>>>>>> *app/src/****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/**
>>>>>>>>>>>>> app/src/**main/**<http://svn.**apache.org/**viewvc/**roller/**
>>>>>>>>>>>>> trunk/app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/app/****
>>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>>> app/**
>>>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/*
>>>>>>>>>>>>> *src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>> resources/org/apache/roller/************weblogger/config/**
>>>>>>>>>>>>> roller.**
>>>>>>>>>>>>> **
>>>>>>>>>>>>> properties?view=markup<http://**********svn.apache.org/viewvc/*
>>>>>>>>>>>>> ***** <http://svn.apache.org/viewvc/****>
>>>>>>>>>>>>> ** <http://svn.apache.org/viewvc/******<http://svn.apache.org/viewvc/****>
>>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/******roller/**<http://svn.apache.org/viewvc/****roller/**>
>>>>>>>>>>>>> <http://svn.**apache.org/viewvc/**roller/**<http://svn.apache.org/viewvc/**roller/**>
>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>
>>>>>>>>>>>>> http://svn.apache.**org/****viewvc/roller/**<http://svn.**
>>>>>>>>>>>>> apache.org/viewvc/roller/**<ht**tp://svn.apache.org/viewvc/**
>>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/roller/**>>
>>>>>>>>>>>>> trunk/app/src/main/resources/**********org/apache/roller/**
>>>>>>>>>>>>> weblogger/****
>>>>>>>>>>>>> config/roller.properties?view=**********markup<http://svn.****
>>>>>>>>>>>>> apache.<http://svn.apache.>
>>>>>>>>>>>>> ****
>>>>>>>>>>>>> org/viewvc/roller/trunk/app/********src/main/resources/org/**
>>>>>>>>>>>>> apache/****
>>>>>>>>>>>>> roller/weblogger/config/********roller.properties?view=markup<*
>>>>>>>>>>>>> *****
>>>>>>>>>>>>>
>>>>>>>>>>>>> http://svn.apache.org/viewvc/******roller/trunk/app/src/main/**
>>>>>>>>>>>>> **<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>> <http://svn.apache.org/**viewvc/**roller/trunk/app/src/**
>>>>>>>>>>>>> main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>> resources/org/apache/roller/******weblogger/config/roller.**
>>>>>>>>>>>>> properties?view=markup<http://****svn.apache.org/viewvc/**
>>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>> trunk/app/src/main/resources/****org/apache/roller/weblogger/**
>>>>>>>>>>>>> **
>>>>>>>>>>>>> config/roller.properties?view=****markup<http://svn.apache.**
>>>>>>>>>>>>> org/viewvc/roller/trunk/app/**src/main/resources/org/apache/**
>>>>>>>>>>>>> roller/weblogger/config/**roller.properties?view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     http://svn.apache.org/viewvc/***
>>>>>>>>>>>>>> *********roller/trunk/app/src/****<http://svn.apache.org/viewvc/**********roller/trunk/app/src/**>
>>>>>>>>>>>>>> <http://svn.apache.org/**viewvc/********roller/trunk/**
>>>>>>>>>>>>>> app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>>>>   main/****<http://svn.apache.****
>>>>>>>>>>>>> org/viewvc/******roller/trunk/****
>>>>>>>>>>>>> app/src/main/****<http://svn.**apache.org/viewvc/********
>>>>>>>>>>>>> roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>>>> **>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/****roller/trunk/**app/****
>>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/****roller/trunk/*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> app/src/main/**<http://svn.**apache.org/viewvc/****roller/**
>>>>>>>>>>>>> trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>> <http://svn.apache.org/********viewvc/**roller/trunk/app/src/**
>>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>> ****main/**<http://svn.apache.**org/****viewvc/**roller/trunk/*
>>>>>>>>>>>>> *app/src/****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/**
>>>>>>>>>>>>> app/src/**main/**<http://svn.**apache.org/**viewvc/**roller/**
>>>>>>>>>>>>> trunk/app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/app/****
>>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>>> app/**
>>>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/*
>>>>>>>>>>>>> *src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>> resources/org/apache/roller/************weblogger/config/**
>>>>>>>>>>>>> roller.**
>>>>>>>>>>>>> **
>>>>>>>>>>>>> properties?revision=1511052&************view=markup<http://**
>>>>>>>>>>>>> svn. <http://svn.>***
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> apache.<http://svn.apache.>
>>>>>>>>>>>>> **
>>>>>>>>>>>>> org/viewvc/roller/trunk/app/**********src/main/resources/org/**
>>>>>>>>>>>>> **
>>>>>>>>>>>>> apache/****
>>>>>>>>>>>>> roller/weblogger/config/**********roller.properties?revision=**
>>>>>>>>>>>>> **
>>>>>>>>>>>>> 1511052&view=markup<http://******s**vn.apache.org/viewvc/**
>>>>>>>>>>>>> roller/** <http://vn.apache.org/viewvc/**roller/**<http://vn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>>> <
>>>>>>>>>>>>> http://svn.apache.**org/**viewvc/roller/**<http://svn.**
>>>>>>>>>>>>> apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>> trunk/app/src/main/resources/********org/apache/roller/**
>>>>>>>>>>>>> weblogger/****
>>>>>>>>>>>>> config/roller.properties?********revision=1511052&view=markup<*
>>>>>>>>>>>>> ***h**
>>>>>>>>>>>>>
>>>>>>>>>>>>> ttp://svn.apache.org/viewvc/******roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>> **<http://svn.apache.org/viewvc/**
>>>>>>>>>>>>> **roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>> **>
>>>>>>>>>>>>> resources/org/apache/roller/******weblogger/config/roller.**
>>>>>>>>>>>>> properties?revision=1511052&******view=markup<http://svn.**
>>>>>>>>>>>>> apache. <http://svn.apache.>**
>>>>>>>>>>>>> org/viewvc/roller/trunk/app/****src/main/resources/org/apache/*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> roller/weblogger/config/****roller.properties?revision=**
>>>>>>>>>>>>> 1511052&view=markup<http://**svn.apache.org/viewvc/roller/**
>>>>>>>>>>>>> trunk/app/src/main/resources/**org/apache/roller/weblogger/**
>>>>>>>>>>>>> config/roller.properties?**revision=1511052&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>>>>>>>>>>> [2] http://svn.apache.org/viewvc/*****<http://svn.apache.org/viewvc/***>
>>>>>>>>>>>>> *******roller/trunk/app/src/****<http://svn.apache.org/viewvc/*
>>>>>>>>>>>>> *********roller/trunk/app/src/****<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>>> test/****<http://svn.apache.****org/viewvc/******roller/trunk/*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> app/src/test/****<http://svn.**apache.org/viewvc/********
>>>>>>>>>>>>> roller/trunk/app/src/test/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/test/****>
>>>>>>>>>>>>> **>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/****roller/trunk/**app/****
>>>>>>>>>>>>> src/test/**<http://svn.apache.****org/viewvc/****roller/trunk/*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> app/src/test/**<http://svn.**apache.org/viewvc/****roller/**
>>>>>>>>>>>>> trunk/app/src/test/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**>
>>>>>>>>>>>>> <http://svn.apache.org/********viewvc/**roller/trunk/app/src/**
>>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>> ****test/**<http://svn.apache.**org/****viewvc/**roller/trunk/*
>>>>>>>>>>>>> *app/src/****test/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****test/**>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/**
>>>>>>>>>>>>> app/src/**test/**<http://svn.**apache.org/**viewvc/**roller/**
>>>>>>>>>>>>> trunk/app/src/**test/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**test/**>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/app/****
>>>>>>>>>>>>> src/test/**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>>> app/**
>>>>>>>>>>>>> src/test/**<http://svn.apache.**org/viewvc/**roller/trunk/app/*
>>>>>>>>>>>>> *src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>>>>>>>>>> resources/roller-custom.************properties?view=log<http:/*
>>>>>>>>>>>>> */****
>>>>>>>>>>>>> svn.apache.org/viewvc/roller/**********trunk/app/src/test/**<http://svn.apache.org/viewvc/roller/********trunk/app/src/test/**>
>>>>>>>>>>>>> <h**ttp://svn.apache.org/viewvc/**roller/******trunk/app/src/**
>>>>>>>>>>>>> test/**<http://svn.apache.org/viewvc/roller/******trunk/app/src/test/**>
>>>>>>>>>>>>> resources/****<http://svn.**ap**ache.org/viewvc/roller/******<http://apache.org/viewvc/roller/******>
>>>>>>>>>>>>> trunk/app/src/test/resources/********<http://svn.apache.org/**
>>>>>>>>>>>>> viewvc/roller/****trunk/app/**src/test/resources/****<http://svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/****>
>>>>>>>>>>>>> <http://svn.**apache.org/****viewvc/roller/****<http://apache.org/**viewvc/roller/****>
>>>>>>>>>>>>> <http://**apache.org/viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>>> trunk/app/src/test/resources/********<http://svn.apache.org/**
>>>>>>>>>>>>> viewvc/roller/**trunk/app/src/****test/resources/**<http://**
>>>>>>>>>>>>> svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/*
>>>>>>>>>>>>> ***<http://svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**>
>>>>>>>>>>>>> roller-custom.properties?view=**********log<http://svn.apache.*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>>
>>>>>>>>>>>>> org/**** <http://svn.apache.org/****><h**ttp://svn.apache.<http://svn.apache.>
>>>>>>>>>>>>> **org/**<http**://svn.apache.org/** <http://svn.apache.org/**>>
>>>>>>>>>>>>> viewvc/roller/trunk/app/src/********test/resources/roller-**
>>>>>>>>>>>>> custom.****
>>>>>>>>>>>>> properties?view=log<http://****s**vn.apache.org/viewvc/**
>>>>>>>>>>>>> roller/** <http://vn.apache.org/viewvc/roller/**><
>>>>>>>>>>>>> http://svn.apache.**org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>>> trunk/app/src/test/resources/******roller-custom.properties?**
>>>>>>>>>>>>> view=**log<http://svn.apache.****org/viewvc/roller/trunk/app/**
>>>>>>>>>>>>> **
>>>>>>>>>>>>> src/test/resources/roller-****custom.properties?view=log<htt**
>>>>>>>>>>>>> p://svn.apache.org/viewvc/**roller/trunk/app/src/test/**
>>>>>>>>>>>>> resources/roller-custom.**properties?view=log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>>>>>>>>>>> [3] http://svn.apache.org/viewvc/***
>>>>>>>>>>>>> *********roller/trunk/app/pom.***<http://svn.apache.org/viewvc/**********roller/trunk/app/pom.*>
>>>>>>>>>>>>> *xml?**<http://svn.apache.org/**viewvc/********roller/trunk/**
>>>>>>>>>>>>> app/pom.xml?**<http://svn.apache.org/viewvc/********roller/trunk/app/pom.xml?**>
>>>>>>>>>>>>> ** <http://svn.apache.org/viewvc/**
>>>>>>>>>>>>> ********roller/trunk/app/pom.****<http://svn.apache.org/viewvc/********roller/trunk/app/pom.**>
>>>>>>>>>>>>> xml?**<http://svn.apache.org/**viewvc/******roller/trunk/app/**
>>>>>>>>>>>>> pom.xml?**<http://svn.apache.org/viewvc/******roller/trunk/app/pom.xml?**>
>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>
>>>>>>>>>>>>> http://svn.apache.org/******viewvc/****roller/trunk/app/******<http://svn.apache.org/****viewvc/****roller/trunk/app/****>
>>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/**viewvc/****roller/trunk/**
>>>>>>>>>>>>> app/**pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>>>>> app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/****roller/trunk/app/****
>>>>>>>>>>>>> ** <http://svn.apache.org/****viewvc/****roller/trunk/app/****>
>>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/**viewvc/****roller/trunk/**
>>>>>>>>>>>>> app/**pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>>>>> app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/app/****
>>>>>>>>>>>>> pom.xml?**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>>> app/**
>>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>>>>> pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>>>>>>>>>>> revision=1511052&view=markup#************l460<http://svn.**
>>>>>>>>>>>>> apache. <http://svn.apache.>**
>>>>>>>>>>>>> **
>>>>>>>>>>>>> org/**** <http://svn.apache.org/****><**h**ttp://svn.apache.<
>>>>>>>>>>>>> http://**svn.apache <http://svn.apache>.>
>>>>>>>>>>>>> **org/**<http**://svn.apache.**org/**<http://svn.apache.org/**><
>>>>>>>>>>>>> http://svn.apache.org/**>>
>>>>>>>>>>>>> viewvc/roller/trunk/app/pom.**********xml?revision=1511052&**
>>>>>>>>>>>>> view=**
>>>>>>>>>>>>> ******
>>>>>>>>>>>>> markup#l460<http://svn.apache.********org/viewvc/roller/trunk/*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> app/****
>>>>>>>>>>>>> pom.xml?revision=1511052&view=********markup#l460<http://svn.**
>>>>>>>>>>>>> **
>>>>>>>>>>>>> apache.org/viewvc/roller/******trunk/app/pom.xml?revision=**<http://apache.org/viewvc/roller/****trunk/app/pom.xml?revision=**>
>>>>>>>>>>>>> <**http://apache.org/viewvc/**roller/**trunk/app/pom.xml?**
>>>>>>>>>>>>> revision=**<http://apache.org/viewvc/roller/**trunk/app/pom.xml?revision=**>
>>>>>>>>>>>>> 1511052&view=markup#l460<http:****//svn.apache.org/viewvc/**
>>>>>>>>>>>>> roller/trunk/app/pom.xml?****revision=1511052&view=markup#***
>>>>>>>>>>>>> *l460<http://svn.apache.org/**viewvc/roller/trunk/app/pom.**
>>>>>>>>>>>>> xml?revision=1511052&view=**markup#l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>>>>>>>>>>> [4] <http://svn.apache.org/viewvc/****<http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>> ********roller/trunk/app/src/******<http://svn.apache.org/**
>>>>>>>>>>>>> viewvc/********roller/trunk/**app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>>> main/****<http://svn.apache.****org/viewvc/******roller/trunk/*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> app/src/main/****<http://svn.**apache.org/viewvc/********
>>>>>>>>>>>>> roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>>>> **>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/****roller/trunk/**app/****
>>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/****roller/trunk/*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> app/src/main/**<http://svn.**apache.org/viewvc/****roller/**
>>>>>>>>>>>>> trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>> <http://svn.apache.org/********viewvc/**roller/trunk/app/src/**
>>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>>> ****main/**<http://svn.apache.**org/****viewvc/**roller/trunk/*
>>>>>>>>>>>>> *app/src/****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/**
>>>>>>>>>>>>> app/src/**main/**<http://svn.**apache.org/**viewvc/**roller/**
>>>>>>>>>>>>> trunk/app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/app/****
>>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>>> app/**
>>>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/*
>>>>>>>>>>>>> *src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>> java/org/apache/roller/************weblogger/config/****
>>>>>>>>>>>>> WebloggerConfig.java?revision=
>>>>>>>>>>>>> **1491090&view=markup<http://**********svn.apache.org/viewvc/**
>>>>>>>>>>>>> ** <http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>> roller/**** <http://svn.apache.org/viewvc/****roller/****<http://svn.apache.org/viewvc/**roller/****>
>>>>>>>>>>>>> <http://svn.**apache.org/viewvc/roller/****<http://svn.apache.org/viewvc/roller/****>
>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>
>>>>>>>>>>>>> http://svn.apache.**org/****viewvc/roller/**<http://svn.**
>>>>>>>>>>>>> apache.org/viewvc/roller/**<ht**tp://svn.apache.org/viewvc/**
>>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/roller/**>>
>>>>>>>>>>>>> trunk/app/src/main/java/org/**********apache/roller/weblogger/*
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> config/WebloggerConfig.java?**********revision=1491090&view=***
>>>>>>>>>>>>> ***
>>>>>>>>>>>>> markup<h**
>>>>>>>>>>>>>
>>>>>>>>>>>>> ttp://svn.apache.org/viewvc/********roller/trunk/app/src/main/*
>>>>>>>>>>>>> ***<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/**>
>>>>>>>>>>>>> <http://svn.apache.org/**viewvc/****roller/trunk/app/**
>>>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>> **<http://svn.apache.org/**viewvc/****roller/trunk/app/**
>>>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>>> **>
>>>>>>>>>>>>> java/org/apache/roller/********weblogger/config/**
>>>>>>>>>>>>> WebloggerConfig.java?revision=********1491090&view=markup<**
>>>>>>>>>>>>> http:/**
>>>>>>>>>>>>> /**
>>>>>>>>>>>>> svn.apache.org/viewvc/roller/******trunk/app/src/main/java/**
>>>>>>>>>>>>> org/****<http://svn.apache.org/viewvc/roller/****trunk/app/src/main/java/org/****>
>>>>>>>>>>>>> <http://svn.apache.**org/viewvc/roller/**trunk/app/**
>>>>>>>>>>>>> src/main/java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>>>>> apache/roller/weblogger/******config/WebloggerConfig.java?**
>>>>>>>>>>>>>
>>>>>>>>>>>>> revision=1491090&view=markup<**h**ttp://svn.apache.org/**
>>>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>> roller/trunk/app/src/main/****java/org/apache/roller/**
>>>>>>>>>>>>> weblogger/config/****WebloggerConfig.java?revision=****
>>>>>>>>>>>>> 1491090&view=markup<http://**svn.apache.org/viewvc/roller/**
>>>>>>>>>>>>> trunk/app/src/main/java/org/**apache/roller/weblogger/**
>>>>>>>>>>>>> config/WebloggerConfig.java?**revision=1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>>>>>>>>>>> http://**svn.apache.org/**********viewvc/roller/**trunk/app/**
>>>>>>>>>>>>>> src/**<http://svn.apache.org/********viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>>>> ******<http://svn.apache.org/********viewvc/roller/**trunk/**
>>>>>>>>>>>>>> app/src/******<http://svn.apache.org/******viewvc/roller/**trunk/app/src/******>
>>>>>>>>>>>>>> <http://svn.apache.org/********viewvc/roller/**trunk/app/**<http://svn.apache.org/******viewvc/roller/**trunk/app/**>
>>>>>>>>>>>>>> src/****<http://svn.apache.**org/****viewvc/roller/**trunk/**
>>>>>>>>>>>>>> app/src/****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>>>> <http://svn.apache.org/********viewvc/roller/**trunk/app/src/*
>>>>>>>>>>>>>> ***<http://svn.apache.org/******viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ****<http://svn.apache.org/******viewvc/roller/**trunk/app/**
>>>>>>>>>>>>>> src/****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>>>> <http://svn.apache.org/******viewvc/roller/**trunk/app/src/**
>>>>>>>>>>>>>> ****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>>>> <http://svn.apache.org/****viewvc/roller/**trunk/app/src/****<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>>>> main/java/org/**<http://svn.********apache.org/viewvc/roller/*
>>>>>>>>>>>>>> ****** <http://apache.org/viewvc/roller/*****>
>>>>>>>>>>>>>> * <http://apache.org/viewvc/**roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>>>>> <
>>>>>>>>>>>>>> http://apache.org/viewvc/****roller/****<http://apache.org/viewvc/**roller/****>
>>>>>>>>>>>>>> <http://apache.org/**viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>>>> trunk/app/src/main/java/org/********<http://svn.apache.org/**
>>>>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/****<http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>>> roller/**trunk/app/src/main/******java/org/**<http://svn.**
>>>>>>>>>>>>>> apache. <http://svn.apache.>**
>>>>>>>>>>>>>> org/viewvc/roller/**trunk/app/****src/main/java/org/**<http://
>>>>>>>>>>>>>> **svn.apache.org/viewvc/roller/***
>>>>>>>>>>>>>> *trunk/app/src/main/java/org/****<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>>>>>> **>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>      apache/roller/weblogger/**********
>>>>>>>>>>>>>> **config/WebloggerConfig.java?********
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>    **view=markup<
>>>>>>>>>>>>>>
>>>>>>>>>>>>> http://svn.apache.**org/********viewvc/roller/trunk/app/**
>>>>>>>>>>>>> src/main/java/org/apache/**********roller/weblogger/config/**
>>>>>>>>>>>>> WebloggerConfig.java?view=**********markup<http://svn.apache.**
>>>>>>>>>>>>> **
>>>>>>>>>>>>>
>>>>>>>>>>>>> org/**** <http://svn.apache.org/****><h**ttp://svn.apache.<http://svn.apache.>
>>>>>>>>>>>>> **org/**<http**://svn.apache.org/** <http://svn.apache.org/**>>
>>>>>>>>>>>>> viewvc/roller/trunk/app/src/********main/java/org/apache/**
>>>>>>>>>>>>> roller/**
>>>>>>>>>>>>> **
>>>>>>>>>>>>> weblogger/config/********WebloggerConfig.java?view=******
>>>>>>>>>>>>> **markup<
>>>>>>>>>>>>> http://svn.apache.org/******viewvc/roller/trunk/app/src/**<http://svn.apache.org/****viewvc/roller/trunk/app/src/**>
>>>>>>>>>>>>> **<http://svn.apache.org/****viewvc/roller/trunk/app/src/**<http://svn.apache.org/**viewvc/roller/trunk/app/src/**>
>>>>>>>>>>>>> **>
>>>>>>>>>>>>> main/java/org/apache/roller/******weblogger/config/**
>>>>>>>>>>>>>
>>>>>>>>>>>>> WebloggerConfig.java?view=******markup<http://svn.apache.org/**
>>>>>>>>>>>>> ** <http://svn.apache.org/**>
>>>>>>>>>>>>> viewvc/roller/trunk/app/src/****main/java/org/apache/roller/**
>>>>>>>>>>>>> weblogger/config/****WebloggerConfig.java?view=****markup<
>>>>>>>>>>>>> http://svn.apache.org/**viewvc/roller/trunk/app/src/**
>>>>>>>>>>>>> main/java/org/apache/roller/**weblogger/config/**
>>>>>>>>>>>>> WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>>>>>>>>>> I'd like to do the same thing with Apache JSPWiki, modify our
>>>>>>>>>>>>> own
>>>>>>>>>>>>> PropertyReader.java to accept a new jspwiki-custom.properties
>>>>>>>>>>>>> file.
>>>>>>>>>>>>> Also,
>>>>>>>>>>>>> to get rid of the mostly forgotten and empty
>>>>>>>>>>>>> /ini/default_jspwiki.****
>>>>>>>>>>>>> properties
>>>>>>>>>>>>>
>>>>>>>>>>>>> and put whatever default values there into jspwiki.properties
>>>>>>>>>>>>> (unless
>>>>>>>>>>>>> where
>>>>>>>>>>>>> the latter has already overridden those properties.)  Basically,
>>>>>>>>>>>>> jspwiki.properties will assume the role of
>>>>>>>>>>>>> default_jspwiki.properties
>>>>>>>>>>>>> and
>>>>>>>>>>>>> we'll have a new optional jspwiki-custom.properties that will
>>>>>>>>>>>>> not
>>>>>>>>>>>>> be
>>>>>>>>>>>>> in
>>>>>>>>>>>>> the
>>>>>>>>>>>>> WAR at all (you don't want to have it in the WAR as it would get
>>>>>>>>>>>>> read
>>>>>>>>>>>>> over
>>>>>>>>>>>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>>>>>>>>>>>> jspwiki-custom.properties in the WAR you'd just use
>>>>>>>>>>>>> jspwiki.properties
>>>>>>>>>>>>> anyway.)  Backwards compatibility would not be an issue, as
>>>>>>>>>>>>> you'd
>>>>>>>>>>>>> just
>>>>>>>>>>>>> take
>>>>>>>>>>>>> your jspwiki.properties file from the old WAR and can still
>>>>>>>>>>>>> insert it
>>>>>>>>>>>>> into
>>>>>>>>>>>>> the new WAR or just rename it jspwiki-custom.properties and put
>>>>>>>>>>>>> it on
>>>>>>>>>>>>> the
>>>>>>>>>>>>> external classpath. WDYT?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>> Glen
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>


Re: Switch to Apache Roller-style properties configuration?

Posted by Harry Metske <ha...@gmail.com>.
Glen,

I know how the PropertyReader works right now.
I first started testing the stuff without heaving read the code at all.
After not getting it to work I checked the code and discovered this
behavior.
I found it odd that the default custom property file is loaded via
classloading, and that if you specify another name it is loaded via direct
file reading.
Loading propfiles from the classpath requires write access to a location
that's on the classpath, that is positive (more secure) negative (less
flexible).
When running multiple wiki's in the same AppServer I find classloading
configuration more convenient than specifying file paths.
It simply depends on the usage scenario and also is a matter of personal
preference.

kind regards,
Harry



On 14 August 2013 22:06, Glen Mazza <gl...@gmail.com> wrote:

> I don't think so, you're reading too far down in the code, *just* above
> that segment is where the default "jspwiki-custom.properties" file is read,
> and there we indeed use config_class.**getResourceAsStream (just like
> Roller).
>
> Where you're reading, is in the case when someone explicitly configures
> the "jspwiki.custom.config" system property (like here for Roller:
> http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**
> revision=1513320&view=markup#**l448<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1513320&view=markup#l448>)
> to use another file name besides "jspwiki-custom.properties".  In that
> case, there's zero guarantee that that file is part of the classpath,
> indeed the file is anywhere the user specifies, so java.io.File is more
> appropriate then.
>
> Glen
>
>
> On 08/14/2013 03:51 PM, Harry Metske wrote:
>
>> Glenn,
>>
>> currently the custom property file is loaded as a java.io.File. I had
>> expected (and preferred) classloading of the file, like the below patch.
>> WDYT ?
>>
>> regards,
>> Harry
>>
>>
>> Index: jspwiki-war/src/main/java/org/**apache/wiki/PropertyReader.**java
>> IDEA additional info:
>> Subsystem: com.intellij.openapi.diff.**impl.patch.CharsetEP
>> <+>UTF-8
>> ==============================**==============================**=======
>> --- jspwiki-war/src/main/java/org/**apache/wiki/PropertyReader.**java
>> (revision
>> 1513997)
>> +++ jspwiki-war/src/main/java/org/**apache/wiki/PropertyReader.**java
>> (revision
>> )
>> @@ -124,7 +124,7 @@
>>               else
>>               {
>>                   context.log(PARAM_PROPERTYFILE + " defined, using " +
>> propertyFile + " as the custom properties file.");
>> -                propertyStream = new FileInputStream( new
>> File(propertyFile) );
>> +                propertyStream = config_class.**getResourceAsStream("/"
>> +
>> propertyFile );
>>               }
>>
>>               Properties props = getDefaultProperties();
>>
>>
>> On 9 August 2013 09:50, Harry Metske <ha...@gmail.com> wrote:
>>
>>  Glen,
>>>
>>> thanks, looks good.
>>> I will do some testing too if time permits the coming week.
>>>
>>> regards,
>>> Harry
>>>
>>>
>>>
>>> On 9 August 2013 00:27, Glen Mazza <gl...@gmail.com> wrote:
>>>
>>>  Hi All,
>>>>
>>>> OK, converted.  Main issue was that I had to move jspwiki.properties out
>>>> of the WEB-INF folder and into to src/main/resources/ini (where the
>>>> default_jspwiki.properties, now incorporated into jspwiki.properties,
>>>> used
>>>> to be.) I believe it was because certain bootstrapping classes don't
>>>> have
>>>> access to the WEB-INF folder.  (I didn't research the matter much,
>>>> seeing
>>>> how Roller also places it in their roller.jar and not the WEB-INF
>>>> folder of
>>>> the roller WAR.)
>>>>
>>>> Right now, in my tomcat/lib folder I have this tiny
>>>> jspwiki-custom.properties file:
>>>>
>>>> jspwiki.applicationName = SampleApp
>>>> jspwiki.xmlGroupDatabaseFile = /home/gmazza/groupdatabase.xml
>>>> jspwiki.xmlUserDatabaseFile = /home/gmazza/userdatabase.xml
>>>> log4j.appender.FileLog.File = /home/gmazza/jspwikilog.log
>>>>
>>>> It seems to be working fine.  I can keep changing the WAR, the values
>>>> above override what's in jspwiki.properties and my user accounts don't
>>>> need
>>>> to be recreated anymore, as userdatabase.xml is read from the above file
>>>> and no longer from within the WAR.
>>>>
>>>> The Selenium tests will need conversion, I'll look at that next, but
>>>> even
>>>> before the change only about half the tests were working.  Let me know
>>>> of
>>>> any hiccups that occur.
>>>>
>>>> Regards,
>>>> Glen
>>>>
>>>>
>>>> On 08/08/2013 11:10 AM, Juan Pablo Santos Rodríguez wrote:
>>>>
>>>>  Hi,
>>>>>
>>>>> I was thinking in existing users who might be using this feature, but
>>>>> just
>>>>> realised that simlpy using -Djspwiki.custom.config for the same file
>>>>> would
>>>>> be equally valid, so I'm +1 on your approach
>>>>>
>>>>>
>>>>> br,
>>>>> juan pablo
>>>>>
>>>>> On Thu, Aug 8, 2013 at 2:43 PM, Glen Mazza <gl...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>   Umm, I really would *not* want to go that route, there's no practical
>>>>>
>>>>>> benefit to providing both options (never has been on Roller for over a
>>>>>> decade now), it would raise unnecessary confusion among users, and it
>>>>>> would
>>>>>> be cumbersome to code.
>>>>>>
>>>>>> With my proposed change, you are never going to alter the
>>>>>> jspwiki.properties file again (unless you manually go in and tweak it,
>>>>>> which you should never need to do anyway).  You can only override it
>>>>>> with
>>>>>> another file, with just those handful of values you wish to override.
>>>>>>   If
>>>>>> you don't override it, then jspwiki.properties in the WAR defaults.
>>>>>>
>>>>>> What I'm proposing is not just how Roller does things but precisely
>>>>>> how
>>>>>> Apache Karaf does too, you alter a custom file that overrides the
>>>>>> default,
>>>>>> and they leave a blunt comment in the default file to leave it alone
>>>>>> and
>>>>>> alter the custom file instead.
>>>>>>
>>>>>> Glen
>>>>>>
>>>>>>
>>>>>> On 08/08/2013 08:32 AM, Juan Pablo Santos Rodríguez wrote:
>>>>>>
>>>>>>   Hi,
>>>>>>
>>>>>>> one quick note, if I recall correctly, "-Djspwiki.propertyfile" is
>>>>>>> used to
>>>>>>> load the main jspwiki.properties from outside the war, so it should
>>>>>>> be
>>>>>>> able
>>>>>>> to coexist with "-Djspwiki.custom.config", something like:
>>>>>>>
>>>>>>> - jspwiki.properties, loaded first, from war (unless
>>>>>>> -Djspwiki.propertyfile
>>>>>>> is given)
>>>>>>> - jspwiki-custom.properties, loaded afterwards, from classpath
>>>>>>> (unless
>>>>>>> -Djspwiki.custom.config is given)
>>>>>>>
>>>>>>>
>>>>>>> br,
>>>>>>> juan pablo
>>>>>>>
>>>>>>> On Thu, Aug 8, 2013 at 2:14 PM, Glen Mazza <gl...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>    Yes, I like -Djspwiki.custom.config too.  I'll see what I can do
>>>>>>> for
>>>>>>>
>>>>>>>  logging.
>>>>>>>>
>>>>>>>> Glen
>>>>>>>>
>>>>>>>>
>>>>>>>> On 08/08/2013 08:01 AM, Harry Metske wrote:
>>>>>>>>
>>>>>>>>    Changing the propname to something else would not be a problem,
>>>>>>>>
>>>>>>>>       "-Djspwiki.custom.config" is fine.
>>>>>>>>> What I meant is that it should be very clear _how_ these things
>>>>>>>>> play
>>>>>>>>> together, both in documentation and logging.
>>>>>>>>>
>>>>>>>>> kind regards,
>>>>>>>>> Harry
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>     Yes, [#1] would be the [3] I mentioned below.  But would it be
>>>>>>>>> a
>>>>>>>>> problem
>>>>>>>>>
>>>>>>>>>   if I renamed our "-Djspwiki.propertyfile" setting to
>>>>>>>>>
>>>>>>>>>> "-Djspwiki.custom.**
>>>>>>>>>> **propertyfile"
>>>>>>>>>> (or "-Djspwiki.custom.config" similar to Roller) as it's
>>>>>>>>>> technically no
>>>>>>>>>> longer a replacement of the jspwiki.properties file (which will
>>>>>>>>>> always
>>>>>>>>>> be
>>>>>>>>>> in the WAR) but an overlay of it (same thing, so long as your
>>>>>>>>>> overlay
>>>>>>>>>> has a
>>>>>>>>>> value for every property in the jspwiki.properties file, which
>>>>>>>>>> current
>>>>>>>>>> -Djspwiki.propertyfiles have to do anyway as they fully replace
>>>>>>>>>> that
>>>>>>>>>> file.)
>>>>>>>>>>      I don't see this as a backwards compatibility issue as it's
>>>>>>>>>> just a
>>>>>>>>>> command-line setting.
>>>>>>>>>>
>>>>>>>>>> Glen
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>>>>>>>>>
>>>>>>>>>>     from an administration perspective (part of my daily live) I
>>>>>>>>>> consider
>>>>>>>>>>
>>>>>>>>>>   having configuration separate from binaries a must-have.
>>>>>>>>>>
>>>>>>>>>>> So +1 on this, it should get easier to deploy (the 100% same)
>>>>>>>>>>> JSPWiki.war
>>>>>>>>>>> everywhere and having a per-environment small "override" property
>>>>>>>>>>> file
>>>>>>>>>>> that
>>>>>>>>>>> adapts the JSPWiki instance to the environment.
>>>>>>>>>>> I would like to see proper logging on property handling so we can
>>>>>>>>>>> see
>>>>>>>>>>> which
>>>>>>>>>>> property gets loaded from where, and what the final property
>>>>>>>>>>> values
>>>>>>>>>>> are
>>>>>>>>>>> going to be active.
>>>>>>>>>>> (and, similar to what Ichiro already mentioned, it should play
>>>>>>>>>>> nice
>>>>>>>>>>> with
>>>>>>>>>>> JSPWiki System property mechanism, see [#1].
>>>>>>>>>>>
>>>>>>>>>>> [#1] https://issues.apache.org/**********jira/browse/JSPWIKI-568<https://issues.apache.org/********jira/browse/JSPWIKI-568>
>>>>>>>>>>> <ht**tps://issues.apache.org/********jira/browse/JSPWIKI-568<https://issues.apache.org/******jira/browse/JSPWIKI-568>
>>>>>>>>>>> >
>>>>>>>>>>> <http**s://issues.apache.org/********jira/browse/JSPWIKI-568<http://issues.apache.org/******jira/browse/JSPWIKI-568>
>>>>>>>>>>> <h**ttps://issues.apache.org/******jira/browse/JSPWIKI-568<https://issues.apache.org/****jira/browse/JSPWIKI-568>
>>>>>>>>>>> >
>>>>>>>>>>> <https:**//issues.apache.org/******jira/**browse/JSPWIKI-568<http://issues.apache.org/****jira/**browse/JSPWIKI-568>
>>>>>>>>>>> <h**ttp://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>> >
>>>>>>>>>>> <htt**ps://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>> <htt**ps://issues.apache.org/**jira/**browse/JSPWIKI-568<https://issues.apache.org/**jira/browse/JSPWIKI-568>
>>>>>>>>>>> >
>>>>>>>>>>> <https:**//issues.apache.org/******jira/**browse/JSPWIKI-568<http://issues.apache.org/****jira/**browse/JSPWIKI-568>
>>>>>>>>>>> <h**ttp://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>> >
>>>>>>>>>>> <htt**p://issues.apache.org/**jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/****browse/JSPWIKI-568>
>>>>>>>>>>> <ht**tp://issues.apache.org/jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>>> >
>>>>>>>>>>> <http**s://issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>>> <htt**p://issues.apache.org/jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>>> >
>>>>>>>>>>>
>>>>>>>>>>> <http**s://issues.apache.org/**jira/**browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>>> <http**s://issues.apache.org/jira/**browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>>>>>>>>> >
>>>>>>>>>>> kind regards,
>>>>>>>>>>> Harry
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>      Hi Team,
>>>>>>>>>>>
>>>>>>>>>>>    Apache Roller maintains two configuration files, a
>>>>>>>>>>>
>>>>>>>>>>>  roller.properties[1]
>>>>>>>>>>>> which sits within the war, filled with defaults and never needs
>>>>>>>>>>>> modification (although a user can alter it if he wishes, it will
>>>>>>>>>>>> work),
>>>>>>>>>>>> and
>>>>>>>>>>>> a roller-custom.properties file[2] which is placed in the
>>>>>>>>>>>> classpath
>>>>>>>>>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss
>>>>>>>>>>>> or
>>>>>>>>>>>> GlassFish.)  For any value you put in roller-custom.properties,
>>>>>>>>>>>> it
>>>>>>>>>>>> will
>>>>>>>>>>>> overwrite what is in roller.properties in the WAR.  So you only
>>>>>>>>>>>> need
>>>>>>>>>>>> the
>>>>>>>>>>>> values in the custom file that you're actually overriding,
>>>>>>>>>>>> making
>>>>>>>>>>>> it
>>>>>>>>>>>> very
>>>>>>>>>>>> short and simple.  And if you don't use a
>>>>>>>>>>>> roller-custom.properties,
>>>>>>>>>>>> all
>>>>>>>>>>>> of
>>>>>>>>>>>> the defaults in the WAR will prevail.
>>>>>>>>>>>>
>>>>>>>>>>>> You can keep deploying new versions of Roller.war to your
>>>>>>>>>>>> servlet
>>>>>>>>>>>> container while never needing to re-configure either
>>>>>>>>>>>> roller.properties
>>>>>>>>>>>> or
>>>>>>>>>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>>>>>>>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>>>>>>>>>> automatically
>>>>>>>>>>>> is used--this is very convenient during development when the
>>>>>>>>>>>> WARs
>>>>>>>>>>>> frequently get updated.  Same with JUnit and Selenium testing,
>>>>>>>>>>>> we
>>>>>>>>>>>> don't
>>>>>>>>>>>> alter the roller.properties but just place the
>>>>>>>>>>>> roller-custom.properties[2]
>>>>>>>>>>>> in the test classpath under src/test/resources (if you have
>>>>>>>>>>>> multiple
>>>>>>>>>>>> config
>>>>>>>>>>>> files, you can change the custom file name via setting a system
>>>>>>>>>>>> property[3]).  All this is handled by the WebloggerConfig[4]
>>>>>>>>>>>> class,
>>>>>>>>>>>> which
>>>>>>>>>>>> first reads in roller.properties and the overwrites any values
>>>>>>>>>>>> from
>>>>>>>>>>>> roller-custom.properties.
>>>>>>>>>>>>
>>>>>>>>>>>> [1] http://svn.apache.org/viewvc/*****<http://svn.apache.org/viewvc/***>
>>>>>>>>>>>> *******roller/trunk/app/src/****<http://svn.apache.org/viewvc/*
>>>>>>>>>>>> *********roller/trunk/app/src/****<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> main/****<http://svn.apache.****org/viewvc/******roller/trunk/*
>>>>>>>>>>>> ***
>>>>>>>>>>>> app/src/main/****<http://svn.**apache.org/viewvc/********
>>>>>>>>>>>> roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>>> **>
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/****roller/trunk/**app/****
>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/****roller/trunk/*
>>>>>>>>>>>> ***
>>>>>>>>>>>> app/src/main/**<http://svn.**apache.org/viewvc/****roller/**
>>>>>>>>>>>> trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.org/********viewvc/**roller/trunk/app/src/**
>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>> ****main/**<http://svn.apache.**org/****viewvc/**roller/trunk/*
>>>>>>>>>>>> *app/src/****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/**
>>>>>>>>>>>> app/src/**main/**<http://svn.**apache.org/**viewvc/**roller/**
>>>>>>>>>>>> trunk/app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/app/****
>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>> app/**
>>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/*
>>>>>>>>>>>> *src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> resources/org/apache/roller/************weblogger/config/**
>>>>>>>>>>>> roller.**
>>>>>>>>>>>> **
>>>>>>>>>>>> properties?view=markup<http://**********svn.apache.org/viewvc/*
>>>>>>>>>>>> ***** <http://svn.apache.org/viewvc/****>
>>>>>>>>>>>> ** <http://svn.apache.org/viewvc/******<http://svn.apache.org/viewvc/****>
>>>>>>>>>>>> >
>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/******roller/**<http://svn.apache.org/viewvc/****roller/**>
>>>>>>>>>>>> <http://svn.**apache.org/viewvc/**roller/**<http://svn.apache.org/viewvc/**roller/**>
>>>>>>>>>>>> >
>>>>>>>>>>>>
>>>>>>>>>>>>> <
>>>>>>>>>>>>>
>>>>>>>>>>>> http://svn.apache.**org/****viewvc/roller/**<http://svn.**
>>>>>>>>>>>> apache.org/viewvc/roller/**<ht**tp://svn.apache.org/viewvc/**
>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/roller/**>>
>>>>>>>>>>>> trunk/app/src/main/resources/**********org/apache/roller/**
>>>>>>>>>>>> weblogger/****
>>>>>>>>>>>> config/roller.properties?view=**********markup<http://svn.****
>>>>>>>>>>>> apache.<http://svn.apache.>
>>>>>>>>>>>> ****
>>>>>>>>>>>> org/viewvc/roller/trunk/app/********src/main/resources/org/**
>>>>>>>>>>>> apache/****
>>>>>>>>>>>> roller/weblogger/config/********roller.properties?view=markup<*
>>>>>>>>>>>> *****
>>>>>>>>>>>>
>>>>>>>>>>>> http://svn.apache.org/viewvc/******roller/trunk/app/src/main/**
>>>>>>>>>>>> **<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>> <http://svn.apache.org/**viewvc/**roller/trunk/app/src/**
>>>>>>>>>>>> main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> resources/org/apache/roller/******weblogger/config/roller.**
>>>>>>>>>>>> properties?view=markup<http://****svn.apache.org/viewvc/**
>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>> trunk/app/src/main/resources/****org/apache/roller/weblogger/**
>>>>>>>>>>>> **
>>>>>>>>>>>> config/roller.properties?view=****markup<http://svn.apache.**
>>>>>>>>>>>> org/viewvc/roller/trunk/app/**src/main/resources/org/apache/**
>>>>>>>>>>>> roller/weblogger/config/**roller.properties?view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>>>>>>>>> >
>>>>>>>>>>>>
>>>>>>>>>>>>> <
>>>>>>>>>>>>>
>>>>>>>>>>>>>    http://svn.apache.org/viewvc/***
>>>>>>>>>>>>> *********roller/trunk/app/src/****<http://svn.apache.org/viewvc/**********roller/trunk/app/src/**>
>>>>>>>>>>>>> <http://svn.apache.org/**viewvc/********roller/trunk/**
>>>>>>>>>>>>> app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>>> >
>>>>>>>>>>>>>
>>>>>>>>>>>>>  main/****<http://svn.apache.****
>>>>>>>>>>>> org/viewvc/******roller/trunk/****
>>>>>>>>>>>> app/src/main/****<http://svn.**apache.org/viewvc/********
>>>>>>>>>>>> roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>>> **>
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/****roller/trunk/**app/****
>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/****roller/trunk/*
>>>>>>>>>>>> ***
>>>>>>>>>>>> app/src/main/**<http://svn.**apache.org/viewvc/****roller/**
>>>>>>>>>>>> trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.org/********viewvc/**roller/trunk/app/src/**
>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>> ****main/**<http://svn.apache.**org/****viewvc/**roller/trunk/*
>>>>>>>>>>>> *app/src/****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/**
>>>>>>>>>>>> app/src/**main/**<http://svn.**apache.org/**viewvc/**roller/**
>>>>>>>>>>>> trunk/app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/app/****
>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>> app/**
>>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/*
>>>>>>>>>>>> *src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> resources/org/apache/roller/************weblogger/config/**
>>>>>>>>>>>> roller.**
>>>>>>>>>>>> **
>>>>>>>>>>>> properties?revision=1511052&************view=markup<http://**
>>>>>>>>>>>> svn. <http://svn.>***
>>>>>>>>>>>> ***
>>>>>>>>>>>> apache.<http://svn.apache.>
>>>>>>>>>>>> **
>>>>>>>>>>>> org/viewvc/roller/trunk/app/**********src/main/resources/org/**
>>>>>>>>>>>> **
>>>>>>>>>>>> apache/****
>>>>>>>>>>>> roller/weblogger/config/**********roller.properties?revision=**
>>>>>>>>>>>> **
>>>>>>>>>>>> 1511052&view=markup<http://******s**vn.apache.org/viewvc/**
>>>>>>>>>>>> roller/** <http://vn.apache.org/viewvc/**roller/**<http://vn.apache.org/viewvc/roller/**>
>>>>>>>>>>>> ><
>>>>>>>>>>>>
>>>>>>>>>>>> http://svn.apache.**org/**viewvc/roller/**<http://svn.**
>>>>>>>>>>>> apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> trunk/app/src/main/resources/********org/apache/roller/**
>>>>>>>>>>>> weblogger/****
>>>>>>>>>>>> config/roller.properties?********revision=1511052&view=markup<*
>>>>>>>>>>>> ***h**
>>>>>>>>>>>>
>>>>>>>>>>>> ttp://svn.apache.org/viewvc/******roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>> **<http://svn.apache.org/viewvc/**
>>>>>>>>>>>> **roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>> **>
>>>>>>>>>>>> resources/org/apache/roller/******weblogger/config/roller.**
>>>>>>>>>>>> properties?revision=1511052&******view=markup<http://svn.**
>>>>>>>>>>>> apache. <http://svn.apache.>**
>>>>>>>>>>>> org/viewvc/roller/trunk/app/****src/main/resources/org/apache/*
>>>>>>>>>>>> ***
>>>>>>>>>>>> roller/weblogger/config/****roller.properties?revision=**
>>>>>>>>>>>> 1511052&view=markup<http://**svn.apache.org/viewvc/roller/**
>>>>>>>>>>>> trunk/app/src/main/resources/**org/apache/roller/weblogger/**
>>>>>>>>>>>> config/roller.properties?**revision=1511052&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>>>>>>>>>> >
>>>>>>>>>>>> [2] http://svn.apache.org/viewvc/*****<http://svn.apache.org/viewvc/***>
>>>>>>>>>>>> *******roller/trunk/app/src/****<http://svn.apache.org/viewvc/*
>>>>>>>>>>>> *********roller/trunk/app/src/****<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> test/****<http://svn.apache.****org/viewvc/******roller/trunk/*
>>>>>>>>>>>> ***
>>>>>>>>>>>> app/src/test/****<http://svn.**apache.org/viewvc/********
>>>>>>>>>>>> roller/trunk/app/src/test/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/test/****>
>>>>>>>>>>>> **>
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/****roller/trunk/**app/****
>>>>>>>>>>>> src/test/**<http://svn.apache.****org/viewvc/****roller/trunk/*
>>>>>>>>>>>> ***
>>>>>>>>>>>> app/src/test/**<http://svn.**apache.org/viewvc/****roller/**
>>>>>>>>>>>> trunk/app/src/test/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.org/********viewvc/**roller/trunk/app/src/**
>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>> ****test/**<http://svn.apache.**org/****viewvc/**roller/trunk/*
>>>>>>>>>>>> *app/src/****test/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****test/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/**
>>>>>>>>>>>> app/src/**test/**<http://svn.**apache.org/**viewvc/**roller/**
>>>>>>>>>>>> trunk/app/src/**test/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**test/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/app/****
>>>>>>>>>>>> src/test/**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>> app/**
>>>>>>>>>>>> src/test/**<http://svn.apache.**org/viewvc/**roller/trunk/app/*
>>>>>>>>>>>> *src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> resources/roller-custom.************properties?view=log<http:/*
>>>>>>>>>>>> */****
>>>>>>>>>>>> svn.apache.org/viewvc/roller/**********trunk/app/src/test/**<http://svn.apache.org/viewvc/roller/********trunk/app/src/test/**>
>>>>>>>>>>>> <h**ttp://svn.apache.org/viewvc/**roller/******trunk/app/src/**
>>>>>>>>>>>> test/**<http://svn.apache.org/viewvc/roller/******trunk/app/src/test/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> resources/****<http://svn.**ap**ache.org/viewvc/roller/******<http://apache.org/viewvc/roller/******>
>>>>>>>>>>>> trunk/app/src/test/resources/********<http://svn.apache.org/**
>>>>>>>>>>>> viewvc/roller/****trunk/app/**src/test/resources/****<http://svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/****>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.**apache.org/****viewvc/roller/****<http://apache.org/**viewvc/roller/****>
>>>>>>>>>>>> <http://**apache.org/viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>> >
>>>>>>>>>>>> trunk/app/src/test/resources/********<http://svn.apache.org/**
>>>>>>>>>>>> viewvc/roller/**trunk/app/src/****test/resources/**<http://**
>>>>>>>>>>>> svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/*
>>>>>>>>>>>> ***<http://svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> roller-custom.properties?view=**********log<http://svn.apache.*
>>>>>>>>>>>> ***
>>>>>>>>>>>>
>>>>>>>>>>>> org/**** <http://svn.apache.org/****><h**ttp://svn.apache.<http://svn.apache.>
>>>>>>>>>>>> **org/**<http**://svn.apache.org/** <http://svn.apache.org/**>>
>>>>>>>>>>>> viewvc/roller/trunk/app/src/********test/resources/roller-**
>>>>>>>>>>>> custom.****
>>>>>>>>>>>> properties?view=log<http://****s**vn.apache.org/viewvc/**
>>>>>>>>>>>> roller/** <http://vn.apache.org/viewvc/roller/**><
>>>>>>>>>>>> http://svn.apache.**org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> trunk/app/src/test/resources/******roller-custom.properties?**
>>>>>>>>>>>> view=**log<http://svn.apache.****org/viewvc/roller/trunk/app/**
>>>>>>>>>>>> **
>>>>>>>>>>>> src/test/resources/roller-****custom.properties?view=log<htt**
>>>>>>>>>>>> p://svn.apache.org/viewvc/**roller/trunk/app/src/test/**
>>>>>>>>>>>> resources/roller-custom.**properties?view=log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>>>>>>>>>> >
>>>>>>>>>>>> [3] http://svn.apache.org/viewvc/***
>>>>>>>>>>>> *********roller/trunk/app/pom.***<http://svn.apache.org/viewvc/**********roller/trunk/app/pom.*>
>>>>>>>>>>>> *xml?**<http://svn.apache.org/**viewvc/********roller/trunk/**
>>>>>>>>>>>> app/pom.xml?**<http://svn.apache.org/viewvc/********roller/trunk/app/pom.xml?**>
>>>>>>>>>>>> >
>>>>>>>>>>>> ** <http://svn.apache.org/viewvc/**
>>>>>>>>>>>> ********roller/trunk/app/pom.****<http://svn.apache.org/viewvc/********roller/trunk/app/pom.**>
>>>>>>>>>>>> xml?**<http://svn.apache.org/**viewvc/******roller/trunk/app/**
>>>>>>>>>>>> pom.xml?**<http://svn.apache.org/viewvc/******roller/trunk/app/pom.xml?**>
>>>>>>>>>>>> >
>>>>>>>>>>>>
>>>>>>>>>>>>> <
>>>>>>>>>>>>>
>>>>>>>>>>>> http://svn.apache.org/******viewvc/****roller/trunk/app/******<http://svn.apache.org/****viewvc/****roller/trunk/app/****>
>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/**viewvc/****roller/trunk/**
>>>>>>>>>>>> app/**pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>>>> app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>>>>> >
>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/****roller/trunk/app/****
>>>>>>>>>>>> ** <http://svn.apache.org/****viewvc/****roller/trunk/app/****>
>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/**viewvc/****roller/trunk/**
>>>>>>>>>>>> app/**pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>>>> app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/app/****
>>>>>>>>>>>> pom.xml?**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>> app/**
>>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>>>> pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>>>>>>>>>> >
>>>>>>>>>>>> revision=1511052&view=markup#************l460<http://svn.**
>>>>>>>>>>>> apache. <http://svn.apache.>**
>>>>>>>>>>>> **
>>>>>>>>>>>> org/**** <http://svn.apache.org/****><**h**ttp://svn.apache.<
>>>>>>>>>>>> http://**svn.apache <http://svn.apache>.>
>>>>>>>>>>>> **org/**<http**://svn.apache.**org/**<http://svn.apache.org/**><
>>>>>>>>>>>> http://svn.apache.org/**>>
>>>>>>>>>>>> viewvc/roller/trunk/app/pom.**********xml?revision=1511052&**
>>>>>>>>>>>> view=**
>>>>>>>>>>>> ******
>>>>>>>>>>>> markup#l460<http://svn.apache.********org/viewvc/roller/trunk/*
>>>>>>>>>>>> ***
>>>>>>>>>>>> app/****
>>>>>>>>>>>> pom.xml?revision=1511052&view=********markup#l460<http://svn.**
>>>>>>>>>>>> **
>>>>>>>>>>>> apache.org/viewvc/roller/******trunk/app/pom.xml?revision=**<http://apache.org/viewvc/roller/****trunk/app/pom.xml?revision=**>
>>>>>>>>>>>> <**http://apache.org/viewvc/**roller/**trunk/app/pom.xml?**
>>>>>>>>>>>> revision=**<http://apache.org/viewvc/roller/**trunk/app/pom.xml?revision=**>
>>>>>>>>>>>> >
>>>>>>>>>>>> 1511052&view=markup#l460<http:****//svn.apache.org/viewvc/**
>>>>>>>>>>>> roller/trunk/app/pom.xml?****revision=1511052&view=markup#***
>>>>>>>>>>>> *l460<http://svn.apache.org/**viewvc/roller/trunk/app/pom.**
>>>>>>>>>>>> xml?revision=1511052&view=**markup#l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>>>>>>>>>> >
>>>>>>>>>>>> [4] <http://svn.apache.org/viewvc/****<http://svn.apache.org/viewvc/**>
>>>>>>>>>>>> ********roller/trunk/app/src/******<http://svn.apache.org/**
>>>>>>>>>>>> viewvc/********roller/trunk/**app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> main/****<http://svn.apache.****org/viewvc/******roller/trunk/*
>>>>>>>>>>>> ***
>>>>>>>>>>>> app/src/main/****<http://svn.**apache.org/viewvc/********
>>>>>>>>>>>> roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>>> **>
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/****roller/trunk/**app/****
>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/****roller/trunk/*
>>>>>>>>>>>> ***
>>>>>>>>>>>> app/src/main/**<http://svn.**apache.org/viewvc/****roller/**
>>>>>>>>>>>> trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.org/********viewvc/**roller/trunk/app/src/**
>>>>>>>>>>>> **<http://svn.apache.org/******viewvc/**roller/trunk/app/src/**>
>>>>>>>>>>>> ****main/**<http://svn.apache.**org/****viewvc/**roller/trunk/*
>>>>>>>>>>>> *app/src/****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/**
>>>>>>>>>>>> app/src/**main/**<http://svn.**apache.org/**viewvc/**roller/**
>>>>>>>>>>>> trunk/app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> <http://svn.apache.**org/****viewvc/**roller/trunk/app/****
>>>>>>>>>>>> src/main/**<http://svn.apache.****org/viewvc/**roller/trunk/**
>>>>>>>>>>>> app/**
>>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/*
>>>>>>>>>>>> *src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> java/org/apache/roller/************weblogger/config/****
>>>>>>>>>>>> WebloggerConfig.java?revision=
>>>>>>>>>>>> **1491090&view=markup<http://**********svn.apache.org/viewvc/**
>>>>>>>>>>>> ** <http://svn.apache.org/viewvc/**>
>>>>>>>>>>>> roller/**** <http://svn.apache.org/viewvc/****roller/****<http://svn.apache.org/viewvc/**roller/****>
>>>>>>>>>>>> <http://svn.**apache.org/viewvc/roller/****<http://svn.apache.org/viewvc/roller/****>
>>>>>>>>>>>> >
>>>>>>>>>>>>
>>>>>>>>>>>>> <
>>>>>>>>>>>>>
>>>>>>>>>>>> http://svn.apache.**org/****viewvc/roller/**<http://svn.**
>>>>>>>>>>>> apache.org/viewvc/roller/**<ht**tp://svn.apache.org/viewvc/**
>>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/roller/**>>
>>>>>>>>>>>> trunk/app/src/main/java/org/**********apache/roller/weblogger/*
>>>>>>>>>>>> ***
>>>>>>>>>>>> config/WebloggerConfig.java?**********revision=1491090&view=***
>>>>>>>>>>>> ***
>>>>>>>>>>>> markup<h**
>>>>>>>>>>>>
>>>>>>>>>>>> ttp://svn.apache.org/viewvc/********roller/trunk/app/src/main/*
>>>>>>>>>>>> ***<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/**>
>>>>>>>>>>>> <http://svn.apache.org/**viewvc/****roller/trunk/app/**
>>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> **<http://svn.apache.org/**viewvc/****roller/trunk/app/**
>>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> **>
>>>>>>>>>>>> java/org/apache/roller/********weblogger/config/**
>>>>>>>>>>>> WebloggerConfig.java?revision=********1491090&view=markup<**
>>>>>>>>>>>> http:/**
>>>>>>>>>>>> /**
>>>>>>>>>>>> svn.apache.org/viewvc/roller/******trunk/app/src/main/java/**
>>>>>>>>>>>> org/****<http://svn.apache.org/viewvc/roller/****trunk/app/src/main/java/org/****>
>>>>>>>>>>>> <http://svn.apache.**org/viewvc/roller/**trunk/app/**
>>>>>>>>>>>> src/main/java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>>>> >
>>>>>>>>>>>> apache/roller/weblogger/******config/WebloggerConfig.java?**
>>>>>>>>>>>>
>>>>>>>>>>>> revision=1491090&view=markup<**h**ttp://svn.apache.org/**
>>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/**>
>>>>>>>>>>>> roller/trunk/app/src/main/****java/org/apache/roller/**
>>>>>>>>>>>> weblogger/config/****WebloggerConfig.java?revision=****
>>>>>>>>>>>> 1491090&view=markup<http://**svn.apache.org/viewvc/roller/**
>>>>>>>>>>>> trunk/app/src/main/java/org/**apache/roller/weblogger/**
>>>>>>>>>>>> config/WebloggerConfig.java?**revision=1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>>>>>>>>> >
>>>>>>>>>>>>
>>>>>>>>>>>>> http://**svn.apache.org/**********viewvc/roller/**trunk/app/**
>>>>>>>>>>>>> src/**<http://svn.apache.org/********viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>>> ******<http://svn.apache.org/********viewvc/roller/**trunk/**
>>>>>>>>>>>>> app/src/******<http://svn.apache.org/******viewvc/roller/**trunk/app/src/******>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <http://svn.apache.org/********viewvc/roller/**trunk/app/**<http://svn.apache.org/******viewvc/roller/**trunk/app/**>
>>>>>>>>>>>>> src/****<http://svn.apache.**org/****viewvc/roller/**trunk/**
>>>>>>>>>>>>> app/src/****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <http://svn.apache.org/********viewvc/roller/**trunk/app/src/*
>>>>>>>>>>>>> ***<http://svn.apache.org/******viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>>>
>>>>>>>>>>>>> ****<http://svn.apache.org/******viewvc/roller/**trunk/app/**
>>>>>>>>>>>>> src/****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> <http://svn.apache.org/******viewvc/roller/**trunk/app/src/**
>>>>>>>>>>>>> ****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>>> <http://svn.apache.org/****viewvc/roller/**trunk/app/src/****<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> main/java/org/**<http://svn.********apache.org/viewvc/roller/*
>>>>>>>>>>>>> ****** <http://apache.org/viewvc/roller/*****>
>>>>>>>>>>>>> * <http://apache.org/viewvc/**roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>>> ><
>>>>>>>>>>>>> http://apache.org/viewvc/****roller/****<http://apache.org/viewvc/**roller/****>
>>>>>>>>>>>>> <http://apache.org/**viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> trunk/app/src/main/java/org/********<http://svn.apache.org/**
>>>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/****<http://svn.apache.org/viewvc/**>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> roller/**trunk/app/src/main/******java/org/**<http://svn.**
>>>>>>>>>>>>> apache. <http://svn.apache.>**
>>>>>>>>>>>>> org/viewvc/roller/**trunk/app/****src/main/java/org/**<http://
>>>>>>>>>>>>> **svn.apache.org/viewvc/roller/***
>>>>>>>>>>>>> *trunk/app/src/main/java/org/****<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>>>>> >
>>>>>>>>>>>>> **>
>>>>>>>>>>>>>
>>>>>>>>>>>>>     apache/roller/weblogger/**********
>>>>>>>>>>>>> **config/WebloggerConfig.java?********
>>>>>>>>>>>>> **
>>>>>>>>>>>>>
>>>>>>>>>>>>>   **view=markup<
>>>>>>>>>>>>>
>>>>>>>>>>>> http://svn.apache.**org/********viewvc/roller/trunk/app/**
>>>>>>>>>>>> src/main/java/org/apache/**********roller/weblogger/config/**
>>>>>>>>>>>> WebloggerConfig.java?view=**********markup<http://svn.apache.**
>>>>>>>>>>>> **
>>>>>>>>>>>>
>>>>>>>>>>>> org/**** <http://svn.apache.org/****><h**ttp://svn.apache.<http://svn.apache.>
>>>>>>>>>>>> **org/**<http**://svn.apache.org/** <http://svn.apache.org/**>>
>>>>>>>>>>>> viewvc/roller/trunk/app/src/********main/java/org/apache/**
>>>>>>>>>>>> roller/**
>>>>>>>>>>>> **
>>>>>>>>>>>> weblogger/config/********WebloggerConfig.java?view=******
>>>>>>>>>>>> **markup<
>>>>>>>>>>>> http://svn.apache.org/******viewvc/roller/trunk/app/src/**<http://svn.apache.org/****viewvc/roller/trunk/app/src/**>
>>>>>>>>>>>> **<http://svn.apache.org/****viewvc/roller/trunk/app/src/**<http://svn.apache.org/**viewvc/roller/trunk/app/src/**>
>>>>>>>>>>>> **>
>>>>>>>>>>>> main/java/org/apache/roller/******weblogger/config/**
>>>>>>>>>>>>
>>>>>>>>>>>> WebloggerConfig.java?view=******markup<http://svn.apache.org/**
>>>>>>>>>>>> ** <http://svn.apache.org/**>
>>>>>>>>>>>> viewvc/roller/trunk/app/src/****main/java/org/apache/roller/**
>>>>>>>>>>>> weblogger/config/****WebloggerConfig.java?view=****markup<
>>>>>>>>>>>> http://svn.apache.org/**viewvc/roller/trunk/app/src/**
>>>>>>>>>>>> main/java/org/apache/roller/**weblogger/config/**
>>>>>>>>>>>> WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>>>>>>>>> >
>>>>>>>>>>>> I'd like to do the same thing with Apache JSPWiki, modify our
>>>>>>>>>>>> own
>>>>>>>>>>>> PropertyReader.java to accept a new jspwiki-custom.properties
>>>>>>>>>>>> file.
>>>>>>>>>>>> Also,
>>>>>>>>>>>> to get rid of the mostly forgotten and empty
>>>>>>>>>>>> /ini/default_jspwiki.****
>>>>>>>>>>>> properties
>>>>>>>>>>>>
>>>>>>>>>>>> and put whatever default values there into jspwiki.properties
>>>>>>>>>>>> (unless
>>>>>>>>>>>> where
>>>>>>>>>>>> the latter has already overridden those properties.)  Basically,
>>>>>>>>>>>> jspwiki.properties will assume the role of
>>>>>>>>>>>> default_jspwiki.properties
>>>>>>>>>>>> and
>>>>>>>>>>>> we'll have a new optional jspwiki-custom.properties that will
>>>>>>>>>>>> not
>>>>>>>>>>>> be
>>>>>>>>>>>> in
>>>>>>>>>>>> the
>>>>>>>>>>>> WAR at all (you don't want to have it in the WAR as it would get
>>>>>>>>>>>> read
>>>>>>>>>>>> over
>>>>>>>>>>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>>>>>>>>>>> jspwiki-custom.properties in the WAR you'd just use
>>>>>>>>>>>> jspwiki.properties
>>>>>>>>>>>> anyway.)  Backwards compatibility would not be an issue, as
>>>>>>>>>>>> you'd
>>>>>>>>>>>> just
>>>>>>>>>>>> take
>>>>>>>>>>>> your jspwiki.properties file from the old WAR and can still
>>>>>>>>>>>> insert it
>>>>>>>>>>>> into
>>>>>>>>>>>> the new WAR or just rename it jspwiki-custom.properties and put
>>>>>>>>>>>> it on
>>>>>>>>>>>> the
>>>>>>>>>>>> external classpath. WDYT?
>>>>>>>>>>>>
>>>>>>>>>>>> Regards,
>>>>>>>>>>>> Glen
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>

Re: Switch to Apache Roller-style properties configuration?

Posted by Glen Mazza <gl...@gmail.com>.
I don't think so, you're reading too far down in the code, *just* above 
that segment is where the default "jspwiki-custom.properties" file is 
read, and there we indeed use config_class.getResourceAsStream (just 
like Roller).

Where you're reading, is in the case when someone explicitly configures 
the "jspwiki.custom.config" system property (like here for Roller: 
http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1513320&view=markup#l448) 
to use another file name besides "jspwiki-custom.properties".  In that 
case, there's zero guarantee that that file is part of the classpath, 
indeed the file is anywhere the user specifies, so java.io.File is more 
appropriate then.

Glen

On 08/14/2013 03:51 PM, Harry Metske wrote:
> Glenn,
>
> currently the custom property file is loaded as a java.io.File. I had
> expected (and preferred) classloading of the file, like the below patch.
> WDYT ?
>
> regards,
> Harry
>
>
> Index: jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java
> IDEA additional info:
> Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
> <+>UTF-8
> ===================================================================
> --- jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java (revision
> 1513997)
> +++ jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java (revision
> )
> @@ -124,7 +124,7 @@
>               else
>               {
>                   context.log(PARAM_PROPERTYFILE + " defined, using " +
> propertyFile + " as the custom properties file.");
> -                propertyStream = new FileInputStream( new
> File(propertyFile) );
> +                propertyStream = config_class.getResourceAsStream("/" +
> propertyFile );
>               }
>
>               Properties props = getDefaultProperties();
>
>
> On 9 August 2013 09:50, Harry Metske <ha...@gmail.com> wrote:
>
>> Glen,
>>
>> thanks, looks good.
>> I will do some testing too if time permits the coming week.
>>
>> regards,
>> Harry
>>
>>
>>
>> On 9 August 2013 00:27, Glen Mazza <gl...@gmail.com> wrote:
>>
>>> Hi All,
>>>
>>> OK, converted.  Main issue was that I had to move jspwiki.properties out
>>> of the WEB-INF folder and into to src/main/resources/ini (where the
>>> default_jspwiki.properties, now incorporated into jspwiki.properties, used
>>> to be.) I believe it was because certain bootstrapping classes don't have
>>> access to the WEB-INF folder.  (I didn't research the matter much, seeing
>>> how Roller also places it in their roller.jar and not the WEB-INF folder of
>>> the roller WAR.)
>>>
>>> Right now, in my tomcat/lib folder I have this tiny
>>> jspwiki-custom.properties file:
>>>
>>> jspwiki.applicationName = SampleApp
>>> jspwiki.xmlGroupDatabaseFile = /home/gmazza/groupdatabase.xml
>>> jspwiki.xmlUserDatabaseFile = /home/gmazza/userdatabase.xml
>>> log4j.appender.FileLog.File = /home/gmazza/jspwikilog.log
>>>
>>> It seems to be working fine.  I can keep changing the WAR, the values
>>> above override what's in jspwiki.properties and my user accounts don't need
>>> to be recreated anymore, as userdatabase.xml is read from the above file
>>> and no longer from within the WAR.
>>>
>>> The Selenium tests will need conversion, I'll look at that next, but even
>>> before the change only about half the tests were working.  Let me know of
>>> any hiccups that occur.
>>>
>>> Regards,
>>> Glen
>>>
>>>
>>> On 08/08/2013 11:10 AM, Juan Pablo Santos Rodríguez wrote:
>>>
>>>> Hi,
>>>>
>>>> I was thinking in existing users who might be using this feature, but
>>>> just
>>>> realised that simlpy using -Djspwiki.custom.config for the same file
>>>> would
>>>> be equally valid, so I'm +1 on your approach
>>>>
>>>>
>>>> br,
>>>> juan pablo
>>>>
>>>> On Thu, Aug 8, 2013 at 2:43 PM, Glen Mazza <gl...@gmail.com> wrote:
>>>>
>>>>   Umm, I really would *not* want to go that route, there's no practical
>>>>> benefit to providing both options (never has been on Roller for over a
>>>>> decade now), it would raise unnecessary confusion among users, and it
>>>>> would
>>>>> be cumbersome to code.
>>>>>
>>>>> With my proposed change, you are never going to alter the
>>>>> jspwiki.properties file again (unless you manually go in and tweak it,
>>>>> which you should never need to do anyway).  You can only override it
>>>>> with
>>>>> another file, with just those handful of values you wish to override.
>>>>>   If
>>>>> you don't override it, then jspwiki.properties in the WAR defaults.
>>>>>
>>>>> What I'm proposing is not just how Roller does things but precisely how
>>>>> Apache Karaf does too, you alter a custom file that overrides the
>>>>> default,
>>>>> and they leave a blunt comment in the default file to leave it alone and
>>>>> alter the custom file instead.
>>>>>
>>>>> Glen
>>>>>
>>>>>
>>>>> On 08/08/2013 08:32 AM, Juan Pablo Santos Rodríguez wrote:
>>>>>
>>>>>   Hi,
>>>>>> one quick note, if I recall correctly, "-Djspwiki.propertyfile" is
>>>>>> used to
>>>>>> load the main jspwiki.properties from outside the war, so it should be
>>>>>> able
>>>>>> to coexist with "-Djspwiki.custom.config", something like:
>>>>>>
>>>>>> - jspwiki.properties, loaded first, from war (unless
>>>>>> -Djspwiki.propertyfile
>>>>>> is given)
>>>>>> - jspwiki-custom.properties, loaded afterwards, from classpath (unless
>>>>>> -Djspwiki.custom.config is given)
>>>>>>
>>>>>>
>>>>>> br,
>>>>>> juan pablo
>>>>>>
>>>>>> On Thu, Aug 8, 2013 at 2:14 PM, Glen Mazza <gl...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>    Yes, I like -Djspwiki.custom.config too.  I'll see what I can do for
>>>>>>
>>>>>>> logging.
>>>>>>>
>>>>>>> Glen
>>>>>>>
>>>>>>>
>>>>>>> On 08/08/2013 08:01 AM, Harry Metske wrote:
>>>>>>>
>>>>>>>    Changing the propname to something else would not be a problem,
>>>>>>>
>>>>>>>>      "-Djspwiki.custom.config" is fine.
>>>>>>>> What I meant is that it should be very clear _how_ these things play
>>>>>>>> together, both in documentation and logging.
>>>>>>>>
>>>>>>>> kind regards,
>>>>>>>> Harry
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>     Yes, [#1] would be the [3] I mentioned below.  But would it be a
>>>>>>>> problem
>>>>>>>>
>>>>>>>>   if I renamed our "-Djspwiki.propertyfile" setting to
>>>>>>>>> "-Djspwiki.custom.**
>>>>>>>>> **propertyfile"
>>>>>>>>> (or "-Djspwiki.custom.config" similar to Roller) as it's
>>>>>>>>> technically no
>>>>>>>>> longer a replacement of the jspwiki.properties file (which will
>>>>>>>>> always
>>>>>>>>> be
>>>>>>>>> in the WAR) but an overlay of it (same thing, so long as your
>>>>>>>>> overlay
>>>>>>>>> has a
>>>>>>>>> value for every property in the jspwiki.properties file, which
>>>>>>>>> current
>>>>>>>>> -Djspwiki.propertyfiles have to do anyway as they fully replace that
>>>>>>>>> file.)
>>>>>>>>>      I don't see this as a backwards compatibility issue as it's
>>>>>>>>> just a
>>>>>>>>> command-line setting.
>>>>>>>>>
>>>>>>>>> Glen
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>>>>>>>>
>>>>>>>>>     from an administration perspective (part of my daily live) I
>>>>>>>>> consider
>>>>>>>>>
>>>>>>>>>   having configuration separate from binaries a must-have.
>>>>>>>>>> So +1 on this, it should get easier to deploy (the 100% same)
>>>>>>>>>> JSPWiki.war
>>>>>>>>>> everywhere and having a per-environment small "override" property
>>>>>>>>>> file
>>>>>>>>>> that
>>>>>>>>>> adapts the JSPWiki instance to the environment.
>>>>>>>>>> I would like to see proper logging on property handling so we can
>>>>>>>>>> see
>>>>>>>>>> which
>>>>>>>>>> property gets loaded from where, and what the final property values
>>>>>>>>>> are
>>>>>>>>>> going to be active.
>>>>>>>>>> (and, similar to what Ichiro already mentioned, it should play nice
>>>>>>>>>> with
>>>>>>>>>> JSPWiki System property mechanism, see [#1].
>>>>>>>>>>
>>>>>>>>>> [#1] https://issues.apache.org/********jira/browse/JSPWIKI-568<https://issues.apache.org/******jira/browse/JSPWIKI-568>
>>>>>>>>>> <http**s://issues.apache.org/******jira/browse/JSPWIKI-568<https://issues.apache.org/****jira/browse/JSPWIKI-568>
>>>>>>>>>> <https:**//issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>> <htt**ps://issues.apache.org/**jira/**browse/JSPWIKI-568<https://issues.apache.org/**jira/browse/JSPWIKI-568>
>>>>>>>>>> <https:**//issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>>> <htt**p://issues.apache.org/jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>> <http**s://issues.apache.org/**jira/**browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>>> <http**s://issues.apache.org/jira/**browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>>>>>>>> kind regards,
>>>>>>>>>> Harry
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>      Hi Team,
>>>>>>>>>>
>>>>>>>>>>    Apache Roller maintains two configuration files, a
>>>>>>>>>>
>>>>>>>>>>> roller.properties[1]
>>>>>>>>>>> which sits within the war, filled with defaults and never needs
>>>>>>>>>>> modification (although a user can alter it if he wishes, it will
>>>>>>>>>>> work),
>>>>>>>>>>> and
>>>>>>>>>>> a roller-custom.properties file[2] which is placed in the
>>>>>>>>>>> classpath
>>>>>>>>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
>>>>>>>>>>> GlassFish.)  For any value you put in roller-custom.properties, it
>>>>>>>>>>> will
>>>>>>>>>>> overwrite what is in roller.properties in the WAR.  So you only
>>>>>>>>>>> need
>>>>>>>>>>> the
>>>>>>>>>>> values in the custom file that you're actually overriding, making
>>>>>>>>>>> it
>>>>>>>>>>> very
>>>>>>>>>>> short and simple.  And if you don't use a
>>>>>>>>>>> roller-custom.properties,
>>>>>>>>>>> all
>>>>>>>>>>> of
>>>>>>>>>>> the defaults in the WAR will prevail.
>>>>>>>>>>>
>>>>>>>>>>> You can keep deploying new versions of Roller.war to your servlet
>>>>>>>>>>> container while never needing to re-configure either
>>>>>>>>>>> roller.properties
>>>>>>>>>>> or
>>>>>>>>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>>>>>>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>>>>>>>>> automatically
>>>>>>>>>>> is used--this is very convenient during development when the WARs
>>>>>>>>>>> frequently get updated.  Same with JUnit and Selenium testing, we
>>>>>>>>>>> don't
>>>>>>>>>>> alter the roller.properties but just place the
>>>>>>>>>>> roller-custom.properties[2]
>>>>>>>>>>> in the test classpath under src/test/resources (if you have
>>>>>>>>>>> multiple
>>>>>>>>>>> config
>>>>>>>>>>> files, you can change the custom file name via setting a system
>>>>>>>>>>> property[3]).  All this is handled by the WebloggerConfig[4]
>>>>>>>>>>> class,
>>>>>>>>>>> which
>>>>>>>>>>> first reads in roller.properties and the overwrites any values
>>>>>>>>>>> from
>>>>>>>>>>> roller-custom.properties.
>>>>>>>>>>>
>>>>>>>>>>> [1] http://svn.apache.org/viewvc/***
>>>>>>>>>>> *******roller/trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>> main/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>>>> app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>>> app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>>>> ****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>>>> app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>> resources/org/apache/roller/**********weblogger/config/roller.**
>>>>>>>>>>> **
>>>>>>>>>>> properties?view=markup<http://********svn.apache.org/viewvc/****
>>>>>>>>>>> ** <http://svn.apache.org/viewvc/****>
>>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/****roller/**<http://svn.apache.org/viewvc/**roller/**>
>>>>>>>>>>>> <
>>>>>>>>>>> http://svn.apache.**org/**viewvc/roller/**<http://svn.**
>>>>>>>>>>> apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>> trunk/app/src/main/resources/********org/apache/roller/**
>>>>>>>>>>> weblogger/****
>>>>>>>>>>> config/roller.properties?view=********markup<http://svn.**apache.<http://svn.apache.>
>>>>>>>>>>> ****
>>>>>>>>>>> org/viewvc/roller/trunk/app/******src/main/resources/org/**
>>>>>>>>>>> apache/****
>>>>>>>>>>> roller/weblogger/config/******roller.properties?view=markup<****
>>>>>>>>>>> http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>> resources/org/apache/roller/****weblogger/config/roller.**
>>>>>>>>>>> properties?view=markup<http://**svn.apache.org/viewvc/roller/**
>>>>>>>>>>> trunk/app/src/main/resources/**org/apache/roller/weblogger/**
>>>>>>>>>>> config/roller.properties?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>>>>>>>>> <
>>>>>>>>>>>>
>>>>>>>>>>>>    http://svn.apache.org/viewvc/**********roller/trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>>
>>>>>>>>>>> main/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>>>> app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>>> app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>>>> ****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>>>> app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>> resources/org/apache/roller/**********weblogger/config/roller.**
>>>>>>>>>>> **
>>>>>>>>>>> properties?revision=1511052&**********view=markup<http://svn.***
>>>>>>>>>>> ***
>>>>>>>>>>> apache.<http://svn.apache.>
>>>>>>>>>>> **
>>>>>>>>>>> org/viewvc/roller/trunk/app/********src/main/resources/org/**
>>>>>>>>>>> apache/****
>>>>>>>>>>> roller/weblogger/config/********roller.properties?revision=**
>>>>>>>>>>> 1511052&view=markup<http://****s**vn.apache.org/viewvc/**
>>>>>>>>>>> roller/** <http://vn.apache.org/viewvc/roller/**><
>>>>>>>>>>> http://svn.apache.**org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>> trunk/app/src/main/resources/******org/apache/roller/**
>>>>>>>>>>> weblogger/****
>>>>>>>>>>> config/roller.properties?******revision=1511052&view=markup<**h**
>>>>>>>>>>> ttp://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>> resources/org/apache/roller/****weblogger/config/roller.**
>>>>>>>>>>> properties?revision=1511052&****view=markup<http://svn.apache.**
>>>>>>>>>>> org/viewvc/roller/trunk/app/**src/main/resources/org/apache/**
>>>>>>>>>>> roller/weblogger/config/**roller.properties?revision=**
>>>>>>>>>>> 1511052&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>>>>>>>>> [2] http://svn.apache.org/viewvc/***
>>>>>>>>>>> *******roller/trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>> test/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>>>> app/src/test/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/test/****>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>>> src/test/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>>> app/src/test/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**>
>>>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>>>> ****test/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****test/**>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>>>> app/src/**test/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**test/**>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>>>> src/test/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>>> src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>>>>>>>> resources/roller-custom.**********properties?view=log<http://****
>>>>>>>>>>> svn.apache.org/viewvc/roller/********trunk/app/src/test/**<http://svn.apache.org/viewvc/roller/******trunk/app/src/test/**>
>>>>>>>>>>> resources/****<http://svn.**apache.org/viewvc/roller/******
>>>>>>>>>>> trunk/app/src/test/resources/******<http://svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/****>
>>>>>>>>>>> <http://svn.**apache.org/**viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>> trunk/app/src/test/resources/******<http://svn.apache.org/**
>>>>>>>>>>> viewvc/roller/**trunk/app/src/**test/resources/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**>
>>>>>>>>>>> roller-custom.properties?view=********log<http://svn.apache.**
>>>>>>>>>>> org/**** <http://svn.apache.org/****><http://svn.apache.**org/**<http://svn.apache.org/**>
>>>>>>>>>>> viewvc/roller/trunk/app/src/******test/resources/roller-**
>>>>>>>>>>> custom.****
>>>>>>>>>>> properties?view=log<http://**s**vn.apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>> trunk/app/src/test/resources/****roller-custom.properties?**
>>>>>>>>>>> view=**log<http://svn.apache.**org/viewvc/roller/trunk/app/**
>>>>>>>>>>> src/test/resources/roller-**custom.properties?view=log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>>>>>>>>> [3] http://svn.apache.org/viewvc/**********roller/trunk/app/pom.*
>>>>>>>>>>> *xml?**<http://svn.apache.org/viewvc/********roller/trunk/app/pom.xml?**>
>>>>>>>>>>> ** <http://svn.apache.org/viewvc/********roller/trunk/app/pom.**
>>>>>>>>>>> xml?**<http://svn.apache.org/viewvc/******roller/trunk/app/pom.xml?**>
>>>>>>>>>>>> <
>>>>>>>>>>> http://svn.apache.org/****viewvc/****roller/trunk/app/****
>>>>>>>>>>> pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>>>> **<http://svn.apache.org/****viewvc/****roller/trunk/app/****
>>>>>>>>>>> pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>>> pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>>>>>>>>> revision=1511052&view=markup#**********l460<http://svn.apache.**
>>>>>>>>>>> **
>>>>>>>>>>> org/**** <http://svn.apache.org/****><h**ttp://svn.apache.<http://svn.apache.>
>>>>>>>>>>> **org/**<http**://svn.apache.org/** <http://svn.apache.org/**>>
>>>>>>>>>>> viewvc/roller/trunk/app/pom.********xml?revision=1511052&view=**
>>>>>>>>>>> ******
>>>>>>>>>>> markup#l460<http://svn.apache.******org/viewvc/roller/trunk/**
>>>>>>>>>>> app/****
>>>>>>>>>>> pom.xml?revision=1511052&view=******markup#l460<http://svn.**
>>>>>>>>>>> apache.org/viewvc/roller/****trunk/app/pom.xml?revision=**<http://apache.org/viewvc/roller/**trunk/app/pom.xml?revision=**>
>>>>>>>>>>> 1511052&view=markup#l460<http:**//svn.apache.org/viewvc/**
>>>>>>>>>>> roller/trunk/app/pom.xml?**revision=1511052&view=markup#**l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>>>>>>>>> [4] <http://svn.apache.org/viewvc/**
>>>>>>>>>>> ********roller/trunk/app/src/****<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>> main/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>>>> app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>>> app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>>>> ****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>>>> app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>> java/org/apache/roller/**********weblogger/config/****
>>>>>>>>>>> WebloggerConfig.java?revision=
>>>>>>>>>>> **1491090&view=markup<http://********svn.apache.org/viewvc/**
>>>>>>>>>>> roller/**** <http://svn.apache.org/viewvc/**roller/****<http://svn.apache.org/viewvc/roller/****>
>>>>>>>>>>>> <
>>>>>>>>>>> http://svn.apache.**org/**viewvc/roller/**<http://svn.**
>>>>>>>>>>> apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>>> trunk/app/src/main/java/org/********apache/roller/weblogger/**
>>>>>>>>>>> config/WebloggerConfig.java?********revision=1491090&view=****
>>>>>>>>>>> markup<h**
>>>>>>>>>>>
>>>>>>>>>>> ttp://svn.apache.org/viewvc/******roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>>> **<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>>> **>
>>>>>>>>>>> java/org/apache/roller/******weblogger/config/**
>>>>>>>>>>> WebloggerConfig.java?revision=******1491090&view=markup<http:/**
>>>>>>>>>>> /**
>>>>>>>>>>> svn.apache.org/viewvc/roller/****trunk/app/src/main/java/org/****<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>>> apache/roller/weblogger/****config/WebloggerConfig.java?**
>>>>>>>>>>> revision=1491090&view=markup<h**ttp://svn.apache.org/viewvc/**
>>>>>>>>>>> roller/trunk/app/src/main/**java/org/apache/roller/**
>>>>>>>>>>> weblogger/config/**WebloggerConfig.java?revision=**
>>>>>>>>>>> 1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>>>>>>>>> http://**svn.apache.org/********viewvc/roller/**trunk/app/src/**
>>>>>>>>>>>> ******<http://svn.apache.org/******viewvc/roller/**trunk/app/src/******>
>>>>>>>>>>>> <http://svn.apache.org/******viewvc/roller/**trunk/app/**
>>>>>>>>>>>> src/****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>> <http://svn.apache.org/******viewvc/roller/**trunk/app/src/**
>>>>>>>>>>>> ****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>>> <http://svn.apache.org/****viewvc/roller/**trunk/app/src/****<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>>> main/java/org/**<http://svn.******apache.org/viewvc/roller/*****
>>>>>>>>>>>> * <http://apache.org/viewvc/roller/****><
>>>>>>>>>>>> http://apache.org/viewvc/**roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>>> trunk/app/src/main/java/org/******<http://svn.apache.org/**
>>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/**>
>>>>>>>>>>>> roller/**trunk/app/src/main/****java/org/**<http://svn.apache.**
>>>>>>>>>>>> org/viewvc/roller/**trunk/app/**src/main/java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>>>> **>
>>>>>>>>>>>>
>>>>>>>>>>>>     apache/roller/weblogger/********
>>>>>>>>>>>> **config/WebloggerConfig.java?******
>>>>>>>>>>>> **
>>>>>>>>>>>>
>>>>>>>>>>>>   **view=markup<
>>>>>>>>>>> http://svn.apache.**org/******viewvc/roller/trunk/app/**
>>>>>>>>>>> src/main/java/org/apache/********roller/weblogger/config/**
>>>>>>>>>>> WebloggerConfig.java?view=********markup<http://svn.apache.**
>>>>>>>>>>> org/**** <http://svn.apache.org/****><http://svn.apache.**org/**<http://svn.apache.org/**>
>>>>>>>>>>> viewvc/roller/trunk/app/src/******main/java/org/apache/roller/**
>>>>>>>>>>> **
>>>>>>>>>>> weblogger/config/******WebloggerConfig.java?view=******markup<
>>>>>>>>>>> http://svn.apache.org/****viewvc/roller/trunk/app/src/**<http://svn.apache.org/**viewvc/roller/trunk/app/src/**>
>>>>>>>>>>> main/java/org/apache/roller/****weblogger/config/**
>>>>>>>>>>> WebloggerConfig.java?view=****markup<http://svn.apache.org/**
>>>>>>>>>>> viewvc/roller/trunk/app/src/**main/java/org/apache/roller/**
>>>>>>>>>>> weblogger/config/**WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>>>>>>>> I'd like to do the same thing with Apache JSPWiki, modify our own
>>>>>>>>>>> PropertyReader.java to accept a new jspwiki-custom.properties
>>>>>>>>>>> file.
>>>>>>>>>>> Also,
>>>>>>>>>>> to get rid of the mostly forgotten and empty
>>>>>>>>>>> /ini/default_jspwiki.****
>>>>>>>>>>> properties
>>>>>>>>>>>
>>>>>>>>>>> and put whatever default values there into jspwiki.properties
>>>>>>>>>>> (unless
>>>>>>>>>>> where
>>>>>>>>>>> the latter has already overridden those properties.)  Basically,
>>>>>>>>>>> jspwiki.properties will assume the role of
>>>>>>>>>>> default_jspwiki.properties
>>>>>>>>>>> and
>>>>>>>>>>> we'll have a new optional jspwiki-custom.properties that will not
>>>>>>>>>>> be
>>>>>>>>>>> in
>>>>>>>>>>> the
>>>>>>>>>>> WAR at all (you don't want to have it in the WAR as it would get
>>>>>>>>>>> read
>>>>>>>>>>> over
>>>>>>>>>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>>>>>>>>>> jspwiki-custom.properties in the WAR you'd just use
>>>>>>>>>>> jspwiki.properties
>>>>>>>>>>> anyway.)  Backwards compatibility would not be an issue, as you'd
>>>>>>>>>>> just
>>>>>>>>>>> take
>>>>>>>>>>> your jspwiki.properties file from the old WAR and can still
>>>>>>>>>>> insert it
>>>>>>>>>>> into
>>>>>>>>>>> the new WAR or just rename it jspwiki-custom.properties and put
>>>>>>>>>>> it on
>>>>>>>>>>> the
>>>>>>>>>>> external classpath. WDYT?
>>>>>>>>>>>
>>>>>>>>>>> Regards,
>>>>>>>>>>> Glen
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>


Re: Switch to Apache Roller-style properties configuration?

Posted by Harry Metske <ha...@gmail.com>.
Glenn,

currently the custom property file is loaded as a java.io.File. I had
expected (and preferred) classloading of the file, like the below patch.
WDYT ?

regards,
Harry


Index: jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java (revision
1513997)
+++ jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java (revision
)
@@ -124,7 +124,7 @@
             else
             {
                 context.log(PARAM_PROPERTYFILE + " defined, using " +
propertyFile + " as the custom properties file.");
-                propertyStream = new FileInputStream( new
File(propertyFile) );
+                propertyStream = config_class.getResourceAsStream("/" +
propertyFile );
             }

             Properties props = getDefaultProperties();


On 9 August 2013 09:50, Harry Metske <ha...@gmail.com> wrote:

> Glen,
>
> thanks, looks good.
> I will do some testing too if time permits the coming week.
>
> regards,
> Harry
>
>
>
> On 9 August 2013 00:27, Glen Mazza <gl...@gmail.com> wrote:
>
>> Hi All,
>>
>> OK, converted.  Main issue was that I had to move jspwiki.properties out
>> of the WEB-INF folder and into to src/main/resources/ini (where the
>> default_jspwiki.properties, now incorporated into jspwiki.properties, used
>> to be.) I believe it was because certain bootstrapping classes don't have
>> access to the WEB-INF folder.  (I didn't research the matter much, seeing
>> how Roller also places it in their roller.jar and not the WEB-INF folder of
>> the roller WAR.)
>>
>> Right now, in my tomcat/lib folder I have this tiny
>> jspwiki-custom.properties file:
>>
>> jspwiki.applicationName = SampleApp
>> jspwiki.xmlGroupDatabaseFile = /home/gmazza/groupdatabase.xml
>> jspwiki.xmlUserDatabaseFile = /home/gmazza/userdatabase.xml
>> log4j.appender.FileLog.File = /home/gmazza/jspwikilog.log
>>
>> It seems to be working fine.  I can keep changing the WAR, the values
>> above override what's in jspwiki.properties and my user accounts don't need
>> to be recreated anymore, as userdatabase.xml is read from the above file
>> and no longer from within the WAR.
>>
>> The Selenium tests will need conversion, I'll look at that next, but even
>> before the change only about half the tests were working.  Let me know of
>> any hiccups that occur.
>>
>> Regards,
>> Glen
>>
>>
>> On 08/08/2013 11:10 AM, Juan Pablo Santos Rodríguez wrote:
>>
>>> Hi,
>>>
>>> I was thinking in existing users who might be using this feature, but
>>> just
>>> realised that simlpy using -Djspwiki.custom.config for the same file
>>> would
>>> be equally valid, so I'm +1 on your approach
>>>
>>>
>>> br,
>>> juan pablo
>>>
>>> On Thu, Aug 8, 2013 at 2:43 PM, Glen Mazza <gl...@gmail.com> wrote:
>>>
>>>  Umm, I really would *not* want to go that route, there's no practical
>>>> benefit to providing both options (never has been on Roller for over a
>>>> decade now), it would raise unnecessary confusion among users, and it
>>>> would
>>>> be cumbersome to code.
>>>>
>>>> With my proposed change, you are never going to alter the
>>>> jspwiki.properties file again (unless you manually go in and tweak it,
>>>> which you should never need to do anyway).  You can only override it
>>>> with
>>>> another file, with just those handful of values you wish to override.
>>>>  If
>>>> you don't override it, then jspwiki.properties in the WAR defaults.
>>>>
>>>> What I'm proposing is not just how Roller does things but precisely how
>>>> Apache Karaf does too, you alter a custom file that overrides the
>>>> default,
>>>> and they leave a blunt comment in the default file to leave it alone and
>>>> alter the custom file instead.
>>>>
>>>> Glen
>>>>
>>>>
>>>> On 08/08/2013 08:32 AM, Juan Pablo Santos Rodríguez wrote:
>>>>
>>>>  Hi,
>>>>>
>>>>> one quick note, if I recall correctly, "-Djspwiki.propertyfile" is
>>>>> used to
>>>>> load the main jspwiki.properties from outside the war, so it should be
>>>>> able
>>>>> to coexist with "-Djspwiki.custom.config", something like:
>>>>>
>>>>> - jspwiki.properties, loaded first, from war (unless
>>>>> -Djspwiki.propertyfile
>>>>> is given)
>>>>> - jspwiki-custom.properties, loaded afterwards, from classpath (unless
>>>>> -Djspwiki.custom.config is given)
>>>>>
>>>>>
>>>>> br,
>>>>> juan pablo
>>>>>
>>>>> On Thu, Aug 8, 2013 at 2:14 PM, Glen Mazza <gl...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>   Yes, I like -Djspwiki.custom.config too.  I'll see what I can do for
>>>>>
>>>>>> logging.
>>>>>>
>>>>>> Glen
>>>>>>
>>>>>>
>>>>>> On 08/08/2013 08:01 AM, Harry Metske wrote:
>>>>>>
>>>>>>   Changing the propname to something else would not be a problem,
>>>>>>
>>>>>>>     "-Djspwiki.custom.config" is fine.
>>>>>>> What I meant is that it should be very clear _how_ these things play
>>>>>>> together, both in documentation and logging.
>>>>>>>
>>>>>>> kind regards,
>>>>>>> Harry
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>
>>>>>>>    Yes, [#1] would be the [3] I mentioned below.  But would it be a
>>>>>>> problem
>>>>>>>
>>>>>>>  if I renamed our "-Djspwiki.propertyfile" setting to
>>>>>>>> "-Djspwiki.custom.**
>>>>>>>> **propertyfile"
>>>>>>>> (or "-Djspwiki.custom.config" similar to Roller) as it's
>>>>>>>> technically no
>>>>>>>> longer a replacement of the jspwiki.properties file (which will
>>>>>>>> always
>>>>>>>> be
>>>>>>>> in the WAR) but an overlay of it (same thing, so long as your
>>>>>>>> overlay
>>>>>>>> has a
>>>>>>>> value for every property in the jspwiki.properties file, which
>>>>>>>> current
>>>>>>>> -Djspwiki.propertyfiles have to do anyway as they fully replace that
>>>>>>>> file.)
>>>>>>>>     I don't see this as a backwards compatibility issue as it's
>>>>>>>> just a
>>>>>>>> command-line setting.
>>>>>>>>
>>>>>>>> Glen
>>>>>>>>
>>>>>>>>
>>>>>>>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>>>>>>>
>>>>>>>>    from an administration perspective (part of my daily live) I
>>>>>>>> consider
>>>>>>>>
>>>>>>>>  having configuration separate from binaries a must-have.
>>>>>>>>> So +1 on this, it should get easier to deploy (the 100% same)
>>>>>>>>> JSPWiki.war
>>>>>>>>> everywhere and having a per-environment small "override" property
>>>>>>>>> file
>>>>>>>>> that
>>>>>>>>> adapts the JSPWiki instance to the environment.
>>>>>>>>> I would like to see proper logging on property handling so we can
>>>>>>>>> see
>>>>>>>>> which
>>>>>>>>> property gets loaded from where, and what the final property values
>>>>>>>>> are
>>>>>>>>> going to be active.
>>>>>>>>> (and, similar to what Ichiro already mentioned, it should play nice
>>>>>>>>> with
>>>>>>>>> JSPWiki System property mechanism, see [#1].
>>>>>>>>>
>>>>>>>>> [#1] https://issues.apache.org/********jira/browse/JSPWIKI-568<https://issues.apache.org/******jira/browse/JSPWIKI-568>
>>>>>>>>> <http**s://issues.apache.org/******jira/browse/JSPWIKI-568<https://issues.apache.org/****jira/browse/JSPWIKI-568>
>>>>>>>>> >
>>>>>>>>> <https:**//issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>> <htt**ps://issues.apache.org/**jira/**browse/JSPWIKI-568<https://issues.apache.org/**jira/browse/JSPWIKI-568>
>>>>>>>>> >
>>>>>>>>> <https:**//issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>>> <htt**p://issues.apache.org/jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>> >
>>>>>>>>> <http**s://issues.apache.org/**jira/**browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>>> <http**s://issues.apache.org/jira/**browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>>>>>>> >
>>>>>>>>> kind regards,
>>>>>>>>> Harry
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>     Hi Team,
>>>>>>>>>
>>>>>>>>>   Apache Roller maintains two configuration files, a
>>>>>>>>>
>>>>>>>>>> roller.properties[1]
>>>>>>>>>> which sits within the war, filled with defaults and never needs
>>>>>>>>>> modification (although a user can alter it if he wishes, it will
>>>>>>>>>> work),
>>>>>>>>>> and
>>>>>>>>>> a roller-custom.properties file[2] which is placed in the
>>>>>>>>>> classpath
>>>>>>>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
>>>>>>>>>> GlassFish.)  For any value you put in roller-custom.properties, it
>>>>>>>>>> will
>>>>>>>>>> overwrite what is in roller.properties in the WAR.  So you only
>>>>>>>>>> need
>>>>>>>>>> the
>>>>>>>>>> values in the custom file that you're actually overriding, making
>>>>>>>>>> it
>>>>>>>>>> very
>>>>>>>>>> short and simple.  And if you don't use a
>>>>>>>>>> roller-custom.properties,
>>>>>>>>>> all
>>>>>>>>>> of
>>>>>>>>>> the defaults in the WAR will prevail.
>>>>>>>>>>
>>>>>>>>>> You can keep deploying new versions of Roller.war to your servlet
>>>>>>>>>> container while never needing to re-configure either
>>>>>>>>>> roller.properties
>>>>>>>>>> or
>>>>>>>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>>>>>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>>>>>>>> automatically
>>>>>>>>>> is used--this is very convenient during development when the WARs
>>>>>>>>>> frequently get updated.  Same with JUnit and Selenium testing, we
>>>>>>>>>> don't
>>>>>>>>>> alter the roller.properties but just place the
>>>>>>>>>> roller-custom.properties[2]
>>>>>>>>>> in the test classpath under src/test/resources (if you have
>>>>>>>>>> multiple
>>>>>>>>>> config
>>>>>>>>>> files, you can change the custom file name via setting a system
>>>>>>>>>> property[3]).  All this is handled by the WebloggerConfig[4]
>>>>>>>>>> class,
>>>>>>>>>> which
>>>>>>>>>> first reads in roller.properties and the overwrites any values
>>>>>>>>>> from
>>>>>>>>>> roller-custom.properties.
>>>>>>>>>>
>>>>>>>>>> [1] http://svn.apache.org/viewvc/***
>>>>>>>>>> *******roller/trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>> main/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>>> app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>> app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>>> ****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>>> app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>> >
>>>>>>>>>> resources/org/apache/roller/**********weblogger/config/roller.**
>>>>>>>>>> **
>>>>>>>>>> properties?view=markup<http://********svn.apache.org/viewvc/****
>>>>>>>>>> ** <http://svn.apache.org/viewvc/****>
>>>>>>>>>> roller/** <http://svn.apache.org/viewvc/****roller/**<http://svn.apache.org/viewvc/**roller/**>
>>>>>>>>>> ><
>>>>>>>>>> http://svn.apache.**org/**viewvc/roller/**<http://svn.**
>>>>>>>>>> apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>> >
>>>>>>>>>> trunk/app/src/main/resources/********org/apache/roller/**
>>>>>>>>>> weblogger/****
>>>>>>>>>> config/roller.properties?view=********markup<http://svn.**apache.<http://svn.apache.>
>>>>>>>>>> ****
>>>>>>>>>> org/viewvc/roller/trunk/app/******src/main/resources/org/**
>>>>>>>>>> apache/****
>>>>>>>>>> roller/weblogger/config/******roller.properties?view=markup<****
>>>>>>>>>> http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>> resources/org/apache/roller/****weblogger/config/roller.**
>>>>>>>>>> properties?view=markup<http://**svn.apache.org/viewvc/roller/**
>>>>>>>>>> trunk/app/src/main/resources/**org/apache/roller/weblogger/**
>>>>>>>>>> config/roller.properties?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>>>>>>> >
>>>>>>>>>>
>>>>>>>>>>> <
>>>>>>>>>>>
>>>>>>>>>>>   http://svn.apache.org/viewvc/**********roller/trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>>
>>>>>>>>>> main/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>>> app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>> app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>>> ****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>>> app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>> >
>>>>>>>>>> resources/org/apache/roller/**********weblogger/config/roller.**
>>>>>>>>>> **
>>>>>>>>>> properties?revision=1511052&**********view=markup<http://svn.***
>>>>>>>>>> ***
>>>>>>>>>> apache.<http://svn.apache.>
>>>>>>>>>> **
>>>>>>>>>> org/viewvc/roller/trunk/app/********src/main/resources/org/**
>>>>>>>>>> apache/****
>>>>>>>>>> roller/weblogger/config/********roller.properties?revision=**
>>>>>>>>>> 1511052&view=markup<http://****s**vn.apache.org/viewvc/**
>>>>>>>>>> roller/** <http://vn.apache.org/viewvc/roller/**><
>>>>>>>>>> http://svn.apache.**org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>> >
>>>>>>>>>> trunk/app/src/main/resources/******org/apache/roller/**
>>>>>>>>>> weblogger/****
>>>>>>>>>> config/roller.properties?******revision=1511052&view=markup<**h**
>>>>>>>>>> ttp://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>> resources/org/apache/roller/****weblogger/config/roller.**
>>>>>>>>>> properties?revision=1511052&****view=markup<http://svn.apache.**
>>>>>>>>>> org/viewvc/roller/trunk/app/**src/main/resources/org/apache/**
>>>>>>>>>> roller/weblogger/config/**roller.properties?revision=**
>>>>>>>>>> 1511052&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>>>>>>>> >
>>>>>>>>>> [2] http://svn.apache.org/viewvc/***
>>>>>>>>>> *******roller/trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>> test/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>>> app/src/test/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/test/****>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>> src/test/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>> app/src/test/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>>> ****test/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****test/**>
>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>>> app/src/**test/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**test/**>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>>> src/test/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>> src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>>>>>>> >
>>>>>>>>>> resources/roller-custom.**********properties?view=log<http://****
>>>>>>>>>> svn.apache.org/viewvc/roller/********trunk/app/src/test/**<http://svn.apache.org/viewvc/roller/******trunk/app/src/test/**>
>>>>>>>>>> resources/****<http://svn.**apache.org/viewvc/roller/******
>>>>>>>>>> trunk/app/src/test/resources/******<http://svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/****>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.**apache.org/**viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>> trunk/app/src/test/resources/******<http://svn.apache.org/**
>>>>>>>>>> viewvc/roller/**trunk/app/src/**test/resources/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**>
>>>>>>>>>> >
>>>>>>>>>> roller-custom.properties?view=********log<http://svn.apache.**
>>>>>>>>>> org/**** <http://svn.apache.org/****><http://svn.apache.**org/**<http://svn.apache.org/**>
>>>>>>>>>> >
>>>>>>>>>> viewvc/roller/trunk/app/src/******test/resources/roller-**
>>>>>>>>>> custom.****
>>>>>>>>>> properties?view=log<http://**s**vn.apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>> trunk/app/src/test/resources/****roller-custom.properties?**
>>>>>>>>>> view=**log<http://svn.apache.**org/viewvc/roller/trunk/app/**
>>>>>>>>>> src/test/resources/roller-**custom.properties?view=log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>>>>>>>> >
>>>>>>>>>> [3] http://svn.apache.org/viewvc/**********roller/trunk/app/pom.*
>>>>>>>>>> *xml?**<http://svn.apache.org/viewvc/********roller/trunk/app/pom.xml?**>
>>>>>>>>>> ** <http://svn.apache.org/viewvc/********roller/trunk/app/pom.**
>>>>>>>>>> xml?**<http://svn.apache.org/viewvc/******roller/trunk/app/pom.xml?**>
>>>>>>>>>> ><
>>>>>>>>>> http://svn.apache.org/****viewvc/****roller/trunk/app/****
>>>>>>>>>> pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>>> >
>>>>>>>>>> **<http://svn.apache.org/****viewvc/****roller/trunk/app/****
>>>>>>>>>> pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>> pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>>>>>>>> >
>>>>>>>>>> revision=1511052&view=markup#**********l460<http://svn.apache.**
>>>>>>>>>> **
>>>>>>>>>> org/**** <http://svn.apache.org/****><h**ttp://svn.apache.<http://svn.apache.>
>>>>>>>>>> **org/**<http**://svn.apache.org/** <http://svn.apache.org/**>>
>>>>>>>>>> viewvc/roller/trunk/app/pom.********xml?revision=1511052&view=**
>>>>>>>>>> ******
>>>>>>>>>> markup#l460<http://svn.apache.******org/viewvc/roller/trunk/**
>>>>>>>>>> app/****
>>>>>>>>>> pom.xml?revision=1511052&view=******markup#l460<http://svn.**
>>>>>>>>>> apache.org/viewvc/roller/****trunk/app/pom.xml?revision=**<http://apache.org/viewvc/roller/**trunk/app/pom.xml?revision=**>
>>>>>>>>>> 1511052&view=markup#l460<http:**//svn.apache.org/viewvc/**
>>>>>>>>>> roller/trunk/app/pom.xml?**revision=1511052&view=markup#**l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>>>>>>>> >
>>>>>>>>>> [4] <http://svn.apache.org/viewvc/**
>>>>>>>>>> ********roller/trunk/app/src/****<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>> main/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>>> app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>>> app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>>> ****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>>> app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>> >
>>>>>>>>>> java/org/apache/roller/**********weblogger/config/****
>>>>>>>>>> WebloggerConfig.java?revision=
>>>>>>>>>> **1491090&view=markup<http://********svn.apache.org/viewvc/**
>>>>>>>>>> roller/**** <http://svn.apache.org/viewvc/**roller/****<http://svn.apache.org/viewvc/roller/****>
>>>>>>>>>> ><
>>>>>>>>>> http://svn.apache.**org/**viewvc/roller/**<http://svn.**
>>>>>>>>>> apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>>> >
>>>>>>>>>> trunk/app/src/main/java/org/********apache/roller/weblogger/**
>>>>>>>>>> config/WebloggerConfig.java?********revision=1491090&view=****
>>>>>>>>>> markup<h**
>>>>>>>>>>
>>>>>>>>>> ttp://svn.apache.org/viewvc/******roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>>> **<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>>> **>
>>>>>>>>>> java/org/apache/roller/******weblogger/config/**
>>>>>>>>>> WebloggerConfig.java?revision=******1491090&view=markup<http:/**
>>>>>>>>>> /**
>>>>>>>>>> svn.apache.org/viewvc/roller/****trunk/app/src/main/java/org/****<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>> apache/roller/weblogger/****config/WebloggerConfig.java?**
>>>>>>>>>> revision=1491090&view=markup<h**ttp://svn.apache.org/viewvc/**
>>>>>>>>>> roller/trunk/app/src/main/**java/org/apache/roller/**
>>>>>>>>>> weblogger/config/**WebloggerConfig.java?revision=**
>>>>>>>>>> 1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>>>>>>> >
>>>>>>>>>>
>>>>>>>>>>> http://**svn.apache.org/********viewvc/roller/**trunk/app/src/**
>>>>>>>>>>> ******<http://svn.apache.org/******viewvc/roller/**trunk/app/src/******>
>>>>>>>>>>> <http://svn.apache.org/******viewvc/roller/**trunk/app/**
>>>>>>>>>>> src/****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>> >
>>>>>>>>>>> <http://svn.apache.org/******viewvc/roller/**trunk/app/src/**
>>>>>>>>>>> ****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>>> <http://svn.apache.org/****viewvc/roller/**trunk/app/src/****<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**>
>>>>>>>>>>> >
>>>>>>>>>>> main/java/org/**<http://svn.******apache.org/viewvc/roller/*****
>>>>>>>>>>> * <http://apache.org/viewvc/roller/****><
>>>>>>>>>>> http://apache.org/viewvc/**roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>>> >
>>>>>>>>>>> trunk/app/src/main/java/org/******<http://svn.apache.org/**
>>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/**>
>>>>>>>>>>> roller/**trunk/app/src/main/****java/org/**<http://svn.apache.**
>>>>>>>>>>> org/viewvc/roller/**trunk/app/**src/main/java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>>> >
>>>>>>>>>>> **>
>>>>>>>>>>>
>>>>>>>>>>>    apache/roller/weblogger/********
>>>>>>>>>>> **config/WebloggerConfig.java?******
>>>>>>>>>>> **
>>>>>>>>>>>
>>>>>>>>>>>  **view=markup<
>>>>>>>>>> http://svn.apache.**org/******viewvc/roller/trunk/app/**
>>>>>>>>>> src/main/java/org/apache/********roller/weblogger/config/**
>>>>>>>>>> WebloggerConfig.java?view=********markup<http://svn.apache.**
>>>>>>>>>> org/**** <http://svn.apache.org/****><http://svn.apache.**org/**<http://svn.apache.org/**>
>>>>>>>>>> >
>>>>>>>>>> viewvc/roller/trunk/app/src/******main/java/org/apache/roller/**
>>>>>>>>>> **
>>>>>>>>>> weblogger/config/******WebloggerConfig.java?view=******markup<
>>>>>>>>>> http://svn.apache.org/****viewvc/roller/trunk/app/src/**<http://svn.apache.org/**viewvc/roller/trunk/app/src/**>
>>>>>>>>>> main/java/org/apache/roller/****weblogger/config/**
>>>>>>>>>> WebloggerConfig.java?view=****markup<http://svn.apache.org/**
>>>>>>>>>> viewvc/roller/trunk/app/src/**main/java/org/apache/roller/**
>>>>>>>>>> weblogger/config/**WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>>>>>>> >
>>>>>>>>>> I'd like to do the same thing with Apache JSPWiki, modify our own
>>>>>>>>>> PropertyReader.java to accept a new jspwiki-custom.properties
>>>>>>>>>> file.
>>>>>>>>>> Also,
>>>>>>>>>> to get rid of the mostly forgotten and empty
>>>>>>>>>> /ini/default_jspwiki.****
>>>>>>>>>> properties
>>>>>>>>>>
>>>>>>>>>> and put whatever default values there into jspwiki.properties
>>>>>>>>>> (unless
>>>>>>>>>> where
>>>>>>>>>> the latter has already overridden those properties.)  Basically,
>>>>>>>>>> jspwiki.properties will assume the role of
>>>>>>>>>> default_jspwiki.properties
>>>>>>>>>> and
>>>>>>>>>> we'll have a new optional jspwiki-custom.properties that will not
>>>>>>>>>> be
>>>>>>>>>> in
>>>>>>>>>> the
>>>>>>>>>> WAR at all (you don't want to have it in the WAR as it would get
>>>>>>>>>> read
>>>>>>>>>> over
>>>>>>>>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>>>>>>>>> jspwiki-custom.properties in the WAR you'd just use
>>>>>>>>>> jspwiki.properties
>>>>>>>>>> anyway.)  Backwards compatibility would not be an issue, as you'd
>>>>>>>>>> just
>>>>>>>>>> take
>>>>>>>>>> your jspwiki.properties file from the old WAR and can still
>>>>>>>>>> insert it
>>>>>>>>>> into
>>>>>>>>>> the new WAR or just rename it jspwiki-custom.properties and put
>>>>>>>>>> it on
>>>>>>>>>> the
>>>>>>>>>> external classpath. WDYT?
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Glen
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>
>

Re: Switch to Apache Roller-style properties configuration?

Posted by Harry Metske <ha...@gmail.com>.
Glen,

thanks, looks good.
I will do some testing too if time permits the coming week.

regards,
Harry



On 9 August 2013 00:27, Glen Mazza <gl...@gmail.com> wrote:

> Hi All,
>
> OK, converted.  Main issue was that I had to move jspwiki.properties out
> of the WEB-INF folder and into to src/main/resources/ini (where the
> default_jspwiki.properties, now incorporated into jspwiki.properties, used
> to be.) I believe it was because certain bootstrapping classes don't have
> access to the WEB-INF folder.  (I didn't research the matter much, seeing
> how Roller also places it in their roller.jar and not the WEB-INF folder of
> the roller WAR.)
>
> Right now, in my tomcat/lib folder I have this tiny
> jspwiki-custom.properties file:
>
> jspwiki.applicationName = SampleApp
> jspwiki.xmlGroupDatabaseFile = /home/gmazza/groupdatabase.xml
> jspwiki.xmlUserDatabaseFile = /home/gmazza/userdatabase.xml
> log4j.appender.FileLog.File = /home/gmazza/jspwikilog.log
>
> It seems to be working fine.  I can keep changing the WAR, the values
> above override what's in jspwiki.properties and my user accounts don't need
> to be recreated anymore, as userdatabase.xml is read from the above file
> and no longer from within the WAR.
>
> The Selenium tests will need conversion, I'll look at that next, but even
> before the change only about half the tests were working.  Let me know of
> any hiccups that occur.
>
> Regards,
> Glen
>
>
> On 08/08/2013 11:10 AM, Juan Pablo Santos Rodríguez wrote:
>
>> Hi,
>>
>> I was thinking in existing users who might be using this feature, but just
>> realised that simlpy using -Djspwiki.custom.config for the same file would
>> be equally valid, so I'm +1 on your approach
>>
>>
>> br,
>> juan pablo
>>
>> On Thu, Aug 8, 2013 at 2:43 PM, Glen Mazza <gl...@gmail.com> wrote:
>>
>>  Umm, I really would *not* want to go that route, there's no practical
>>> benefit to providing both options (never has been on Roller for over a
>>> decade now), it would raise unnecessary confusion among users, and it
>>> would
>>> be cumbersome to code.
>>>
>>> With my proposed change, you are never going to alter the
>>> jspwiki.properties file again (unless you manually go in and tweak it,
>>> which you should never need to do anyway).  You can only override it with
>>> another file, with just those handful of values you wish to override.  If
>>> you don't override it, then jspwiki.properties in the WAR defaults.
>>>
>>> What I'm proposing is not just how Roller does things but precisely how
>>> Apache Karaf does too, you alter a custom file that overrides the
>>> default,
>>> and they leave a blunt comment in the default file to leave it alone and
>>> alter the custom file instead.
>>>
>>> Glen
>>>
>>>
>>> On 08/08/2013 08:32 AM, Juan Pablo Santos Rodríguez wrote:
>>>
>>>  Hi,
>>>>
>>>> one quick note, if I recall correctly, "-Djspwiki.propertyfile" is used
>>>> to
>>>> load the main jspwiki.properties from outside the war, so it should be
>>>> able
>>>> to coexist with "-Djspwiki.custom.config", something like:
>>>>
>>>> - jspwiki.properties, loaded first, from war (unless
>>>> -Djspwiki.propertyfile
>>>> is given)
>>>> - jspwiki-custom.properties, loaded afterwards, from classpath (unless
>>>> -Djspwiki.custom.config is given)
>>>>
>>>>
>>>> br,
>>>> juan pablo
>>>>
>>>> On Thu, Aug 8, 2013 at 2:14 PM, Glen Mazza <gl...@gmail.com>
>>>> wrote:
>>>>
>>>>   Yes, I like -Djspwiki.custom.config too.  I'll see what I can do for
>>>>
>>>>> logging.
>>>>>
>>>>> Glen
>>>>>
>>>>>
>>>>> On 08/08/2013 08:01 AM, Harry Metske wrote:
>>>>>
>>>>>   Changing the propname to something else would not be a problem,
>>>>>
>>>>>>     "-Djspwiki.custom.config" is fine.
>>>>>> What I meant is that it should be very clear _how_ these things play
>>>>>> together, both in documentation and logging.
>>>>>>
>>>>>> kind regards,
>>>>>> Harry
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>
>>>>>>    Yes, [#1] would be the [3] I mentioned below.  But would it be a
>>>>>> problem
>>>>>>
>>>>>>  if I renamed our "-Djspwiki.propertyfile" setting to
>>>>>>> "-Djspwiki.custom.**
>>>>>>> **propertyfile"
>>>>>>> (or "-Djspwiki.custom.config" similar to Roller) as it's technically
>>>>>>> no
>>>>>>> longer a replacement of the jspwiki.properties file (which will
>>>>>>> always
>>>>>>> be
>>>>>>> in the WAR) but an overlay of it (same thing, so long as your overlay
>>>>>>> has a
>>>>>>> value for every property in the jspwiki.properties file, which
>>>>>>> current
>>>>>>> -Djspwiki.propertyfiles have to do anyway as they fully replace that
>>>>>>> file.)
>>>>>>>     I don't see this as a backwards compatibility issue as it's just
>>>>>>> a
>>>>>>> command-line setting.
>>>>>>>
>>>>>>> Glen
>>>>>>>
>>>>>>>
>>>>>>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>>>>>>
>>>>>>>    from an administration perspective (part of my daily live) I
>>>>>>> consider
>>>>>>>
>>>>>>>  having configuration separate from binaries a must-have.
>>>>>>>> So +1 on this, it should get easier to deploy (the 100% same)
>>>>>>>> JSPWiki.war
>>>>>>>> everywhere and having a per-environment small "override" property
>>>>>>>> file
>>>>>>>> that
>>>>>>>> adapts the JSPWiki instance to the environment.
>>>>>>>> I would like to see proper logging on property handling so we can
>>>>>>>> see
>>>>>>>> which
>>>>>>>> property gets loaded from where, and what the final property values
>>>>>>>> are
>>>>>>>> going to be active.
>>>>>>>> (and, similar to what Ichiro already mentioned, it should play nice
>>>>>>>> with
>>>>>>>> JSPWiki System property mechanism, see [#1].
>>>>>>>>
>>>>>>>> [#1] https://issues.apache.org/********jira/browse/JSPWIKI-568<https://issues.apache.org/******jira/browse/JSPWIKI-568>
>>>>>>>> <http**s://issues.apache.org/******jira/browse/JSPWIKI-568<https://issues.apache.org/****jira/browse/JSPWIKI-568>
>>>>>>>> >
>>>>>>>> <https:**//issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>> <htt**ps://issues.apache.org/**jira/**browse/JSPWIKI-568<https://issues.apache.org/**jira/browse/JSPWIKI-568>
>>>>>>>> >
>>>>>>>> <https:**//issues.apache.org/****jira/**browse/JSPWIKI-568<http://issues.apache.org/**jira/**browse/JSPWIKI-568>
>>>>>>>> <htt**p://issues.apache.org/jira/****browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>> >
>>>>>>>> <http**s://issues.apache.org/**jira/**browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>>> <http**s://issues.apache.org/jira/**browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>>>>>> >
>>>>>>>> kind regards,
>>>>>>>> Harry
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>     Hi Team,
>>>>>>>>
>>>>>>>>   Apache Roller maintains two configuration files, a
>>>>>>>>
>>>>>>>>> roller.properties[1]
>>>>>>>>> which sits within the war, filled with defaults and never needs
>>>>>>>>> modification (although a user can alter it if he wishes, it will
>>>>>>>>> work),
>>>>>>>>> and
>>>>>>>>> a roller-custom.properties file[2] which is placed in the classpath
>>>>>>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
>>>>>>>>> GlassFish.)  For any value you put in roller-custom.properties, it
>>>>>>>>> will
>>>>>>>>> overwrite what is in roller.properties in the WAR.  So you only
>>>>>>>>> need
>>>>>>>>> the
>>>>>>>>> values in the custom file that you're actually overriding, making
>>>>>>>>> it
>>>>>>>>> very
>>>>>>>>> short and simple.  And if you don't use a roller-custom.properties,
>>>>>>>>> all
>>>>>>>>> of
>>>>>>>>> the defaults in the WAR will prevail.
>>>>>>>>>
>>>>>>>>> You can keep deploying new versions of Roller.war to your servlet
>>>>>>>>> container while never needing to re-configure either
>>>>>>>>> roller.properties
>>>>>>>>> or
>>>>>>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>>>>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>>>>>>> automatically
>>>>>>>>> is used--this is very convenient during development when the WARs
>>>>>>>>> frequently get updated.  Same with JUnit and Selenium testing, we
>>>>>>>>> don't
>>>>>>>>> alter the roller.properties but just place the
>>>>>>>>> roller-custom.properties[2]
>>>>>>>>> in the test classpath under src/test/resources (if you have
>>>>>>>>> multiple
>>>>>>>>> config
>>>>>>>>> files, you can change the custom file name via setting a system
>>>>>>>>> property[3]).  All this is handled by the WebloggerConfig[4] class,
>>>>>>>>> which
>>>>>>>>> first reads in roller.properties and the overwrites any values from
>>>>>>>>> roller-custom.properties.
>>>>>>>>>
>>>>>>>>> [1] http://svn.apache.org/viewvc/**********roller/trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>> main/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>> app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>> app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>> ****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>> app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>> >
>>>>>>>>> resources/org/apache/roller/**********weblogger/config/roller.****
>>>>>>>>> properties?view=markup<http://********svn.apache.org/viewvc/******<http://svn.apache.org/viewvc/****>
>>>>>>>>> roller/** <http://svn.apache.org/viewvc/****roller/**<http://svn.apache.org/viewvc/**roller/**>
>>>>>>>>> ><
>>>>>>>>> http://svn.apache.**org/**viewvc/roller/**<http://svn.**
>>>>>>>>> apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>> >
>>>>>>>>> trunk/app/src/main/resources/********org/apache/roller/**
>>>>>>>>> weblogger/****
>>>>>>>>> config/roller.properties?view=********markup<http://svn.**apache.<http://svn.apache.>
>>>>>>>>> ****
>>>>>>>>> org/viewvc/roller/trunk/app/******src/main/resources/org/**
>>>>>>>>> apache/****
>>>>>>>>> roller/weblogger/config/******roller.properties?view=markup<****
>>>>>>>>> http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>> resources/org/apache/roller/****weblogger/config/roller.**
>>>>>>>>> properties?view=markup<http://**svn.apache.org/viewvc/roller/**
>>>>>>>>> trunk/app/src/main/resources/**org/apache/roller/weblogger/**
>>>>>>>>> config/roller.properties?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>>>>>> >
>>>>>>>>>
>>>>>>>>>> <
>>>>>>>>>>
>>>>>>>>>>   http://svn.apache.org/viewvc/**********roller/trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>>>
>>>>>>>>> main/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>> app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>> app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>> ****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>> app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>> >
>>>>>>>>> resources/org/apache/roller/**********weblogger/config/roller.****
>>>>>>>>> properties?revision=1511052&**********view=markup<http://svn.***
>>>>>>>>> ***
>>>>>>>>> apache.<http://svn.apache.>
>>>>>>>>> **
>>>>>>>>> org/viewvc/roller/trunk/app/********src/main/resources/org/**
>>>>>>>>> apache/****
>>>>>>>>> roller/weblogger/config/********roller.properties?revision=**
>>>>>>>>> 1511052&view=markup<http://****s**vn.apache.org/viewvc/**roller/**<http://vn.apache.org/viewvc/roller/**>
>>>>>>>>> <http://svn.apache.**org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>> >
>>>>>>>>> trunk/app/src/main/resources/******org/apache/roller/**
>>>>>>>>> weblogger/****
>>>>>>>>> config/roller.properties?******revision=1511052&view=markup<**h**
>>>>>>>>> ttp://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>> resources/org/apache/roller/****weblogger/config/roller.**
>>>>>>>>> properties?revision=1511052&****view=markup<http://svn.apache.**
>>>>>>>>> org/viewvc/roller/trunk/app/**src/main/resources/org/apache/**
>>>>>>>>> roller/weblogger/config/**roller.properties?revision=**
>>>>>>>>> 1511052&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>>>>>>> >
>>>>>>>>> [2] http://svn.apache.org/viewvc/**********roller/trunk/app/src/**<http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>> test/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>> app/src/test/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/test/****>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>> src/test/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>> app/src/test/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>> ****test/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****test/**>
>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>> app/src/**test/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**test/**>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>> src/test/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>> src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>>>>>> >
>>>>>>>>> resources/roller-custom.**********properties?view=log<http://****
>>>>>>>>> svn.apache.org/viewvc/roller/********trunk/app/src/test/**<http://svn.apache.org/viewvc/roller/******trunk/app/src/test/**>
>>>>>>>>> resources/****<http://svn.**apache.org/viewvc/roller/******
>>>>>>>>> trunk/app/src/test/resources/******<http://svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/****>
>>>>>>>>> >
>>>>>>>>> <http://svn.**apache.org/**viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>> trunk/app/src/test/resources/******<http://svn.apache.org/**
>>>>>>>>> viewvc/roller/**trunk/app/src/**test/resources/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**>
>>>>>>>>> >
>>>>>>>>> roller-custom.properties?view=********log<http://svn.apache.**
>>>>>>>>> org/**** <http://svn.apache.org/****><http://svn.apache.**org/**<http://svn.apache.org/**>
>>>>>>>>> >
>>>>>>>>> viewvc/roller/trunk/app/src/******test/resources/roller-**
>>>>>>>>> custom.****
>>>>>>>>> properties?view=log<http://**s**vn.apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>> trunk/app/src/test/resources/****roller-custom.properties?**
>>>>>>>>> view=**log<http://svn.apache.**org/viewvc/roller/trunk/app/**
>>>>>>>>> src/test/resources/roller-**custom.properties?view=log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>>>>>>> >
>>>>>>>>> [3] http://svn.apache.org/viewvc/**********roller/trunk/app/pom.**
>>>>>>>>> xml?**<http://svn.apache.org/viewvc/********roller/trunk/app/pom.xml?**>
>>>>>>>>> ** <http://svn.apache.org/viewvc/********roller/trunk/app/pom.**
>>>>>>>>> xml?**<http://svn.apache.org/viewvc/******roller/trunk/app/pom.xml?**>
>>>>>>>>> ><
>>>>>>>>> http://svn.apache.org/****viewvc/****roller/trunk/app/****
>>>>>>>>> pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>> >
>>>>>>>>> **<http://svn.apache.org/****viewvc/****roller/trunk/app/****
>>>>>>>>> pom.xml?**<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**>
>>>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>> pom.xml?**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>> pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>>>>>>> >
>>>>>>>>> revision=1511052&view=markup#**********l460<http://svn.apache.****
>>>>>>>>> org/**** <http://svn.apache.org/****><h**ttp://svn.apache.<http://svn.apache.>
>>>>>>>>> **org/**<http**://svn.apache.org/** <http://svn.apache.org/**>>
>>>>>>>>> viewvc/roller/trunk/app/pom.********xml?revision=1511052&view=**
>>>>>>>>> ******
>>>>>>>>> markup#l460<http://svn.apache.******org/viewvc/roller/trunk/**
>>>>>>>>> app/****
>>>>>>>>> pom.xml?revision=1511052&view=******markup#l460<http://svn.**
>>>>>>>>> apache.org/viewvc/roller/****trunk/app/pom.xml?revision=**<http://apache.org/viewvc/roller/**trunk/app/pom.xml?revision=**>
>>>>>>>>> 1511052&view=markup#l460<http:**//svn.apache.org/viewvc/**
>>>>>>>>> roller/trunk/app/pom.xml?**revision=1511052&view=markup#**l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>>>>>>> >
>>>>>>>>> [4] <http://svn.apache.org/viewvc/**********roller/trunk/app/src/*
>>>>>>>>> *** <http://svn.apache.org/viewvc/********roller/trunk/app/src/**>
>>>>>>>>> main/****<http://svn.apache.**org/viewvc/******roller/trunk/**
>>>>>>>>> app/src/main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.**org/**viewvc/****roller/trunk/**app/**
>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/****roller/trunk/**
>>>>>>>>> app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.org/******viewvc/**roller/trunk/app/src/**
>>>>>>>>> ****main/**<http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**>
>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/**
>>>>>>>>> app/src/**main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>>> >
>>>>>>>>> <http://svn.apache.**org/**viewvc/**roller/trunk/app/****
>>>>>>>>> src/main/**<http://svn.apache.**org/viewvc/**roller/trunk/app/**
>>>>>>>>> src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>> >
>>>>>>>>> java/org/apache/roller/**********weblogger/config/****
>>>>>>>>> WebloggerConfig.java?revision=
>>>>>>>>> **1491090&view=markup<http://********svn.apache.org/viewvc/**
>>>>>>>>> roller/**** <http://svn.apache.org/viewvc/**roller/****<http://svn.apache.org/viewvc/roller/****>
>>>>>>>>> ><
>>>>>>>>> http://svn.apache.**org/**viewvc/roller/**<http://svn.**
>>>>>>>>> apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>>> >
>>>>>>>>> trunk/app/src/main/java/org/********apache/roller/weblogger/**
>>>>>>>>> config/WebloggerConfig.java?********revision=1491090&view=****
>>>>>>>>> markup<h**
>>>>>>>>>
>>>>>>>>> ttp://svn.apache.org/viewvc/******roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>>> **<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>>> **>
>>>>>>>>> java/org/apache/roller/******weblogger/config/**
>>>>>>>>> WebloggerConfig.java?revision=******1491090&view=markup<http:/**
>>>>>>>>> /**
>>>>>>>>> svn.apache.org/viewvc/roller/****trunk/app/src/main/java/org/****<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>> apache/roller/weblogger/****config/WebloggerConfig.java?**
>>>>>>>>> revision=1491090&view=markup<h**ttp://svn.apache.org/viewvc/**
>>>>>>>>> roller/trunk/app/src/main/**java/org/apache/roller/**
>>>>>>>>> weblogger/config/**WebloggerConfig.java?revision=**
>>>>>>>>> 1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>>>>>> >
>>>>>>>>>
>>>>>>>>>> http://**svn.apache.org/********viewvc/roller/**trunk/app/src/**
>>>>>>>>>> ******<http://svn.apache.org/******viewvc/roller/**trunk/app/src/******>
>>>>>>>>>> <http://svn.apache.org/******viewvc/roller/**trunk/app/**src/****<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>> >
>>>>>>>>>> <http://svn.apache.org/******viewvc/roller/**trunk/app/src/******<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>>> <http://svn.apache.org/****viewvc/roller/**trunk/app/src/****<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**>
>>>>>>>>>> >
>>>>>>>>>> main/java/org/**<http://svn.******apache.org/viewvc/roller/******<http://apache.org/viewvc/roller/****>
>>>>>>>>>> <http://apache.org/viewvc/**roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>>> >
>>>>>>>>>> trunk/app/src/main/java/org/******<http://svn.apache.org/**
>>>>>>>>>> viewvc/** <http://svn.apache.org/viewvc/**>
>>>>>>>>>> roller/**trunk/app/src/main/****java/org/**<http://svn.apache.**
>>>>>>>>>> org/viewvc/roller/**trunk/app/**src/main/java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>>> >
>>>>>>>>>> **>
>>>>>>>>>>
>>>>>>>>>>    apache/roller/weblogger/**********config/WebloggerConfig.java?
>>>>>>>>>> ******
>>>>>>>>>> **
>>>>>>>>>>
>>>>>>>>>>  **view=markup<
>>>>>>>>> http://svn.apache.**org/******viewvc/roller/trunk/app/**
>>>>>>>>> src/main/java/org/apache/********roller/weblogger/config/**
>>>>>>>>> WebloggerConfig.java?view=********markup<http://svn.apache.**
>>>>>>>>> org/**** <http://svn.apache.org/****><http://svn.apache.**org/**<http://svn.apache.org/**>
>>>>>>>>> >
>>>>>>>>> viewvc/roller/trunk/app/src/******main/java/org/apache/roller/****
>>>>>>>>> weblogger/config/******WebloggerConfig.java?view=******markup<
>>>>>>>>> http://svn.apache.org/****viewvc/roller/trunk/app/src/**<http://svn.apache.org/**viewvc/roller/trunk/app/src/**>
>>>>>>>>> main/java/org/apache/roller/****weblogger/config/**
>>>>>>>>> WebloggerConfig.java?view=****markup<http://svn.apache.org/**
>>>>>>>>> viewvc/roller/trunk/app/src/**main/java/org/apache/roller/**
>>>>>>>>> weblogger/config/**WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>>>>>> >
>>>>>>>>> I'd like to do the same thing with Apache JSPWiki, modify our own
>>>>>>>>> PropertyReader.java to accept a new jspwiki-custom.properties file.
>>>>>>>>> Also,
>>>>>>>>> to get rid of the mostly forgotten and empty
>>>>>>>>> /ini/default_jspwiki.****
>>>>>>>>> properties
>>>>>>>>>
>>>>>>>>> and put whatever default values there into jspwiki.properties
>>>>>>>>> (unless
>>>>>>>>> where
>>>>>>>>> the latter has already overridden those properties.)  Basically,
>>>>>>>>> jspwiki.properties will assume the role of
>>>>>>>>> default_jspwiki.properties
>>>>>>>>> and
>>>>>>>>> we'll have a new optional jspwiki-custom.properties that will not
>>>>>>>>> be
>>>>>>>>> in
>>>>>>>>> the
>>>>>>>>> WAR at all (you don't want to have it in the WAR as it would get
>>>>>>>>> read
>>>>>>>>> over
>>>>>>>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>>>>>>>> jspwiki-custom.properties in the WAR you'd just use
>>>>>>>>> jspwiki.properties
>>>>>>>>> anyway.)  Backwards compatibility would not be an issue, as you'd
>>>>>>>>> just
>>>>>>>>> take
>>>>>>>>> your jspwiki.properties file from the old WAR and can still insert
>>>>>>>>> it
>>>>>>>>> into
>>>>>>>>> the new WAR or just rename it jspwiki-custom.properties and put it
>>>>>>>>> on
>>>>>>>>> the
>>>>>>>>> external classpath. WDYT?
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Glen
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>

Re: Switch to Apache Roller-style properties configuration?

Posted by Glen Mazza <gl...@gmail.com>.
Hi All,

OK, converted.  Main issue was that I had to move jspwiki.properties out 
of the WEB-INF folder and into to src/main/resources/ini (where the 
default_jspwiki.properties, now incorporated into jspwiki.properties, 
used to be.) I believe it was because certain bootstrapping classes 
don't have access to the WEB-INF folder.  (I didn't research the matter 
much, seeing how Roller also places it in their roller.jar and not the 
WEB-INF folder of the roller WAR.)

Right now, in my tomcat/lib folder I have this tiny 
jspwiki-custom.properties file:

jspwiki.applicationName = SampleApp
jspwiki.xmlGroupDatabaseFile = /home/gmazza/groupdatabase.xml
jspwiki.xmlUserDatabaseFile = /home/gmazza/userdatabase.xml
log4j.appender.FileLog.File = /home/gmazza/jspwikilog.log

It seems to be working fine.  I can keep changing the WAR, the values 
above override what's in jspwiki.properties and my user accounts don't 
need to be recreated anymore, as userdatabase.xml is read from the above 
file and no longer from within the WAR.

The Selenium tests will need conversion, I'll look at that next, but 
even before the change only about half the tests were working.  Let me 
know of any hiccups that occur.

Regards,
Glen

On 08/08/2013 11:10 AM, Juan Pablo Santos Rodríguez wrote:
> Hi,
>
> I was thinking in existing users who might be using this feature, but just
> realised that simlpy using -Djspwiki.custom.config for the same file would
> be equally valid, so I'm +1 on your approach
>
>
> br,
> juan pablo
>
> On Thu, Aug 8, 2013 at 2:43 PM, Glen Mazza <gl...@gmail.com> wrote:
>
>> Umm, I really would *not* want to go that route, there's no practical
>> benefit to providing both options (never has been on Roller for over a
>> decade now), it would raise unnecessary confusion among users, and it would
>> be cumbersome to code.
>>
>> With my proposed change, you are never going to alter the
>> jspwiki.properties file again (unless you manually go in and tweak it,
>> which you should never need to do anyway).  You can only override it with
>> another file, with just those handful of values you wish to override.  If
>> you don't override it, then jspwiki.properties in the WAR defaults.
>>
>> What I'm proposing is not just how Roller does things but precisely how
>> Apache Karaf does too, you alter a custom file that overrides the default,
>> and they leave a blunt comment in the default file to leave it alone and
>> alter the custom file instead.
>>
>> Glen
>>
>>
>> On 08/08/2013 08:32 AM, Juan Pablo Santos Rodríguez wrote:
>>
>>> Hi,
>>>
>>> one quick note, if I recall correctly, "-Djspwiki.propertyfile" is used to
>>> load the main jspwiki.properties from outside the war, so it should be
>>> able
>>> to coexist with "-Djspwiki.custom.config", something like:
>>>
>>> - jspwiki.properties, loaded first, from war (unless
>>> -Djspwiki.propertyfile
>>> is given)
>>> - jspwiki-custom.properties, loaded afterwards, from classpath (unless
>>> -Djspwiki.custom.config is given)
>>>
>>>
>>> br,
>>> juan pablo
>>>
>>> On Thu, Aug 8, 2013 at 2:14 PM, Glen Mazza <gl...@gmail.com> wrote:
>>>
>>>   Yes, I like -Djspwiki.custom.config too.  I'll see what I can do for
>>>> logging.
>>>>
>>>> Glen
>>>>
>>>>
>>>> On 08/08/2013 08:01 AM, Harry Metske wrote:
>>>>
>>>>   Changing the propname to something else would not be a problem,
>>>>>     "-Djspwiki.custom.config" is fine.
>>>>> What I meant is that it should be very clear _how_ these things play
>>>>> together, both in documentation and logging.
>>>>>
>>>>> kind regards,
>>>>> Harry
>>>>>
>>>>>
>>>>>
>>>>> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>>>>>
>>>>>    Yes, [#1] would be the [3] I mentioned below.  But would it be a
>>>>> problem
>>>>>
>>>>>> if I renamed our "-Djspwiki.propertyfile" setting to
>>>>>> "-Djspwiki.custom.**
>>>>>> **propertyfile"
>>>>>> (or "-Djspwiki.custom.config" similar to Roller) as it's technically no
>>>>>> longer a replacement of the jspwiki.properties file (which will always
>>>>>> be
>>>>>> in the WAR) but an overlay of it (same thing, so long as your overlay
>>>>>> has a
>>>>>> value for every property in the jspwiki.properties file, which current
>>>>>> -Djspwiki.propertyfiles have to do anyway as they fully replace that
>>>>>> file.)
>>>>>>     I don't see this as a backwards compatibility issue as it's just a
>>>>>> command-line setting.
>>>>>>
>>>>>> Glen
>>>>>>
>>>>>>
>>>>>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>>>>>
>>>>>>    from an administration perspective (part of my daily live) I consider
>>>>>>
>>>>>>> having configuration separate from binaries a must-have.
>>>>>>> So +1 on this, it should get easier to deploy (the 100% same)
>>>>>>> JSPWiki.war
>>>>>>> everywhere and having a per-environment small "override" property file
>>>>>>> that
>>>>>>> adapts the JSPWiki instance to the environment.
>>>>>>> I would like to see proper logging on property handling so we can see
>>>>>>> which
>>>>>>> property gets loaded from where, and what the final property values
>>>>>>> are
>>>>>>> going to be active.
>>>>>>> (and, similar to what Ichiro already mentioned, it should play nice
>>>>>>> with
>>>>>>> JSPWiki System property mechanism, see [#1].
>>>>>>>
>>>>>>> [#1] https://issues.apache.org/******jira/browse/JSPWIKI-568<https://issues.apache.org/****jira/browse/JSPWIKI-568>
>>>>>>> <https:**//issues.apache.org/**jira/**browse/JSPWIKI-568<https://issues.apache.org/**jira/browse/JSPWIKI-568>
>>>>>>> <https:**//issues.apache.org/**jira/**browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>>> <http**s://issues.apache.org/jira/**browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>>>>> kind regards,
>>>>>>> Harry
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>>
>>>>>>>     Hi Team,
>>>>>>>
>>>>>>>   Apache Roller maintains two configuration files, a
>>>>>>>> roller.properties[1]
>>>>>>>> which sits within the war, filled with defaults and never needs
>>>>>>>> modification (although a user can alter it if he wishes, it will
>>>>>>>> work),
>>>>>>>> and
>>>>>>>> a roller-custom.properties file[2] which is placed in the classpath
>>>>>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
>>>>>>>> GlassFish.)  For any value you put in roller-custom.properties, it
>>>>>>>> will
>>>>>>>> overwrite what is in roller.properties in the WAR.  So you only need
>>>>>>>> the
>>>>>>>> values in the custom file that you're actually overriding, making it
>>>>>>>> very
>>>>>>>> short and simple.  And if you don't use a roller-custom.properties,
>>>>>>>> all
>>>>>>>> of
>>>>>>>> the defaults in the WAR will prevail.
>>>>>>>>
>>>>>>>> You can keep deploying new versions of Roller.war to your servlet
>>>>>>>> container while never needing to re-configure either
>>>>>>>> roller.properties
>>>>>>>> or
>>>>>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>>>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>>>>>> automatically
>>>>>>>> is used--this is very convenient during development when the WARs
>>>>>>>> frequently get updated.  Same with JUnit and Selenium testing, we
>>>>>>>> don't
>>>>>>>> alter the roller.properties but just place the
>>>>>>>> roller-custom.properties[2]
>>>>>>>> in the test classpath under src/test/resources (if you have multiple
>>>>>>>> config
>>>>>>>> files, you can change the custom file name via setting a system
>>>>>>>> property[3]).  All this is handled by the WebloggerConfig[4] class,
>>>>>>>> which
>>>>>>>> first reads in roller.properties and the overwrites any values from
>>>>>>>> roller-custom.properties.
>>>>>>>>
>>>>>>>> [1] http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>>> main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>> <http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>> resources/org/apache/roller/********weblogger/config/roller.**
>>>>>>>> properties?view=markup<http://******svn.apache.org/viewvc/****
>>>>>>>> roller/** <http://svn.apache.org/viewvc/**roller/**><
>>>>>>>> http://svn.apache.**org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>> trunk/app/src/main/resources/******org/apache/roller/**
>>>>>>>> weblogger/****
>>>>>>>> config/roller.properties?view=******markup<http://svn.apache.****
>>>>>>>> org/viewvc/roller/trunk/app/****src/main/resources/org/apache/****
>>>>>>>> roller/weblogger/config/****roller.properties?view=markup<**
>>>>>>>> http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>>>>>>>> resources/org/apache/roller/**weblogger/config/roller.**
>>>>>>>> properties?view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>>>>>> <
>>>>>>>>>
>>>>>>>>>   http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>>> main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>> <http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>> resources/org/apache/roller/********weblogger/config/roller.**
>>>>>>>> properties?revision=1511052&********view=markup<http://svn.****
>>>>>>>> apache.<http://svn.apache.>
>>>>>>>> **
>>>>>>>> org/viewvc/roller/trunk/app/******src/main/resources/org/**
>>>>>>>> apache/****
>>>>>>>> roller/weblogger/config/******roller.properties?revision=**
>>>>>>>> 1511052&view=markup<http://**s**vn.apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>> trunk/app/src/main/resources/****org/apache/roller/weblogger/****
>>>>>>>> config/roller.properties?****revision=1511052&view=markup<h**
>>>>>>>> ttp://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>>>>>>>> resources/org/apache/roller/**weblogger/config/roller.**
>>>>>>>> properties?revision=1511052&**view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>>>>>> [2] http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>>> test/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/test/****>
>>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/src/test/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**>
>>>>>>>> <http://svn.apache.org/****viewvc/**roller/trunk/app/src/****test/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**test/**>
>>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>>>>> resources/roller-custom.********properties?view=log<http://**
>>>>>>>> svn.apache.org/viewvc/roller/******trunk/app/src/test/**
>>>>>>>> resources/****<http://svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/****>
>>>>>>>> <http://svn.**apache.org/viewvc/roller/****
>>>>>>>> trunk/app/src/test/resources/****<http://svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**>
>>>>>>>> roller-custom.properties?view=******log<http://svn.apache.org/****<http://svn.apache.org/**>
>>>>>>>> viewvc/roller/trunk/app/src/****test/resources/roller-custom.****
>>>>>>>> properties?view=log<http://**svn.apache.org/viewvc/roller/**
>>>>>>>> trunk/app/src/test/resources/**roller-custom.properties?view=**log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>>>>>> [3] http://svn.apache.org/viewvc/********roller/trunk/app/pom.xml?**
>>>>>>>> ** <http://svn.apache.org/viewvc/******roller/trunk/app/pom.xml?**><
>>>>>>>> http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>> **<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>>>>>> revision=1511052&view=markup#********l460<http://svn.apache.**
>>>>>>>> org/**** <http://svn.apache.org/****><http://svn.apache.**org/**<http://svn.apache.org/**>
>>>>>>>> viewvc/roller/trunk/app/pom.******xml?revision=1511052&view=******
>>>>>>>> markup#l460<http://svn.apache.****org/viewvc/roller/trunk/app/****
>>>>>>>> pom.xml?revision=1511052&view=****markup#l460<http://svn.**
>>>>>>>> apache.org/viewvc/roller/**trunk/app/pom.xml?revision=**
>>>>>>>> 1511052&view=markup#l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>>>>>> [4] <http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>>> main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>>> <http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>> java/org/apache/roller/********weblogger/config/****
>>>>>>>> WebloggerConfig.java?revision=
>>>>>>>> **1491090&view=markup<http://******svn.apache.org/viewvc/**
>>>>>>>> roller/**** <http://svn.apache.org/viewvc/roller/****><
>>>>>>>> http://svn.apache.**org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>>> trunk/app/src/main/java/org/******apache/roller/weblogger/**
>>>>>>>> config/WebloggerConfig.java?******revision=1491090&view=**markup<h**
>>>>>>>>
>>>>>>>> ttp://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>>> java/org/apache/roller/****weblogger/config/**
>>>>>>>> WebloggerConfig.java?revision=****1491090&view=markup<http://**
>>>>>>>> svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**
>>>>>>>> apache/roller/weblogger/**config/WebloggerConfig.java?**
>>>>>>>> revision=1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>>>>>> http://**svn.apache.org/******viewvc/roller/**trunk/app/src/******<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>>> <http://svn.apache.org/****viewvc/roller/**trunk/app/src/****<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**>
>>>>>>>>> main/java/org/**<http://svn.****apache.org/viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>>> trunk/app/src/main/java/org/****<http://svn.apache.org/viewvc/**
>>>>>>>>> roller/**trunk/app/src/main/**java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>>> **>
>>>>>>>>>
>>>>>>>>>    apache/roller/weblogger/********config/WebloggerConfig.java?****
>>>>>>>>> **
>>>>>>>>>
>>>>>>>> **view=markup<
>>>>>>>> http://svn.apache.**org/****viewvc/roller/trunk/app/**
>>>>>>>> src/main/java/org/apache/******roller/weblogger/config/**
>>>>>>>> WebloggerConfig.java?view=******markup<http://svn.apache.org/****<http://svn.apache.org/**>
>>>>>>>> viewvc/roller/trunk/app/src/****main/java/org/apache/roller/**
>>>>>>>> weblogger/config/****WebloggerConfig.java?view=****markup<
>>>>>>>> http://svn.apache.org/**viewvc/roller/trunk/app/src/**
>>>>>>>> main/java/org/apache/roller/**weblogger/config/**
>>>>>>>> WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>>>>> I'd like to do the same thing with Apache JSPWiki, modify our own
>>>>>>>> PropertyReader.java to accept a new jspwiki-custom.properties file.
>>>>>>>> Also,
>>>>>>>> to get rid of the mostly forgotten and empty
>>>>>>>> /ini/default_jspwiki.****
>>>>>>>> properties
>>>>>>>>
>>>>>>>> and put whatever default values there into jspwiki.properties (unless
>>>>>>>> where
>>>>>>>> the latter has already overridden those properties.)  Basically,
>>>>>>>> jspwiki.properties will assume the role of default_jspwiki.properties
>>>>>>>> and
>>>>>>>> we'll have a new optional jspwiki-custom.properties that will not be
>>>>>>>> in
>>>>>>>> the
>>>>>>>> WAR at all (you don't want to have it in the WAR as it would get read
>>>>>>>> over
>>>>>>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>>>>>>> jspwiki-custom.properties in the WAR you'd just use
>>>>>>>> jspwiki.properties
>>>>>>>> anyway.)  Backwards compatibility would not be an issue, as you'd
>>>>>>>> just
>>>>>>>> take
>>>>>>>> your jspwiki.properties file from the old WAR and can still insert it
>>>>>>>> into
>>>>>>>> the new WAR or just rename it jspwiki-custom.properties and put it on
>>>>>>>> the
>>>>>>>> external classpath. WDYT?
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Glen
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>


Re: Switch to Apache Roller-style properties configuration?

Posted by Juan Pablo Santos Rodríguez <ju...@gmail.com>.
Hi,

I was thinking in existing users who might be using this feature, but just
realised that simlpy using -Djspwiki.custom.config for the same file would
be equally valid, so I'm +1 on your approach


br,
juan pablo

On Thu, Aug 8, 2013 at 2:43 PM, Glen Mazza <gl...@gmail.com> wrote:

> Umm, I really would *not* want to go that route, there's no practical
> benefit to providing both options (never has been on Roller for over a
> decade now), it would raise unnecessary confusion among users, and it would
> be cumbersome to code.
>
> With my proposed change, you are never going to alter the
> jspwiki.properties file again (unless you manually go in and tweak it,
> which you should never need to do anyway).  You can only override it with
> another file, with just those handful of values you wish to override.  If
> you don't override it, then jspwiki.properties in the WAR defaults.
>
> What I'm proposing is not just how Roller does things but precisely how
> Apache Karaf does too, you alter a custom file that overrides the default,
> and they leave a blunt comment in the default file to leave it alone and
> alter the custom file instead.
>
> Glen
>
>
> On 08/08/2013 08:32 AM, Juan Pablo Santos Rodríguez wrote:
>
>> Hi,
>>
>> one quick note, if I recall correctly, "-Djspwiki.propertyfile" is used to
>> load the main jspwiki.properties from outside the war, so it should be
>> able
>> to coexist with "-Djspwiki.custom.config", something like:
>>
>> - jspwiki.properties, loaded first, from war (unless
>> -Djspwiki.propertyfile
>> is given)
>> - jspwiki-custom.properties, loaded afterwards, from classpath (unless
>> -Djspwiki.custom.config is given)
>>
>>
>> br,
>> juan pablo
>>
>> On Thu, Aug 8, 2013 at 2:14 PM, Glen Mazza <gl...@gmail.com> wrote:
>>
>>  Yes, I like -Djspwiki.custom.config too.  I'll see what I can do for
>>> logging.
>>>
>>> Glen
>>>
>>>
>>> On 08/08/2013 08:01 AM, Harry Metske wrote:
>>>
>>>  Changing the propname to something else would not be a problem,
>>>>    "-Djspwiki.custom.config" is fine.
>>>> What I meant is that it should be very clear _how_ these things play
>>>> together, both in documentation and logging.
>>>>
>>>> kind regards,
>>>> Harry
>>>>
>>>>
>>>>
>>>> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>>>>
>>>>   Yes, [#1] would be the [3] I mentioned below.  But would it be a
>>>> problem
>>>>
>>>>> if I renamed our "-Djspwiki.propertyfile" setting to
>>>>> "-Djspwiki.custom.**
>>>>> **propertyfile"
>>>>> (or "-Djspwiki.custom.config" similar to Roller) as it's technically no
>>>>> longer a replacement of the jspwiki.properties file (which will always
>>>>> be
>>>>> in the WAR) but an overlay of it (same thing, so long as your overlay
>>>>> has a
>>>>> value for every property in the jspwiki.properties file, which current
>>>>> -Djspwiki.propertyfiles have to do anyway as they fully replace that
>>>>> file.)
>>>>>    I don't see this as a backwards compatibility issue as it's just a
>>>>> command-line setting.
>>>>>
>>>>> Glen
>>>>>
>>>>>
>>>>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>>>>
>>>>>   from an administration perspective (part of my daily live) I consider
>>>>>
>>>>>> having configuration separate from binaries a must-have.
>>>>>> So +1 on this, it should get easier to deploy (the 100% same)
>>>>>> JSPWiki.war
>>>>>> everywhere and having a per-environment small "override" property file
>>>>>> that
>>>>>> adapts the JSPWiki instance to the environment.
>>>>>> I would like to see proper logging on property handling so we can see
>>>>>> which
>>>>>> property gets loaded from where, and what the final property values
>>>>>> are
>>>>>> going to be active.
>>>>>> (and, similar to what Ichiro already mentioned, it should play nice
>>>>>> with
>>>>>> JSPWiki System property mechanism, see [#1].
>>>>>>
>>>>>> [#1] https://issues.apache.org/******jira/browse/JSPWIKI-568<https://issues.apache.org/****jira/browse/JSPWIKI-568>
>>>>>> <https:**//issues.apache.org/**jira/**browse/JSPWIKI-568<https://issues.apache.org/**jira/browse/JSPWIKI-568>
>>>>>> >
>>>>>> <https:**//issues.apache.org/**jira/**browse/JSPWIKI-568<http://issues.apache.org/jira/**browse/JSPWIKI-568>
>>>>>> <http**s://issues.apache.org/jira/**browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>>>> >
>>>>>>
>>>>>> kind regards,
>>>>>> Harry
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>>>>>
>>>>>>    Hi Team,
>>>>>>
>>>>>>  Apache Roller maintains two configuration files, a
>>>>>>> roller.properties[1]
>>>>>>> which sits within the war, filled with defaults and never needs
>>>>>>> modification (although a user can alter it if he wishes, it will
>>>>>>> work),
>>>>>>> and
>>>>>>> a roller-custom.properties file[2] which is placed in the classpath
>>>>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
>>>>>>> GlassFish.)  For any value you put in roller-custom.properties, it
>>>>>>> will
>>>>>>> overwrite what is in roller.properties in the WAR.  So you only need
>>>>>>> the
>>>>>>> values in the custom file that you're actually overriding, making it
>>>>>>> very
>>>>>>> short and simple.  And if you don't use a roller-custom.properties,
>>>>>>> all
>>>>>>> of
>>>>>>> the defaults in the WAR will prevail.
>>>>>>>
>>>>>>> You can keep deploying new versions of Roller.war to your servlet
>>>>>>> container while never needing to re-configure either
>>>>>>> roller.properties
>>>>>>> or
>>>>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>>>>> automatically
>>>>>>> is used--this is very convenient during development when the WARs
>>>>>>> frequently get updated.  Same with JUnit and Selenium testing, we
>>>>>>> don't
>>>>>>> alter the roller.properties but just place the
>>>>>>> roller-custom.properties[2]
>>>>>>> in the test classpath under src/test/resources (if you have multiple
>>>>>>> config
>>>>>>> files, you can change the custom file name via setting a system
>>>>>>> property[3]).  All this is handled by the WebloggerConfig[4] class,
>>>>>>> which
>>>>>>> first reads in roller.properties and the overwrites any values from
>>>>>>> roller-custom.properties.
>>>>>>>
>>>>>>> [1] http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>> main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>> >
>>>>>>> <http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>> >
>>>>>>> resources/org/apache/roller/********weblogger/config/roller.**
>>>>>>> properties?view=markup<http://******svn.apache.org/viewvc/****
>>>>>>> roller/** <http://svn.apache.org/viewvc/**roller/**><
>>>>>>> http://svn.apache.**org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>> >
>>>>>>> trunk/app/src/main/resources/******org/apache/roller/**
>>>>>>> weblogger/****
>>>>>>> config/roller.properties?view=******markup<http://svn.apache.****
>>>>>>> org/viewvc/roller/trunk/app/****src/main/resources/org/apache/****
>>>>>>> roller/weblogger/config/****roller.properties?view=markup<**
>>>>>>> http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>>>>>>> resources/org/apache/roller/**weblogger/config/roller.**
>>>>>>> properties?view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>>>> >
>>>>>>>
>>>>>>>> <
>>>>>>>>
>>>>>>>>  http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>> main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>> >
>>>>>>> <http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>> >
>>>>>>> resources/org/apache/roller/********weblogger/config/roller.**
>>>>>>> properties?revision=1511052&********view=markup<http://svn.****
>>>>>>> apache.<http://svn.apache.>
>>>>>>> **
>>>>>>> org/viewvc/roller/trunk/app/******src/main/resources/org/**
>>>>>>> apache/****
>>>>>>> roller/weblogger/config/******roller.properties?revision=**
>>>>>>> 1511052&view=markup<http://**s**vn.apache.org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>> trunk/app/src/main/resources/****org/apache/roller/weblogger/****
>>>>>>> config/roller.properties?****revision=1511052&view=markup<h**
>>>>>>> ttp://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>>>>>>> resources/org/apache/roller/**weblogger/config/roller.**
>>>>>>> properties?revision=1511052&**view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>>>>> >
>>>>>>> [2] http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>> test/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/test/****>
>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/src/test/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**>
>>>>>>> >
>>>>>>> <http://svn.apache.org/****viewvc/**roller/trunk/app/src/****test/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**test/**>
>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>>>> >
>>>>>>> resources/roller-custom.********properties?view=log<http://**
>>>>>>> svn.apache.org/viewvc/roller/******trunk/app/src/test/**
>>>>>>> resources/****<http://svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/****>
>>>>>>> <http://svn.**apache.org/viewvc/roller/****
>>>>>>> trunk/app/src/test/resources/****<http://svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**>
>>>>>>> >
>>>>>>> roller-custom.properties?view=******log<http://svn.apache.org/****<http://svn.apache.org/**>
>>>>>>> viewvc/roller/trunk/app/src/****test/resources/roller-custom.****
>>>>>>> properties?view=log<http://**svn.apache.org/viewvc/roller/**
>>>>>>> trunk/app/src/test/resources/**roller-custom.properties?view=**log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>>>>> >
>>>>>>> [3] http://svn.apache.org/viewvc/********roller/trunk/app/pom.xml?**
>>>>>>> ** <http://svn.apache.org/viewvc/******roller/trunk/app/pom.xml?**><
>>>>>>> http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>> >
>>>>>>> **<http://svn.apache.org/**viewvc/****roller/trunk/app/**pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>>>>> >
>>>>>>> revision=1511052&view=markup#********l460<http://svn.apache.**
>>>>>>> org/**** <http://svn.apache.org/****><http://svn.apache.**org/**<http://svn.apache.org/**>
>>>>>>> >
>>>>>>> viewvc/roller/trunk/app/pom.******xml?revision=1511052&view=******
>>>>>>> markup#l460<http://svn.apache.****org/viewvc/roller/trunk/app/****
>>>>>>> pom.xml?revision=1511052&view=****markup#l460<http://svn.**
>>>>>>> apache.org/viewvc/roller/**trunk/app/pom.xml?revision=**
>>>>>>> 1511052&view=markup#l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>>>>> >
>>>>>>> [4] <http://svn.apache.org/viewvc/********roller/trunk/app/src/**
>>>>>>> main/****<http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****>
>>>>>>> <http://svn.apache.**org/viewvc/****roller/trunk/**app/src/main/**<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>>> >
>>>>>>> <http://svn.apache.org/****viewvc/**roller/trunk/app/src/****main/**<http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**>
>>>>>>> <http://svn.apache.**org/viewvc/**roller/trunk/app/**src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>> >
>>>>>>> java/org/apache/roller/********weblogger/config/****
>>>>>>> WebloggerConfig.java?revision=
>>>>>>> **1491090&view=markup<http://******svn.apache.org/viewvc/**
>>>>>>> roller/**** <http://svn.apache.org/viewvc/roller/****><
>>>>>>> http://svn.apache.**org/viewvc/roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>>> >
>>>>>>> trunk/app/src/main/java/org/******apache/roller/weblogger/**
>>>>>>> config/WebloggerConfig.java?******revision=1491090&view=**markup<h**
>>>>>>>
>>>>>>> ttp://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>>> java/org/apache/roller/****weblogger/config/**
>>>>>>> WebloggerConfig.java?revision=****1491090&view=markup<http://**
>>>>>>> svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**
>>>>>>> apache/roller/weblogger/**config/WebloggerConfig.java?**
>>>>>>> revision=1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>>>> >
>>>>>>>
>>>>>>>> http://**svn.apache.org/******viewvc/roller/**trunk/app/src/******<http://svn.apache.org/****viewvc/roller/**trunk/app/src/****>
>>>>>>>> <http://svn.apache.org/****viewvc/roller/**trunk/app/src/****<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**>
>>>>>>>> >
>>>>>>>> main/java/org/**<http://svn.****apache.org/viewvc/roller/****<http://apache.org/viewvc/roller/****>
>>>>>>>> trunk/app/src/main/java/org/****<http://svn.apache.org/viewvc/**
>>>>>>>> roller/**trunk/app/src/main/**java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>>> >
>>>>>>>> **>
>>>>>>>>
>>>>>>>>   apache/roller/weblogger/********config/WebloggerConfig.java?****
>>>>>>>> **
>>>>>>>>
>>>>>>> **view=markup<
>>>>>>> http://svn.apache.**org/****viewvc/roller/trunk/app/**
>>>>>>> src/main/java/org/apache/******roller/weblogger/config/**
>>>>>>> WebloggerConfig.java?view=******markup<http://svn.apache.org/****<http://svn.apache.org/**>
>>>>>>> viewvc/roller/trunk/app/src/****main/java/org/apache/roller/**
>>>>>>> weblogger/config/****WebloggerConfig.java?view=****markup<
>>>>>>> http://svn.apache.org/**viewvc/roller/trunk/app/src/**
>>>>>>> main/java/org/apache/roller/**weblogger/config/**
>>>>>>> WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>>>> >
>>>>>>>
>>>>>>> I'd like to do the same thing with Apache JSPWiki, modify our own
>>>>>>> PropertyReader.java to accept a new jspwiki-custom.properties file.
>>>>>>> Also,
>>>>>>> to get rid of the mostly forgotten and empty
>>>>>>> /ini/default_jspwiki.****
>>>>>>> properties
>>>>>>>
>>>>>>> and put whatever default values there into jspwiki.properties (unless
>>>>>>> where
>>>>>>> the latter has already overridden those properties.)  Basically,
>>>>>>> jspwiki.properties will assume the role of default_jspwiki.properties
>>>>>>> and
>>>>>>> we'll have a new optional jspwiki-custom.properties that will not be
>>>>>>> in
>>>>>>> the
>>>>>>> WAR at all (you don't want to have it in the WAR as it would get read
>>>>>>> over
>>>>>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>>>>>> jspwiki-custom.properties in the WAR you'd just use
>>>>>>> jspwiki.properties
>>>>>>> anyway.)  Backwards compatibility would not be an issue, as you'd
>>>>>>> just
>>>>>>> take
>>>>>>> your jspwiki.properties file from the old WAR and can still insert it
>>>>>>> into
>>>>>>> the new WAR or just rename it jspwiki-custom.properties and put it on
>>>>>>> the
>>>>>>> external classpath. WDYT?
>>>>>>>
>>>>>>> Regards,
>>>>>>> Glen
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>

Re: Switch to Apache Roller-style properties configuration?

Posted by Glen Mazza <gl...@gmail.com>.
Umm, I really would *not* want to go that route, there's no practical 
benefit to providing both options (never has been on Roller for over a 
decade now), it would raise unnecessary confusion among users, and it 
would be cumbersome to code.

With my proposed change, you are never going to alter the 
jspwiki.properties file again (unless you manually go in and tweak it, 
which you should never need to do anyway).  You can only override it 
with another file, with just those handful of values you wish to 
override.  If you don't override it, then jspwiki.properties in the WAR 
defaults.

What I'm proposing is not just how Roller does things but precisely how 
Apache Karaf does too, you alter a custom file that overrides the 
default, and they leave a blunt comment in the default file to leave it 
alone and alter the custom file instead.

Glen

On 08/08/2013 08:32 AM, Juan Pablo Santos Rodríguez wrote:
> Hi,
>
> one quick note, if I recall correctly, "-Djspwiki.propertyfile" is used to
> load the main jspwiki.properties from outside the war, so it should be able
> to coexist with "-Djspwiki.custom.config", something like:
>
> - jspwiki.properties, loaded first, from war (unless -Djspwiki.propertyfile
> is given)
> - jspwiki-custom.properties, loaded afterwards, from classpath (unless
> -Djspwiki.custom.config is given)
>
>
> br,
> juan pablo
>
> On Thu, Aug 8, 2013 at 2:14 PM, Glen Mazza <gl...@gmail.com> wrote:
>
>> Yes, I like -Djspwiki.custom.config too.  I'll see what I can do for
>> logging.
>>
>> Glen
>>
>>
>> On 08/08/2013 08:01 AM, Harry Metske wrote:
>>
>>> Changing the propname to something else would not be a problem,
>>>    "-Djspwiki.custom.config" is fine.
>>> What I meant is that it should be very clear _how_ these things play
>>> together, both in documentation and logging.
>>>
>>> kind regards,
>>> Harry
>>>
>>>
>>>
>>> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>>>
>>>   Yes, [#1] would be the [3] I mentioned below.  But would it be a problem
>>>> if I renamed our "-Djspwiki.propertyfile" setting to "-Djspwiki.custom.**
>>>> **propertyfile"
>>>> (or "-Djspwiki.custom.config" similar to Roller) as it's technically no
>>>> longer a replacement of the jspwiki.properties file (which will always be
>>>> in the WAR) but an overlay of it (same thing, so long as your overlay
>>>> has a
>>>> value for every property in the jspwiki.properties file, which current
>>>> -Djspwiki.propertyfiles have to do anyway as they fully replace that
>>>> file.)
>>>>    I don't see this as a backwards compatibility issue as it's just a
>>>> command-line setting.
>>>>
>>>> Glen
>>>>
>>>>
>>>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>>>
>>>>   from an administration perspective (part of my daily live) I consider
>>>>> having configuration separate from binaries a must-have.
>>>>> So +1 on this, it should get easier to deploy (the 100% same)
>>>>> JSPWiki.war
>>>>> everywhere and having a per-environment small "override" property file
>>>>> that
>>>>> adapts the JSPWiki instance to the environment.
>>>>> I would like to see proper logging on property handling so we can see
>>>>> which
>>>>> property gets loaded from where, and what the final property values are
>>>>> going to be active.
>>>>> (and, similar to what Ichiro already mentioned, it should play nice with
>>>>> JSPWiki System property mechanism, see [#1].
>>>>>
>>>>> [#1] https://issues.apache.org/****jira/browse/JSPWIKI-568<https://issues.apache.org/**jira/browse/JSPWIKI-568>
>>>>> <https:**//issues.apache.org/jira/**browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>>> kind regards,
>>>>> Harry
>>>>>
>>>>>
>>>>>
>>>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>>>>
>>>>>    Hi Team,
>>>>>
>>>>>> Apache Roller maintains two configuration files, a roller.properties[1]
>>>>>> which sits within the war, filled with defaults and never needs
>>>>>> modification (although a user can alter it if he wishes, it will work),
>>>>>> and
>>>>>> a roller-custom.properties file[2] which is placed in the classpath
>>>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
>>>>>> GlassFish.)  For any value you put in roller-custom.properties, it will
>>>>>> overwrite what is in roller.properties in the WAR.  So you only need
>>>>>> the
>>>>>> values in the custom file that you're actually overriding, making it
>>>>>> very
>>>>>> short and simple.  And if you don't use a roller-custom.properties, all
>>>>>> of
>>>>>> the defaults in the WAR will prevail.
>>>>>>
>>>>>> You can keep deploying new versions of Roller.war to your servlet
>>>>>> container while never needing to re-configure either roller.properties
>>>>>> or
>>>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>>>> automatically
>>>>>> is used--this is very convenient during development when the WARs
>>>>>> frequently get updated.  Same with JUnit and Selenium testing, we don't
>>>>>> alter the roller.properties but just place the
>>>>>> roller-custom.properties[2]
>>>>>> in the test classpath under src/test/resources (if you have multiple
>>>>>> config
>>>>>> files, you can change the custom file name via setting a system
>>>>>> property[3]).  All this is handled by the WebloggerConfig[4] class,
>>>>>> which
>>>>>> first reads in roller.properties and the overwrites any values from
>>>>>> roller-custom.properties.
>>>>>>
>>>>>> [1] http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>> <http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>> resources/org/apache/roller/******weblogger/config/roller.**
>>>>>> properties?view=markup<http://****svn.apache.org/viewvc/**roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>>> trunk/app/src/main/resources/****org/apache/roller/weblogger/****
>>>>>> config/roller.properties?view=****markup<http://svn.apache.**
>>>>>> org/viewvc/roller/trunk/app/**src/main/resources/org/apache/**
>>>>>> roller/weblogger/config/**roller.properties?view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>>>> <
>>>>>>>
>>>>>> http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>> <http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>> resources/org/apache/roller/******weblogger/config/roller.**
>>>>>> properties?revision=1511052&******view=markup<http://svn.**apache.<http://svn.apache.>
>>>>>> **
>>>>>> org/viewvc/roller/trunk/app/****src/main/resources/org/apache/****
>>>>>> roller/weblogger/config/****roller.properties?revision=**
>>>>>> 1511052&view=markup<http://**svn.apache.org/viewvc/roller/**
>>>>>> trunk/app/src/main/resources/**org/apache/roller/weblogger/**
>>>>>> config/roller.properties?**revision=1511052&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>>>> [2] http://svn.apache.org/viewvc/******roller/trunk/app/src/test/****<http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**>
>>>>>> <http://svn.apache.org/**viewvc/**roller/trunk/app/src/**test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>>> resources/roller-custom.******properties?view=log<http://**
>>>>>> svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/****<http://svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**>
>>>>>> roller-custom.properties?view=****log<http://svn.apache.org/**
>>>>>> viewvc/roller/trunk/app/src/**test/resources/roller-custom.**
>>>>>> properties?view=log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>>>> [3] http://svn.apache.org/viewvc/******roller/trunk/app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>>> **<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>>>> revision=1511052&view=markup#******l460<http://svn.apache.org/****<http://svn.apache.org/**>
>>>>>> viewvc/roller/trunk/app/pom.****xml?revision=1511052&view=****
>>>>>> markup#l460<http://svn.apache.**org/viewvc/roller/trunk/app/**
>>>>>> pom.xml?revision=1511052&view=**markup#l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>>>> [4] <http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>>> <http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>>> java/org/apache/roller/******weblogger/config/****
>>>>>> WebloggerConfig.java?revision=
>>>>>> **1491090&view=markup<http://****svn.apache.org/viewvc/roller/****<http://svn.apache.org/viewvc/roller/**>
>>>>>> trunk/app/src/main/java/org/****apache/roller/weblogger/**
>>>>>> config/WebloggerConfig.java?****revision=1491090&view=markup<h**
>>>>>> ttp://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>>>>>> java/org/apache/roller/**weblogger/config/**
>>>>>> WebloggerConfig.java?revision=**1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>>>> http://**svn.apache.org/****viewvc/roller/**trunk/app/src/****<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**>
>>>>>>> main/java/org/**<http://svn.**apache.org/viewvc/roller/****
>>>>>>> trunk/app/src/main/java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>>> **>
>>>>>>>
>>>>>>>   apache/roller/weblogger/******config/WebloggerConfig.java?****
>>>>>> **view=markup<
>>>>>> http://svn.apache.**org/**viewvc/roller/trunk/app/**
>>>>>> src/main/java/org/apache/****roller/weblogger/config/**
>>>>>> WebloggerConfig.java?view=****markup<http://svn.apache.org/**
>>>>>> viewvc/roller/trunk/app/src/**main/java/org/apache/roller/**
>>>>>> weblogger/config/**WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>>> I'd like to do the same thing with Apache JSPWiki, modify our own
>>>>>> PropertyReader.java to accept a new jspwiki-custom.properties file.
>>>>>> Also,
>>>>>> to get rid of the mostly forgotten and empty /ini/default_jspwiki.****
>>>>>> properties
>>>>>>
>>>>>> and put whatever default values there into jspwiki.properties (unless
>>>>>> where
>>>>>> the latter has already overridden those properties.)  Basically,
>>>>>> jspwiki.properties will assume the role of default_jspwiki.properties
>>>>>> and
>>>>>> we'll have a new optional jspwiki-custom.properties that will not be in
>>>>>> the
>>>>>> WAR at all (you don't want to have it in the WAR as it would get read
>>>>>> over
>>>>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>>>>> jspwiki-custom.properties in the WAR you'd just use jspwiki.properties
>>>>>> anyway.)  Backwards compatibility would not be an issue, as you'd just
>>>>>> take
>>>>>> your jspwiki.properties file from the old WAR and can still insert it
>>>>>> into
>>>>>> the new WAR or just rename it jspwiki-custom.properties and put it on
>>>>>> the
>>>>>> external classpath. WDYT?
>>>>>>
>>>>>> Regards,
>>>>>> Glen
>>>>>>
>>>>>>
>>>>>>
>>>>>>


Re: Switch to Apache Roller-style properties configuration?

Posted by Juan Pablo Santos Rodríguez <ju...@gmail.com>.
Hi,

one quick note, if I recall correctly, "-Djspwiki.propertyfile" is used to
load the main jspwiki.properties from outside the war, so it should be able
to coexist with "-Djspwiki.custom.config", something like:

- jspwiki.properties, loaded first, from war (unless -Djspwiki.propertyfile
is given)
- jspwiki-custom.properties, loaded afterwards, from classpath (unless
-Djspwiki.custom.config is given)


br,
juan pablo

On Thu, Aug 8, 2013 at 2:14 PM, Glen Mazza <gl...@gmail.com> wrote:

> Yes, I like -Djspwiki.custom.config too.  I'll see what I can do for
> logging.
>
> Glen
>
>
> On 08/08/2013 08:01 AM, Harry Metske wrote:
>
>> Changing the propname to something else would not be a problem,
>>   "-Djspwiki.custom.config" is fine.
>> What I meant is that it should be very clear _how_ these things play
>> together, both in documentation and logging.
>>
>> kind regards,
>> Harry
>>
>>
>>
>> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>>
>>  Yes, [#1] would be the [3] I mentioned below.  But would it be a problem
>>> if I renamed our "-Djspwiki.propertyfile" setting to "-Djspwiki.custom.**
>>> **propertyfile"
>>> (or "-Djspwiki.custom.config" similar to Roller) as it's technically no
>>> longer a replacement of the jspwiki.properties file (which will always be
>>> in the WAR) but an overlay of it (same thing, so long as your overlay
>>> has a
>>> value for every property in the jspwiki.properties file, which current
>>> -Djspwiki.propertyfiles have to do anyway as they fully replace that
>>> file.)
>>>   I don't see this as a backwards compatibility issue as it's just a
>>> command-line setting.
>>>
>>> Glen
>>>
>>>
>>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>>
>>>  from an administration perspective (part of my daily live) I consider
>>>> having configuration separate from binaries a must-have.
>>>> So +1 on this, it should get easier to deploy (the 100% same)
>>>> JSPWiki.war
>>>> everywhere and having a per-environment small "override" property file
>>>> that
>>>> adapts the JSPWiki instance to the environment.
>>>> I would like to see proper logging on property handling so we can see
>>>> which
>>>> property gets loaded from where, and what the final property values are
>>>> going to be active.
>>>> (and, similar to what Ichiro already mentioned, it should play nice with
>>>> JSPWiki System property mechanism, see [#1].
>>>>
>>>> [#1] https://issues.apache.org/****jira/browse/JSPWIKI-568<https://issues.apache.org/**jira/browse/JSPWIKI-568>
>>>> <https:**//issues.apache.org/jira/**browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>> >
>>>>
>>>> kind regards,
>>>> Harry
>>>>
>>>>
>>>>
>>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>>>
>>>>   Hi Team,
>>>>
>>>>> Apache Roller maintains two configuration files, a roller.properties[1]
>>>>> which sits within the war, filled with defaults and never needs
>>>>> modification (although a user can alter it if he wishes, it will work),
>>>>> and
>>>>> a roller-custom.properties file[2] which is placed in the classpath
>>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
>>>>> GlassFish.)  For any value you put in roller-custom.properties, it will
>>>>> overwrite what is in roller.properties in the WAR.  So you only need
>>>>> the
>>>>> values in the custom file that you're actually overriding, making it
>>>>> very
>>>>> short and simple.  And if you don't use a roller-custom.properties, all
>>>>> of
>>>>> the defaults in the WAR will prevail.
>>>>>
>>>>> You can keep deploying new versions of Roller.war to your servlet
>>>>> container while never needing to re-configure either roller.properties
>>>>> or
>>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>>> automatically
>>>>> is used--this is very convenient during development when the WARs
>>>>> frequently get updated.  Same with JUnit and Selenium testing, we don't
>>>>> alter the roller.properties but just place the
>>>>> roller-custom.properties[2]
>>>>> in the test classpath under src/test/resources (if you have multiple
>>>>> config
>>>>> files, you can change the custom file name via setting a system
>>>>> property[3]).  All this is handled by the WebloggerConfig[4] class,
>>>>> which
>>>>> first reads in roller.properties and the overwrites any values from
>>>>> roller-custom.properties.
>>>>>
>>>>> [1] http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>> <http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>> >
>>>>> resources/org/apache/roller/******weblogger/config/roller.**
>>>>> properties?view=markup<http://****svn.apache.org/viewvc/**roller/**<http://svn.apache.org/viewvc/roller/**>
>>>>> trunk/app/src/main/resources/****org/apache/roller/weblogger/****
>>>>> config/roller.properties?view=****markup<http://svn.apache.**
>>>>> org/viewvc/roller/trunk/app/**src/main/resources/org/apache/**
>>>>> roller/weblogger/config/**roller.properties?view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>> >
>>>>>
>>>>>> <
>>>>>>
>>>>> http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>> <http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>> >
>>>>> resources/org/apache/roller/******weblogger/config/roller.**
>>>>> properties?revision=1511052&******view=markup<http://svn.**apache.<http://svn.apache.>
>>>>> **
>>>>> org/viewvc/roller/trunk/app/****src/main/resources/org/apache/****
>>>>> roller/weblogger/config/****roller.properties?revision=**
>>>>> 1511052&view=markup<http://**svn.apache.org/viewvc/roller/**
>>>>> trunk/app/src/main/resources/**org/apache/roller/weblogger/**
>>>>> config/roller.properties?**revision=1511052&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>>> >
>>>>> [2] http://svn.apache.org/viewvc/******roller/trunk/app/src/test/****<http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**>
>>>>> <http://svn.apache.org/**viewvc/**roller/trunk/app/src/**test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>>> >
>>>>> resources/roller-custom.******properties?view=log<http://**
>>>>> svn.apache.org/viewvc/roller/****trunk/app/src/test/resources/****<http://svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**>
>>>>> roller-custom.properties?view=****log<http://svn.apache.org/**
>>>>> viewvc/roller/trunk/app/src/**test/resources/roller-custom.**
>>>>> properties?view=log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>>> >
>>>>> [3] http://svn.apache.org/viewvc/******roller/trunk/app/pom.xml?**<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**>
>>>>> **<http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>>> >
>>>>> revision=1511052&view=markup#******l460<http://svn.apache.org/****<http://svn.apache.org/**>
>>>>> viewvc/roller/trunk/app/pom.****xml?revision=1511052&view=****
>>>>> markup#l460<http://svn.apache.**org/viewvc/roller/trunk/app/**
>>>>> pom.xml?revision=1511052&view=**markup#l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>>> >
>>>>> [4] <http://svn.apache.org/viewvc/******roller/trunk/app/src/main/****<http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**>
>>>>> <http://svn.apache.org/**viewvc/**roller/trunk/app/src/**main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>>> >
>>>>> java/org/apache/roller/******weblogger/config/****
>>>>> WebloggerConfig.java?revision=
>>>>> **1491090&view=markup<http://****svn.apache.org/viewvc/roller/****<http://svn.apache.org/viewvc/roller/**>
>>>>> trunk/app/src/main/java/org/****apache/roller/weblogger/**
>>>>> config/WebloggerConfig.java?****revision=1491090&view=markup<h**
>>>>> ttp://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>>>>> java/org/apache/roller/**weblogger/config/**
>>>>> WebloggerConfig.java?revision=**1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>> >
>>>>>
>>>>>> http://**svn.apache.org/****viewvc/roller/**trunk/app/src/****<http://svn.apache.org/**viewvc/roller/**trunk/app/src/**>
>>>>>> main/java/org/**<http://svn.**apache.org/viewvc/roller/****
>>>>>> trunk/app/src/main/java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>> **>
>>>>>>
>>>>>>  apache/roller/weblogger/******config/WebloggerConfig.java?****
>>>>> **view=markup<
>>>>> http://svn.apache.**org/**viewvc/roller/trunk/app/**
>>>>> src/main/java/org/apache/****roller/weblogger/config/**
>>>>> WebloggerConfig.java?view=****markup<http://svn.apache.org/**
>>>>> viewvc/roller/trunk/app/src/**main/java/org/apache/roller/**
>>>>> weblogger/config/**WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>> >
>>>>>
>>>>> I'd like to do the same thing with Apache JSPWiki, modify our own
>>>>> PropertyReader.java to accept a new jspwiki-custom.properties file.
>>>>> Also,
>>>>> to get rid of the mostly forgotten and empty /ini/default_jspwiki.****
>>>>> properties
>>>>>
>>>>> and put whatever default values there into jspwiki.properties (unless
>>>>> where
>>>>> the latter has already overridden those properties.)  Basically,
>>>>> jspwiki.properties will assume the role of default_jspwiki.properties
>>>>> and
>>>>> we'll have a new optional jspwiki-custom.properties that will not be in
>>>>> the
>>>>> WAR at all (you don't want to have it in the WAR as it would get read
>>>>> over
>>>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>>>> jspwiki-custom.properties in the WAR you'd just use jspwiki.properties
>>>>> anyway.)  Backwards compatibility would not be an issue, as you'd just
>>>>> take
>>>>> your jspwiki.properties file from the old WAR and can still insert it
>>>>> into
>>>>> the new WAR or just rename it jspwiki-custom.properties and put it on
>>>>> the
>>>>> external classpath. WDYT?
>>>>>
>>>>> Regards,
>>>>> Glen
>>>>>
>>>>>
>>>>>
>>>>>
>

Re: Switch to Apache Roller-style properties configuration?

Posted by Glen Mazza <gl...@gmail.com>.
Yes, I like -Djspwiki.custom.config too.  I'll see what I can do for 
logging.

Glen

On 08/08/2013 08:01 AM, Harry Metske wrote:
> Changing the propname to something else would not be a problem,
>   "-Djspwiki.custom.config" is fine.
> What I meant is that it should be very clear _how_ these things play
> together, both in documentation and logging.
>
> kind regards,
> Harry
>
>
>
> On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:
>
>> Yes, [#1] would be the [3] I mentioned below.  But would it be a problem
>> if I renamed our "-Djspwiki.propertyfile" setting to "-Djspwiki.custom.**propertyfile"
>> (or "-Djspwiki.custom.config" similar to Roller) as it's technically no
>> longer a replacement of the jspwiki.properties file (which will always be
>> in the WAR) but an overlay of it (same thing, so long as your overlay has a
>> value for every property in the jspwiki.properties file, which current
>> -Djspwiki.propertyfiles have to do anyway as they fully replace that file.)
>>   I don't see this as a backwards compatibility issue as it's just a
>> command-line setting.
>>
>> Glen
>>
>>
>> On 08/07/2013 08:10 AM, Harry Metske wrote:
>>
>>> from an administration perspective (part of my daily live) I consider
>>> having configuration separate from binaries a must-have.
>>> So +1 on this, it should get easier to deploy (the 100% same) JSPWiki.war
>>> everywhere and having a per-environment small "override" property file
>>> that
>>> adapts the JSPWiki instance to the environment.
>>> I would like to see proper logging on property handling so we can see
>>> which
>>> property gets loaded from where, and what the final property values are
>>> going to be active.
>>> (and, similar to what Ichiro already mentioned, it should play nice with
>>> JSPWiki System property mechanism, see [#1].
>>>
>>> [#1] https://issues.apache.org/**jira/browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>>
>>> kind regards,
>>> Harry
>>>
>>>
>>>
>>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>>
>>>   Hi Team,
>>>> Apache Roller maintains two configuration files, a roller.properties[1]
>>>> which sits within the war, filled with defaults and never needs
>>>> modification (although a user can alter it if he wishes, it will work),
>>>> and
>>>> a roller-custom.properties file[2] which is placed in the classpath
>>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
>>>> GlassFish.)  For any value you put in roller-custom.properties, it will
>>>> overwrite what is in roller.properties in the WAR.  So you only need the
>>>> values in the custom file that you're actually overriding, making it very
>>>> short and simple.  And if you don't use a roller-custom.properties, all
>>>> of
>>>> the defaults in the WAR will prevail.
>>>>
>>>> You can keep deploying new versions of Roller.war to your servlet
>>>> container while never needing to re-configure either roller.properties or
>>>> roller-custom.properties, re-opening WARs, etc. as the
>>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>>> automatically
>>>> is used--this is very convenient during development when the WARs
>>>> frequently get updated.  Same with JUnit and Selenium testing, we don't
>>>> alter the roller.properties but just place the
>>>> roller-custom.properties[2]
>>>> in the test classpath under src/test/resources (if you have multiple
>>>> config
>>>> files, you can change the custom file name via setting a system
>>>> property[3]).  All this is handled by the WebloggerConfig[4] class, which
>>>> first reads in roller.properties and the overwrites any values from
>>>> roller-custom.properties.
>>>>
>>>> [1] http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>> resources/org/apache/roller/****weblogger/config/roller.**
>>>> properties?view=markup<http://**svn.apache.org/viewvc/roller/**
>>>> trunk/app/src/main/resources/**org/apache/roller/weblogger/**
>>>> config/roller.properties?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>>>> <
>>>> http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>> resources/org/apache/roller/****weblogger/config/roller.**
>>>> properties?revision=1511052&****view=markup<http://svn.apache.**
>>>> org/viewvc/roller/trunk/app/**src/main/resources/org/apache/**
>>>> roller/weblogger/config/**roller.properties?revision=**
>>>> 1511052&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>>> [2] http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>>> resources/roller-custom.****properties?view=log<http://**
>>>> svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**
>>>> roller-custom.properties?view=**log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>>> [3] http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>>> revision=1511052&view=markup#****l460<http://svn.apache.org/**
>>>> viewvc/roller/trunk/app/pom.**xml?revision=1511052&view=**markup#l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>>> [4] <http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>>> java/org/apache/roller/****weblogger/config/****
>>>> WebloggerConfig.java?revision=
>>>> **1491090&view=markup<http://**svn.apache.org/viewvc/roller/**
>>>> trunk/app/src/main/java/org/**apache/roller/weblogger/**
>>>> config/WebloggerConfig.java?**revision=1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>>>> http://**svn.apache.org/**viewvc/roller/**trunk/app/src/**
>>>>> main/java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>>
>>>> apache/roller/weblogger/****config/WebloggerConfig.java?****view=markup<
>>>> http://svn.apache.**org/viewvc/roller/trunk/app/**
>>>> src/main/java/org/apache/**roller/weblogger/config/**
>>>> WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>>>
>>>> I'd like to do the same thing with Apache JSPWiki, modify our own
>>>> PropertyReader.java to accept a new jspwiki-custom.properties file. Also,
>>>> to get rid of the mostly forgotten and empty /ini/default_jspwiki.****
>>>> properties
>>>>
>>>> and put whatever default values there into jspwiki.properties (unless
>>>> where
>>>> the latter has already overridden those properties.)  Basically,
>>>> jspwiki.properties will assume the role of default_jspwiki.properties and
>>>> we'll have a new optional jspwiki-custom.properties that will not be in
>>>> the
>>>> WAR at all (you don't want to have it in the WAR as it would get read
>>>> over
>>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>>> jspwiki-custom.properties in the WAR you'd just use jspwiki.properties
>>>> anyway.)  Backwards compatibility would not be an issue, as you'd just
>>>> take
>>>> your jspwiki.properties file from the old WAR and can still insert it
>>>> into
>>>> the new WAR or just rename it jspwiki-custom.properties and put it on the
>>>> external classpath. WDYT?
>>>>
>>>> Regards,
>>>> Glen
>>>>
>>>>
>>>>


Re: Switch to Apache Roller-style properties configuration?

Posted by Harry Metske <ha...@gmail.com>.
Changing the propname to something else would not be a problem,
 "-Djspwiki.custom.config" is fine.
What I meant is that it should be very clear _how_ these things play
together, both in documentation and logging.

kind regards,
Harry



On 8 August 2013 13:56, Glen Mazza <gl...@gmail.com> wrote:

> Yes, [#1] would be the [3] I mentioned below.  But would it be a problem
> if I renamed our "-Djspwiki.propertyfile" setting to "-Djspwiki.custom.**propertyfile"
> (or "-Djspwiki.custom.config" similar to Roller) as it's technically no
> longer a replacement of the jspwiki.properties file (which will always be
> in the WAR) but an overlay of it (same thing, so long as your overlay has a
> value for every property in the jspwiki.properties file, which current
> -Djspwiki.propertyfiles have to do anyway as they fully replace that file.)
>  I don't see this as a backwards compatibility issue as it's just a
> command-line setting.
>
> Glen
>
>
> On 08/07/2013 08:10 AM, Harry Metske wrote:
>
>> from an administration perspective (part of my daily live) I consider
>> having configuration separate from binaries a must-have.
>> So +1 on this, it should get easier to deploy (the 100% same) JSPWiki.war
>> everywhere and having a per-environment small "override" property file
>> that
>> adapts the JSPWiki instance to the environment.
>> I would like to see proper logging on property handling so we can see
>> which
>> property gets loaded from where, and what the final property values are
>> going to be active.
>> (and, similar to what Ichiro already mentioned, it should play nice with
>> JSPWiki System property mechanism, see [#1].
>>
>> [#1] https://issues.apache.org/**jira/browse/JSPWIKI-568<https://issues.apache.org/jira/browse/JSPWIKI-568>
>>
>> kind regards,
>> Harry
>>
>>
>>
>> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>>
>>  Hi Team,
>>>
>>> Apache Roller maintains two configuration files, a roller.properties[1]
>>> which sits within the war, filled with defaults and never needs
>>> modification (although a user can alter it if he wishes, it will work),
>>> and
>>> a roller-custom.properties file[2] which is placed in the classpath
>>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
>>> GlassFish.)  For any value you put in roller-custom.properties, it will
>>> overwrite what is in roller.properties in the WAR.  So you only need the
>>> values in the custom file that you're actually overriding, making it very
>>> short and simple.  And if you don't use a roller-custom.properties, all
>>> of
>>> the defaults in the WAR will prevail.
>>>
>>> You can keep deploying new versions of Roller.war to your servlet
>>> container while never needing to re-configure either roller.properties or
>>> roller-custom.properties, re-opening WARs, etc. as the
>>> roller-custom.properties still sitting in $CATALINA_HOME/lib
>>> automatically
>>> is used--this is very convenient during development when the WARs
>>> frequently get updated.  Same with JUnit and Selenium testing, we don't
>>> alter the roller.properties but just place the
>>> roller-custom.properties[2]
>>> in the test classpath under src/test/resources (if you have multiple
>>> config
>>> files, you can change the custom file name via setting a system
>>> property[3]).  All this is handled by the WebloggerConfig[4] class, which
>>> first reads in roller.properties and the overwrites any values from
>>> roller-custom.properties.
>>>
>>> [1] http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>> resources/org/apache/roller/****weblogger/config/roller.**
>>> properties?view=markup<http://**svn.apache.org/viewvc/roller/**
>>> trunk/app/src/main/resources/**org/apache/roller/weblogger/**
>>> config/roller.properties?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup>
>>> ><
>>> http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>> resources/org/apache/roller/****weblogger/config/roller.**
>>> properties?revision=1511052&****view=markup<http://svn.apache.**
>>> org/viewvc/roller/trunk/app/**src/main/resources/org/apache/**
>>> roller/weblogger/config/**roller.properties?revision=**
>>> 1511052&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>>> >
>>> [2] http://svn.apache.org/viewvc/****roller/trunk/app/src/test/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**>
>>> resources/roller-custom.****properties?view=log<http://**
>>> svn.apache.org/viewvc/roller/**trunk/app/src/test/resources/**
>>> roller-custom.properties?view=**log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>>> >
>>> [3] http://svn.apache.org/viewvc/****roller/trunk/app/pom.xml?**<http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**>
>>> revision=1511052&view=markup#****l460<http://svn.apache.org/**
>>> viewvc/roller/trunk/app/pom.**xml?revision=1511052&view=**markup#l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>>> >
>>> [4] <http://svn.apache.org/viewvc/****roller/trunk/app/src/main/**<http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**>
>>> java/org/apache/roller/****weblogger/config/****
>>> WebloggerConfig.java?revision=
>>> **1491090&view=markup<http://**svn.apache.org/viewvc/roller/**
>>> trunk/app/src/main/java/org/**apache/roller/weblogger/**
>>> config/WebloggerConfig.java?**revision=1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>> >
>>>
>>>> http://**svn.apache.org/**viewvc/roller/**trunk/app/src/**
>>>> main/java/org/**<http://svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**>
>>>>
>>> apache/roller/weblogger/****config/WebloggerConfig.java?****view=markup<
>>> http://svn.apache.**org/viewvc/roller/trunk/app/**
>>> src/main/java/org/apache/**roller/weblogger/config/**
>>> WebloggerConfig.java?view=**markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>> >
>>>
>>>
>>> I'd like to do the same thing with Apache JSPWiki, modify our own
>>> PropertyReader.java to accept a new jspwiki-custom.properties file. Also,
>>> to get rid of the mostly forgotten and empty /ini/default_jspwiki.****
>>> properties
>>>
>>> and put whatever default values there into jspwiki.properties (unless
>>> where
>>> the latter has already overridden those properties.)  Basically,
>>> jspwiki.properties will assume the role of default_jspwiki.properties and
>>> we'll have a new optional jspwiki-custom.properties that will not be in
>>> the
>>> WAR at all (you don't want to have it in the WAR as it would get read
>>> over
>>> what's in $CATALINA_HOME/lib, and if you had something to put in
>>> jspwiki-custom.properties in the WAR you'd just use jspwiki.properties
>>> anyway.)  Backwards compatibility would not be an issue, as you'd just
>>> take
>>> your jspwiki.properties file from the old WAR and can still insert it
>>> into
>>> the new WAR or just rename it jspwiki-custom.properties and put it on the
>>> external classpath. WDYT?
>>>
>>> Regards,
>>> Glen
>>>
>>>
>>>
>

Re: Switch to Apache Roller-style properties configuration?

Posted by Glen Mazza <gl...@gmail.com>.
Yes, [#1] would be the [3] I mentioned below.  But would it be a problem 
if I renamed our "-Djspwiki.propertyfile" setting to 
"-Djspwiki.custom.propertyfile" (or "-Djspwiki.custom.config" similar to 
Roller) as it's technically no longer a replacement of the 
jspwiki.properties file (which will always be in the WAR) but an overlay 
of it (same thing, so long as your overlay has a value for every 
property in the jspwiki.properties file, which current 
-Djspwiki.propertyfiles have to do anyway as they fully replace that 
file.)  I don't see this as a backwards compatibility issue as it's just 
a command-line setting.

Glen

On 08/07/2013 08:10 AM, Harry Metske wrote:
> from an administration perspective (part of my daily live) I consider
> having configuration separate from binaries a must-have.
> So +1 on this, it should get easier to deploy (the 100% same) JSPWiki.war
> everywhere and having a per-environment small "override" property file that
> adapts the JSPWiki instance to the environment.
> I would like to see proper logging on property handling so we can see which
> property gets loaded from where, and what the final property values are
> going to be active.
> (and, similar to what Ichiro already mentioned, it should play nice with
> JSPWiki System property mechanism, see [#1].
>
> [#1] https://issues.apache.org/jira/browse/JSPWIKI-568
>
> kind regards,
> Harry
>
>
>
> On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:
>
>> Hi Team,
>>
>> Apache Roller maintains two configuration files, a roller.properties[1]
>> which sits within the war, filled with defaults and never needs
>> modification (although a user can alter it if he wishes, it will work), and
>> a roller-custom.properties file[2] which is placed in the classpath
>> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
>> GlassFish.)  For any value you put in roller-custom.properties, it will
>> overwrite what is in roller.properties in the WAR.  So you only need the
>> values in the custom file that you're actually overriding, making it very
>> short and simple.  And if you don't use a roller-custom.properties, all of
>> the defaults in the WAR will prevail.
>>
>> You can keep deploying new versions of Roller.war to your servlet
>> container while never needing to re-configure either roller.properties or
>> roller-custom.properties, re-opening WARs, etc. as the
>> roller-custom.properties still sitting in $CATALINA_HOME/lib automatically
>> is used--this is very convenient during development when the WARs
>> frequently get updated.  Same with JUnit and Selenium testing, we don't
>> alter the roller.properties but just place the roller-custom.properties[2]
>> in the test classpath under src/test/resources (if you have multiple config
>> files, you can change the custom file name via setting a system
>> property[3]).  All this is handled by the WebloggerConfig[4] class, which
>> first reads in roller.properties and the overwrites any values from
>> roller-custom.properties.
>>
>> [1] http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>> resources/org/apache/roller/**weblogger/config/roller.**
>> properties?view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup><
>> http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>> resources/org/apache/roller/**weblogger/config/roller.**
>> properties?revision=1511052&**view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
>> [2] http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**
>> resources/roller-custom.**properties?view=log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
>> [3] http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**
>> revision=1511052&view=markup#**l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
>> [4] <http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
>> java/org/apache/roller/**weblogger/config/**WebloggerConfig.java?revision=
>> **1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
>>> http://**svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**
>> apache/roller/weblogger/**config/WebloggerConfig.java?**view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>>
>> I'd like to do the same thing with Apache JSPWiki, modify our own
>> PropertyReader.java to accept a new jspwiki-custom.properties file. Also,
>> to get rid of the mostly forgotten and empty /ini/default_jspwiki.**properties
>> and put whatever default values there into jspwiki.properties (unless where
>> the latter has already overridden those properties.)  Basically,
>> jspwiki.properties will assume the role of default_jspwiki.properties and
>> we'll have a new optional jspwiki-custom.properties that will not be in the
>> WAR at all (you don't want to have it in the WAR as it would get read over
>> what's in $CATALINA_HOME/lib, and if you had something to put in
>> jspwiki-custom.properties in the WAR you'd just use jspwiki.properties
>> anyway.)  Backwards compatibility would not be an issue, as you'd just take
>> your jspwiki.properties file from the old WAR and can still insert it into
>> the new WAR or just rename it jspwiki-custom.properties and put it on the
>> external classpath. WDYT?
>>
>> Regards,
>> Glen
>>
>>


Re: Switch to Apache Roller-style properties configuration?

Posted by Harry Metske <ha...@gmail.com>.
from an administration perspective (part of my daily live) I consider
having configuration separate from binaries a must-have.
So +1 on this, it should get easier to deploy (the 100% same) JSPWiki.war
everywhere and having a per-environment small "override" property file that
adapts the JSPWiki instance to the environment.
I would like to see proper logging on property handling so we can see which
property gets loaded from where, and what the final property values are
going to be active.
(and, similar to what Ichiro already mentioned, it should play nice with
JSPWiki System property mechanism, see [#1].

[#1] https://issues.apache.org/jira/browse/JSPWIKI-568

kind regards,
Harry



On 7 August 2013 05:43, Glen Mazza <gl...@gmail.com> wrote:

> Hi Team,
>
> Apache Roller maintains two configuration files, a roller.properties[1]
> which sits within the war, filled with defaults and never needs
> modification (although a user can alter it if he wishes, it will work), and
> a roller-custom.properties file[2] which is placed in the classpath
> ($CATALINA_HOME/lib for Tomcat, corresponding folders for JBoss or
> GlassFish.)  For any value you put in roller-custom.properties, it will
> overwrite what is in roller.properties in the WAR.  So you only need the
> values in the custom file that you're actually overriding, making it very
> short and simple.  And if you don't use a roller-custom.properties, all of
> the defaults in the WAR will prevail.
>
> You can keep deploying new versions of Roller.war to your servlet
> container while never needing to re-configure either roller.properties or
> roller-custom.properties, re-opening WARs, etc. as the
> roller-custom.properties still sitting in $CATALINA_HOME/lib automatically
> is used--this is very convenient during development when the WARs
> frequently get updated.  Same with JUnit and Selenium testing, we don't
> alter the roller.properties but just place the roller-custom.properties[2]
> in the test classpath under src/test/resources (if you have multiple config
> files, you can change the custom file name via setting a system
> property[3]).  All this is handled by the WebloggerConfig[4] class, which
> first reads in roller.properties and the overwrites any values from
> roller-custom.properties.
>
> [1] http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
> resources/org/apache/roller/**weblogger/config/roller.**
> properties?view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?view=markup><
> http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
> resources/org/apache/roller/**weblogger/config/roller.**
> properties?revision=1511052&**view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties?revision=1511052&view=markup>
> >
> [2] http://svn.apache.org/viewvc/**roller/trunk/app/src/test/**
> resources/roller-custom.**properties?view=log<http://svn.apache.org/viewvc/roller/trunk/app/src/test/resources/roller-custom.properties?view=log>
> [3] http://svn.apache.org/viewvc/**roller/trunk/app/pom.xml?**
> revision=1511052&view=markup#**l460<http://svn.apache.org/viewvc/roller/trunk/app/pom.xml?revision=1511052&view=markup#l460>
> [4] <http://svn.apache.org/viewvc/**roller/trunk/app/src/main/**
> java/org/apache/roller/**weblogger/config/**WebloggerConfig.java?revision=
> **1491090&view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?revision=1491090&view=markup>
> >http://**svn.apache.org/viewvc/roller/**trunk/app/src/main/java/org/**
> apache/roller/weblogger/**config/WebloggerConfig.java?**view=markup<http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/config/WebloggerConfig.java?view=markup>
>
> I'd like to do the same thing with Apache JSPWiki, modify our own
> PropertyReader.java to accept a new jspwiki-custom.properties file. Also,
> to get rid of the mostly forgotten and empty /ini/default_jspwiki.**properties
> and put whatever default values there into jspwiki.properties (unless where
> the latter has already overridden those properties.)  Basically,
> jspwiki.properties will assume the role of default_jspwiki.properties and
> we'll have a new optional jspwiki-custom.properties that will not be in the
> WAR at all (you don't want to have it in the WAR as it would get read over
> what's in $CATALINA_HOME/lib, and if you had something to put in
> jspwiki-custom.properties in the WAR you'd just use jspwiki.properties
> anyway.)  Backwards compatibility would not be an issue, as you'd just take
> your jspwiki.properties file from the old WAR and can still insert it into
> the new WAR or just rename it jspwiki-custom.properties and put it on the
> external classpath. WDYT?
>
> Regards,
> Glen
>
>