This class load a regular property file in {@link java.util.Properties} instance. The main feature is that property canbe chained in three levels. Then when querying for a property, if it's not found in the deepest level, the parent will be queryed and so on.
A prefix must be defined to discriminate the property name and the level-1, level-2 names. The default prefix is {@link #ODE_PREFFIX}.
Properties must respect the following pattern: [level1.[level2.]prefix.]property
A concrete use case could be the definition of properties for wsdl services and ports.
Level 0 would be: values common to all services and ports.
Level 1: values common to a given service.
Level 2: values common to a given port.
For instance, if the property file looks like this:
timeout=40000 film-service.port-of-cannes.ode.timeout=50000 max-redirects=30 brel-service.ode.max-redirects=40 brel-service.port-of-amsterdam.ode.max-redirects=60
The following values may be expected:
getProperty("max-redirects") => 30 getProperty("brel-service", "max-redirects") => 40 getProperty("brel-service", "port-of-amsterdam", "max-redirects") => 60 getProperty("film-service", "timeout") => 40000 getProperty("film-service", "port-of-cannes", "timeout") => 50000 getProperty("brel-service", "port-of-amsterdam", "timeout") => 40000
Values may contain some environment variables. For instance, message=You're using ${java.version}.
This class is not thread-safe.
@author
Alexis Midon