This is an automated email from the git hooks/post-receive script. tjaalton pushed a commit to branch master in repository jackson-jaxrs-providers.
commit 155b97d0145d82066d9ba1d1cb2b4edfbdbecd05 Author: Tatu Saloranta <tatu.salora...@iki.fi> Date: Sat Oct 12 17:13:35 2013 -0700 Further testing improvements --- .../jaxrs/json/dw/TestWriteModifications.java | 75 ++++++++++++++++++++-- 1 file changed, 69 insertions(+), 6 deletions(-) diff --git a/json/src/test/java/com/fasterxml/jackson/jaxrs/json/dw/TestWriteModifications.java b/json/src/test/java/com/fasterxml/jackson/jaxrs/json/dw/TestWriteModifications.java index 14603a5..7bfffb5 100644 --- a/json/src/test/java/com/fasterxml/jackson/jaxrs/json/dw/TestWriteModifications.java +++ b/json/src/test/java/com/fasterxml/jackson/jaxrs/json/dw/TestWriteModifications.java @@ -7,6 +7,7 @@ import javax.servlet.*; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; @@ -22,6 +23,8 @@ import com.fasterxml.jackson.jaxrs.json.ResourceTestBase; public class TestWriteModifications extends ResourceTestBase { final static int TEST_PORT = 6021; + + final static int TEST_PORT2 = 6022; static class Point { public int x, y; @@ -43,13 +46,42 @@ public class TestWriteModifications extends ResourceTestBase } } + @Path("/point") + public static class IndentingResource + { + @GET + @Produces(MediaType.APPLICATION_JSON) + public Point getPoint(@QueryParam("indent") String indent) { + if ("true".equals(indent)) { + ObjectWriterInjector.set(new IndentingModifier(true)); + } else { + ObjectWriterInjector.set(new IndentingModifier(false)); + } + return new Point(1, 2); + } + } + public static class SimpleResourceApp extends JsonApplication { public SimpleResourceApp() { super(new SimpleResource()); } } + public static class SimpleIndentingApp extends JsonApplication { + public SimpleIndentingApp() { super(new IndentingResource()); } + } + public static class IndentingModifier extends ObjectWriterModifier { public static boolean doIndent = false; + + public final Boolean _indent; + + public IndentingModifier() { + this(null); + } + + public IndentingModifier(Boolean indent) { + _indent = indent; + } @Override public ObjectWriter modify(EndpointConfigBase<?> endpoint, @@ -57,8 +89,14 @@ public class TestWriteModifications extends ResourceTestBase Object valueToWrite, ObjectWriter w, JsonGenerator g) throws IOException { - if (doIndent) { - g.useDefaultPrettyPrinter(); + if (_indent != null) { + if (_indent.booleanValue()) { + g.useDefaultPrettyPrinter(); + } + } else { + if (doIndent) { + g.useDefaultPrettyPrinter(); + } } return w; } @@ -86,8 +124,12 @@ public class TestWriteModifications extends ResourceTestBase /* Test methods /********************************************************** */ - - public void testIndentation() throws Exception + + /** + * Test in which writer/generator modification is handled by + * changing state from Servlet Filter. + */ + public void testIndentationWithFilter() throws Exception { // We need a filter to inject modifier that enables Server server = startServer(TEST_PORT, SimpleResourceApp.class, @@ -102,12 +144,33 @@ public class TestWriteModifications extends ResourceTestBase // and then with indentation IndentingModifier.doIndent = true; - final HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.connect(); json = readUTF8(url.openStream()); assertEquals(aposToQuotes("{\n 'x' : 1,\n 'y' : 2\n}"), json); } finally { server.stop(); } } + + /** + * Test in which output writer/generator is modified by assignment from + * resource method itself. + */ + public void testIndentationWithResource() throws Exception + { + // We need a filter to inject modifier that enables + Server server = startServer(TEST_PORT2, SimpleIndentingApp.class); + final String URL_BASE = "http://localhost:"+TEST_PORT2+"/point"; + + try { + // First, without indent: + String json = readUTF8(new URL(URL_BASE).openStream()); + assertEquals(aposToQuotes("{'x':1,'y':2}"), json); + + // and then with indentation + json = readUTF8(new URL(URL_BASE + "?indent=true").openStream()); + assertEquals(aposToQuotes("{\n 'x' : 1,\n 'y' : 2\n}"), json); + } finally { + server.stop(); + } + } } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jackson-jaxrs-providers.git _______________________________________________ pkg-java-commits mailing list pkg-java-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits