diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2013-09-22 20:25:21 -0700 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2013-09-22 20:25:21 -0700 |
commit | f2bd99c91b3d615c9fea4f9195fe1a888a2d93e8 (patch) | |
tree | 94713c5fbf5d4270af4b25518ec83e9de0766bc2 | |
parent | e18831fb897c7b9ea7bf7045ebaaf00f94e01acc (diff) |
Fixing tomcat config overrides.20130922b
Finally fixing config overrides. Found a bug? in restlet where the
Servlet context parameters aren't passed to the final application. I'm
working around the issue by creating my own component which builds the
config and shares it with the frontend and backend. Overall I think it's
a much more elegant solution.
Now we have the ability to specify an external config file for the F1
credentials and the ability configure different domains in different
tomcat containers.
-rw-r--r-- | src/com/p4square/grow/GrowProcessComponent.java | 59 | ||||
-rw-r--r-- | src/com/p4square/grow/backend/GrowBackend.java | 23 | ||||
-rw-r--r-- | src/com/p4square/grow/frontend/GrowFrontend.java | 20 | ||||
-rw-r--r-- | src/grow.properties | 5 | ||||
-rw-r--r-- | web/META-INF/context.xml | 2 | ||||
-rw-r--r-- | web/WEB-INF/restlet.xml | 20 | ||||
-rw-r--r-- | web/WEB-INF/web.xml | 4 |
7 files changed, 73 insertions, 60 deletions
diff --git a/src/com/p4square/grow/GrowProcessComponent.java b/src/com/p4square/grow/GrowProcessComponent.java new file mode 100644 index 0000000..4196a5e --- /dev/null +++ b/src/com/p4square/grow/GrowProcessComponent.java @@ -0,0 +1,59 @@ +/* + * Copyright 2013 Jesse Morgan + */ + +package com.p4square.grow; + +import org.restlet.Component; +import org.restlet.data.Protocol; + +import com.p4square.grow.backend.GrowBackend; +import com.p4square.grow.config.Config; +import com.p4square.grow.frontend.GrowFrontend; + +/** + * + * @author Jesse Morgan <jesse@jesterpm.net> + */ +public class GrowProcessComponent extends Component { + private final Config mConfig; + + /** + * Create a new Grow Process website component combining a frontend and backend. + */ + public GrowProcessComponent() throws Exception { + // Clients + getClients().add(Protocol.FILE); + getClients().add(Protocol.HTTP); + getClients().add(Protocol.HTTPS); + + // Prepare mConfig + mConfig = new Config(); + + // Frontend + GrowFrontend frontend = new GrowFrontend(mConfig); + getDefaultHost().attach(frontend); + + // Backend + GrowBackend backend = new GrowBackend(mConfig); + getInternalRouter().attach("/backend", backend); + } + + @Override + public void start() throws Exception { + // Load mConfigs + mConfig.updateConfig(this.getClass().getResourceAsStream("/grow.properties")); + + String configDomain = getContext().getParameters().getFirstValue("com.p4square.grow.configDomain"); + if (configDomain != null) { + mConfig.setDomain(configDomain); + } + + String configFilename = getContext().getParameters().getFirstValue("com.p4square.grow.configFile"); + if (configFilename != null) { + mConfig.updateConfig(configFilename); + } + + super.start(); + } +} diff --git a/src/com/p4square/grow/backend/GrowBackend.java b/src/com/p4square/grow/backend/GrowBackend.java index 09c1d84..7da6fff 100644 --- a/src/com/p4square/grow/backend/GrowBackend.java +++ b/src/com/p4square/grow/backend/GrowBackend.java @@ -34,7 +34,11 @@ public class GrowBackend extends Application { private final CassandraDatabase mDatabase; public GrowBackend() { - mConfig = new Config(); + this(new Config()); + } + + public GrowBackend(Config config) { + mConfig = config; mDatabase = new CassandraDatabase(); } @@ -71,23 +75,6 @@ public class GrowBackend extends Application { public void start() throws Exception { super.start(); - // Load config - final String configDomain = - getContext().getParameters().getFirstValue("configDomain"); - if (configDomain != null) { - mConfig.setDomain(configDomain); - } - - mConfig.updateConfig(this.getClass().getResourceAsStream("/grow.properties")); - - final String configFilename = - getContext().getParameters().getFirstValue("configFile"); - - if (configFilename != null) { - LOG.info("Loading configuration from " + configFilename); - mConfig.updateConfig(configFilename); - } - // Setup database mDatabase.setClusterName(mConfig.getString("clusterName", "Dev Cluster")); mDatabase.setKeyspaceName(mConfig.getString("keyspace", "GROW")); diff --git a/src/com/p4square/grow/frontend/GrowFrontend.java b/src/com/p4square/grow/frontend/GrowFrontend.java index 305622d..a1e3488 100644 --- a/src/com/p4square/grow/frontend/GrowFrontend.java +++ b/src/com/p4square/grow/frontend/GrowFrontend.java @@ -55,28 +55,16 @@ public class GrowFrontend extends FMFacade { mConfig = new Config(); } + public GrowFrontend(Config config) { + mConfig = config; + } + public Config getConfig() { return mConfig; } @Override public synchronized void start() throws Exception { - final String configDomain = - getContext().getParameters().getFirstValue("configDomain"); - if (configDomain != null) { - mConfig.setDomain(configDomain); - } - - mConfig.updateConfig(this.getClass().getResourceAsStream("/grow.properties")); - - final String configFilename = - getContext().getParameters().getFirstValue("configFile"); - - if (configFilename != null) { - LOG.info("Loading configuration from " + configFilename); - mConfig.updateConfig(configFilename); - } - Template errorTemplate = getTemplate("templates/error.ftl"); if (errorTemplate != null) { ErrorPage.setTemplate(errorTemplate); diff --git a/src/grow.properties b/src/grow.properties index 6dd282c..d9d3f29 100644 --- a/src/grow.properties +++ b/src/grow.properties @@ -7,11 +7,6 @@ dev.dynamicRoot = *.staticRoot = /grow-frontend *.dynamicRoot = /grow-frontend -*.f1ConsumerKey = 123 -*.f1ConsumerSecret = password-here -*.f1BaseUrl = staging.fellowshiponeapi.com -*.f1ChurchCode = pfseawa - prod.postAccountCreationPage = http://foursquaregrow.com/login.html # Backend Settings diff --git a/web/META-INF/context.xml b/web/META-INF/context.xml index 24744f5..c8a8f07 100644 --- a/web/META-INF/context.xml +++ b/web/META-INF/context.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> <Context> - <Parameter name="configFile" value="grow.properties" override="false"/> + <Parameter name="com.p4square.grow.configDomain" value="prod" override="true"/> </Context> diff --git a/web/WEB-INF/restlet.xml b/web/WEB-INF/restlet.xml deleted file mode 100644 index 67ee36d..0000000 --- a/web/WEB-INF/restlet.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<component xmlns="http://www.restlet.org/schemas/2.0/Component"> - <client protocol="FILE" /> - <client protocol="HTTP" /> - <client protocol="HTTPS" /> - <server protocols="HTTP HTTPS" /> - - <defaultHost> - <attach uripattern="/images" targetDescriptor="war:///images" /> - <attach uripattern="/scripts" targetDescriptor="war:///scripts" /> - <attach uripattern="/style.css" targetDescriptor="war:///style.css" /> - <attach uripattern="/favicon.ico" targetDescriptor="war:///favicon.ico" /> - <attach uriPattern="" targetClass="com.p4square.grow.frontend.GrowFrontend" /> - </defaultHost> - - <internalRouter> - <attach uriPattern="/backend" - targetClass="com.p4square.grow.backend.GrowBackend" /> - </internalRouter> -</component> diff --git a/web/WEB-INF/web.xml b/web/WEB-INF/web.xml index 758b004..4b85bde 100644 --- a/web/WEB-INF/web.xml +++ b/web/WEB-INF/web.xml @@ -14,6 +14,10 @@ <servlet-class> org.restlet.ext.servlet.ServerServlet </servlet-class> + <init-param> + <param-name>org.restlet.component</param-name> + <param-value>com.p4square.grow.GrowProcessComponent</param-value> + </init-param> </servlet> <!-- Catch all requests --> |