package org.jooby; import static java.util.Objects.requireNonNull; import static org.junit.Assert.assertEquals; import java.nio.charset.Charset; import java.util.Optional; 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.google.common.base.Charsets; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigValueFactory; public class CharsetFeature extends ServerFeature { public static class Resource { private Charset charset; @Inject public Resource(@Named("application.charset") final Charset namedCharset, final Charset charset) { this.charset = requireNonNull(charset, "def charset is required."); assertEquals(charset, namedCharset); } @GET @Path("/") public byte[] charset(final Optional<Charset> charset) { Charset cs = charset.orElse(this.charset); return cs.name().getBytes(cs); } } { use(ConfigFactory .empty() .withValue("application.charset", ConfigValueFactory.fromAnyRef(Charsets.ISO_8859_1.name()))); use(Resource.class); } @Test public void charset() throws Exception { request() .get("/") .expect("ISO-8859-1") .header("Content-Length", "10") .expect(200); request() .get("/?charset=UTF-8") .expect("UTF-8") .header("Content-Length", "5") .expect(200); } }