I've been building a GWT 1.7 + GAE application using the eclipse plugin. The system constants are loaded into a MyConstants.properties file that is loaded by the singleton MyConstants class extending the ...gwt.i18n.client.Constants class.
I would like for MyConstants to load one of several files containing settings like
- MyConstants-local.properties
- MyConstants-alpha.properties
- MyConstants-beta.properties
- MyConstants-prod.properties
I've found several references to Guice's Enum Stage but this does not seem to be supported by gin. Besides, it only handles dev/prod and I definitely need a local/beta/prod solution.
Is there a way to do this using a command line arg or some other instance defined runtime parameter that will work when loaded onto GAE?
On the GAE server side, I was able to distinguish my dev environment from any deployed production environment with these bits of code.
Create one interface and two class files.
Define a bit of Guice magic binding using the "user.dir" env var. The last directory within the user.dir path is either the unique Google App Engine Application Identifier or your root project development directory. Once you know this, you can determine which set of constants to use.
This allows me to inject dev/prod constants into classes like this: