[Geoprisma-dev] Variable substitution in GeoPrisma configuration
Etienne Dube
etienne.dube at boreal-is.com
Mon Jun 25 13:49:54 PDT 2012
After some offline discussions with Alexandre D., we agreed on providing
this feature only for <source> elements in <service> definitions. This
makes sense, since service URLs are pretty much the only thing that
would be configured differently for a same project within different
environments.
I created a ticket for this enhancement:
http://trac.osgeo.org/geoprisma/ticket/464 , and committed the change to
trunk as well. Feel free to review and comment on this.
Thanks,
Etienne
On 21/06/2012 2:44 PM, Etienne Dube wrote:
> Hi all,
>
> I've been thinking of a useful feature to add to GeoPrisma: variable
> substitution for configuration parameters.
>
>
> Rationale:
>
> Suppose you have a very long and complex XML configuration file. This
> file will be deployed in different environment, all with different
> characteristics: development, test and production. Each environment
> can have its own file paths and different URLs to access the services.
> It is somewhat of a pain to maintain three separate XML configuration
> files for these environments. Wouldn't it be awesome if instead, we
> could just use placeholder variables for the environment-specific
> parts of the configuration, and have GeoPrisma load the values for
> these variables from an external source (be it a properties file or a
> database table) and substitute them dynamically at runtime?
>
> For example:
>
> In gp.xml:
>
> <services>
> <wms>
> <name>S_MyWMS</name>
> <srs>*</srs>
> <format>*</format>
> <source>http://${s_mywms_host}/mywms</source>
> </wms>
> </services>
>
> In gp.properties for development env.:
>
> s_mywms_host=devserver.bovine-university.edu
>
> In gp.properties for production env.:
>
> s_mywms_host=prodserver.bovine-university.edu
>
> ... and so on.
>
>
> Implementation considerations:
>
> Now from what I've gathered, the logical place to add such a feature
> would be in Config.php. However the different implementations of the
> Config abstract class have their own way of getting their
> configuration attributes from their respective source (XML file or
> DB), so changes to these subclasses would be required as well
> (probably in XMLConfig.simpleXMLToArray() and
> PGSQLMapContextConfig.getRecords() ).
>
> A few questions as well:
>
> - Do we want to allow variable substitution for all configuration
> parameters? Or should we restrict it to only specific elements such as
> services?
> - Should we provide a way to escape the variable placeholders (${...}
> -- another syntax could be used as well), to allow the uncommon
> occurrences of passing a string containing ${...} as is?
> - What would be the best way to reference the external properties
> file / table? Should it be a parameter in the configuration, or do we
> want to have it hardcoded (e.g. always look for a gp.properties file
> in the same location as gp.xml).
>
> As always, any input is appreciated.
>
> Thanks!
> Etienne
>
--
Etienne Dubé
Developer
Boreal - Information Strategies
202A-101 rue du Moulin
Magog, Québec, J1X 4A1, Canada
http://www.boreal-is.com
Tel. : +1 514 313 5951 ext:1131
Email: etienne.dube at boreal-is.com
More information about the Geoprisma-dev
mailing list