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 ModulePropertiesFeature 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(ModulePropertiesFeature.class,
ModulePropertiesFeature.class.getSimpleName() + ".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;
}
}
{
// don't use application.conf
use(ConfigFactory.empty());
use(new M1());
use(Resource.class);
}
@Test
public void property() throws Exception {
request()
.get("/r/property")
.expect("m1");
}
}