That sounds like a good idea, and I had vague thoughts before of somehow hacking the propertyplaceholder stuff. Code samples definitely help get started. This is the type of "extra work" that I don't mind as much (especially when someone else does it), because it's likely to be useful down the road for other problems, and doesn't let unrelated, problem specific code creep into other areas of the app.

Thanks!

-- Chad

Tim Colson (tcolson) wrote:

Chad -
 Hmmm... here's an idea... no guarantees it will make any sense because
it's early in the morning (well, not 2:44AM early...but I digress)...

Instead of using the Spring "Property Configurator"... I inject my own
"MultiplePropertyConfigurer" which is property loader that can do more
tricks than the standard beast using static lookups from my
"Configuration" class.

So here is the idea... do something similar, wrap the existing
PropConfigurator and check for a special "versionNumber" lookup key
then deal with that differently. "Differently" meaning something like
loading the file from the classpath and returning the entire content as
the value.

Your milieage may vary, I make no guarantees, my wrist is not broken,
but what I've typed above may still be crap. <grin>

Cheers,
Timo



package com.foo.bleck;

import
org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.util.Properties;

/**
* Attempt to provide files for multiple environments using only one
properties file.
*
* foo=default_value
* lcl.foo=local_value
* dev.foo=dev_value
* */
public class MultiPropertyConfigurer extends
PropertyPlaceholderConfigurer{
public static Log log = LogFactory.getLog("MPC");


    protected String resolvePlaceholder(String s, Properties properties)
{

        String prop = Configuration.getProperty(s);
        String ppc_prop = null;
        // If we cannot find it, try the parent.
        if (null == prop) {
            ppc_prop = super.resolvePlaceholder(s,properties);
        }

        String val = (prop != null) ? prop : ppc_prop;
//        log.info("MPC:"+s+"="+val + " ppc_prop="+ ppc_prop );

        return (val != null) ? val : ppc_prop;
    }
}





-----Original Message-----
From: Chad Woolley [mailto:[EMAIL PROTECTED] Sent: Thursday, April 14, 2005 2:44 AM
To: jug-discussion@tucson-jug.org
Subject: Re: [jug-discussion] "Simple" Spring question


Thomas Hicks wrote:


I suspect you already know that *if* the file was in Java

Properties


(i.e. key=value) format
that you could have Spring inject the value directly into

your bean, as


illustrated below
where I am assuming that the file 'AntHillPro.properties'

contains a


line like:
        anthillpro.version=5.6

I had thought of that. Anthill will increment the last parsable number in the file and ignore everything else, so it would definitely work. However, I did want to avoid having the specialize the format of the file and add extra stuff other than just the number, because the number in it is used for other purposes (building artifact ids, for example).


I guess I could post-process it somehow to add the extra stuff after reading it, or remove it when used for other purposes, but that starts getting complicated again.

-- Chad

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to