package org.jooby; import java.nio.charset.Charset; import java.util.List; import java.util.UUID; import javax.inject.Inject; import javax.inject.Named; import org.jooby.mvc.GET; import org.jooby.mvc.Path; import org.jooby.test.ServerFeature; import org.junit.Test; import com.typesafe.config.ConfigFactory; public class ConfigPropertiesFeature extends ServerFeature { public static class StrConstructor { private String value; public StrConstructor(final String value) { this.value = value; } @Override public String toString() { return value; } } public static class ValueOf { private String value; @Override public boolean equals(final Object obj) { if (obj instanceof ValueOf) { return value.equals(((ValueOf) obj).value); } return false; } @Override public int hashCode() { return value.hashCode(); } @Override public String toString() { return value.toString(); } public static ValueOf valueOf(final String value) { ValueOf v = new ValueOf(); v.value = value; return v; } } public enum Letter { A, B; } @Path("/r") public static class Resource { private Charset charset; private Integer intprop; private String stringprop; private Env mode; private List<String> list; private Letter letter; private UUID uuid; private ValueOf valueOf; private StrConstructor strConstructor; @Inject public Resource(final Charset charset, final Env mode, @Named("intprop") final int intprop, @Named("stringprop") final String stringprop, @Named("list") final List<String> list, @Named("letter") final Letter letter, @Named("uuid") final UUID uuid, @Named("valueOf") final ValueOf valueOf, @Named("strconst") final StrConstructor strConstructor) { this.charset = charset; this.mode = mode; this.intprop = intprop; this.stringprop = stringprop; this.list = list; this.letter = letter; this.uuid = uuid; this.valueOf = valueOf; this.strConstructor = strConstructor; } @GET @Path("/properties") public Object properties() { return charset + " " + intprop + " " + stringprop + " " + uuid + " " + valueOf + " " + strConstructor; } @GET @Path("/mode") public Object mode() { return mode; } @GET @Path("/list") public Object list() { return list; } @GET @Path("/letter") public Object letter() { return letter; } } { use(ConfigFactory.parseResources("test.conf")); use(Resource.class); } @Test public void properties() throws Exception { request() .get("/r/properties") .expect("UTF-8 14 The man who sold the world a8843f4a-2c71-42ef-82aa-83fa8246c0d4 valueOf strconst"); } @Test public void mode() throws Exception { request() .get("/r/mode") .expect("dev"); } @Test public void list() throws Exception { request() .get("/r/list") .expect("[a, b, c]"); } @Test public void letter() throws Exception { request() .get("/r/letter") .expect("A"); } }