diff --git a/commafeed-server/pom.xml b/commafeed-server/pom.xml index 7e54eb33..3a03c522 100644 --- a/commafeed-server/pom.xml +++ b/commafeed-server/pom.xml @@ -285,6 +285,11 @@ dropwizard-websocket-jee7-bundle 2.0.0 + + io.whitfin + dropwizard-environment-substitutor + 1.1.1 + javax.xml.bind diff --git a/commafeed-server/src/main/java/com/commafeed/CommaFeedApplication.java b/commafeed-server/src/main/java/com/commafeed/CommaFeedApplication.java index 0532c350..11583788 100644 --- a/commafeed-server/src/main/java/com/commafeed/CommaFeedApplication.java +++ b/commafeed-server/src/main/java/com/commafeed/CommaFeedApplication.java @@ -50,6 +50,8 @@ import com.commafeed.frontend.servlet.NextUnreadServlet; import com.commafeed.frontend.session.SessionHelperFactoryProvider; import com.commafeed.frontend.ws.WebSocketConfigurator; import com.commafeed.frontend.ws.WebSocketEndpoint; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Key; @@ -58,8 +60,7 @@ import com.google.inject.TypeLiteral; import be.tomcools.dropwizard.websocket.WebsocketBundle; import io.dropwizard.Application; import io.dropwizard.assets.AssetsBundle; -import io.dropwizard.configuration.EnvironmentVariableSubstitutor; -import io.dropwizard.configuration.SubstitutingSourceProvider; +import io.dropwizard.configuration.DefaultConfigurationFactoryFactory; import io.dropwizard.db.DataSourceFactory; import io.dropwizard.forms.MultiPartBundle; import io.dropwizard.hibernate.HibernateBundle; @@ -69,6 +70,7 @@ import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Environment; import io.dropwizard.web.WebBundle; import io.dropwizard.web.conf.WebConfiguration; +import io.whitfin.dropwizard.configuration.EnvironmentSubstitutor; public class CommaFeedApplication extends Application { @@ -87,6 +89,15 @@ public class CommaFeedApplication extends Application { @Override public void initialize(Bootstrap bootstrap) { + bootstrap.setConfigurationFactoryFactory(new DefaultConfigurationFactoryFactory() { + @Override + protected ObjectMapper configureObjectMapper(ObjectMapper objectMapper) { + // disable case sensitivity because EnvironmentSubstitutor maps MYPROPERTY to myproperty and not to myProperty + return objectMapper.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES); + } + }); + bootstrap.setConfigurationSourceProvider(new EnvironmentSubstitutor("CF", bootstrap.getConfigurationSourceProvider())); + bootstrap.getObjectMapper().registerModule(new MetricsModule(TimeUnit.SECONDS, TimeUnit.SECONDS, false)); bootstrap.addBundle(websocketBundle = new WebsocketBundle<>()); @@ -124,10 +135,6 @@ public class CommaFeedApplication extends Application { bootstrap.addBundle(new AssetsBundle("/assets/", "/", "index.html")); bootstrap.addBundle(new MultiPartBundle()); - - // Enable variable substitution with environment variables - bootstrap.setConfigurationSourceProvider( - new SubstitutingSourceProvider(bootstrap.getConfigurationSourceProvider(), new EnvironmentVariableSubstitutor(false))); } @Override