package org.jooby; import static java.util.Objects.requireNonNull; import javax.inject.Inject; import javax.inject.Named; import org.jooby.Env; import org.jooby.Jooby; import org.jooby.mvc.GET; import org.jooby.mvc.Path; import org.jooby.test.ServerFeature; import org.junit.Test; import com.google.inject.Binder; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; public class OverrideModulePropertiesFeature extends ServerFeature { public enum Letter { A, B; } public static class M1 implements Jooby.Module { @Override public void configure(final Env mode, final Config config, final Binder binder) { } @Override public Config config() { return ConfigFactory.parseResources(getClass(), getClass().getSimpleName() + ".m1.conf"); } } @Path("/r") public static class Resource { private String property; @Inject public Resource(@Named("m1.prop") final String property) { this.property = requireNonNull(property, "The property is required."); } @GET @Path("/property") public Object property() { return property; } } { use(ConfigFactory.parseResources(getClass(), getClass().getSimpleName() + ".conf")); use(new M1()); use(Resource.class); } @Test public void property() throws Exception { request() .get("/r/property") .expect("m1.1") .expect(200); } }