This is an automated email from the git hooks/post-receive script. bengen pushed a commit to annotated tag jackson-dataformat-smile-2.0.0 in repository jackson-dataformat-smile.
commit db8281c7592fd133b0b2d052d8475e0ca3542e81 Author: Tatu Saloranta <[email protected]> Date: Fri Feb 24 18:11:48 2012 -0800 Improvements to handling of errors --- pom.xml | 4 +-- .../jackson/dataformat/smile/SmileParser.java | 8 +++-- .../jackson/dataformat/smile/TestSmileAsTree.java | 37 ++++++++++++++++++++ .../dataformat/smile/TestSmileGenerator.java | 29 ++++++++++++++- .../dataformat/smile/TestSmileParserLocation.java | 3 +- 5 files changed, 74 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index d76de2f..dbf0edb 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> - <version>2.0.0-RC1</version> + <version>${project.version}</version> </dependency> <!-- and for testing, JUnit (or TestNG?) is needed --> @@ -65,7 +65,7 @@ <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> - <version>2.0.0-RC1</version> + <version>${project.version}</version> <scope>test</scope> </dependency> </dependencies> diff --git a/src/main/java/com/fasterxml/jackson/dataformat/smile/SmileParser.java b/src/main/java/com/fasterxml/jackson/dataformat/smile/SmileParser.java index 2b35d14..e3170c9 100644 --- a/src/main/java/com/fasterxml/jackson/dataformat/smile/SmileParser.java +++ b/src/main/java/com/fasterxml/jackson/dataformat/smile/SmileParser.java @@ -348,9 +348,10 @@ public class SmileParser @Override public JsonLocation getTokenLocation() { + // token location is correctly managed... return new JsonLocation(_ioContext.getSourceReference(), _tokenInputTotal, // bytes - -1, -1, -1); // char offset, line, column + -1, -1, (int) _tokenInputTotal); // char offset, line, column } /** @@ -360,9 +361,10 @@ public class SmileParser @Override public JsonLocation getCurrentLocation() { + final long offset = _currInputProcessed + _inputPtr; return new JsonLocation(_ioContext.getSourceReference(), - _currInputProcessed + _inputPtr, // bytes - -1, -1, -1); // char offset, line, column + offset, // bytes + -1, -1, (int) offset); // char offset, line, column } /* diff --git a/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileAsTree.java b/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileAsTree.java new file mode 100644 index 0000000..114e00b --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileAsTree.java @@ -0,0 +1,37 @@ +package com.fasterxml.jackson.dataformat.smile; + +import org.junit.Assert; + +import com.fasterxml.jackson.databind.JsonNode; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; + +public class TestSmileAsTree extends SmileTestBase +{ + public void testSimple() throws Exception + { + // create the serialized JSON with byte array + ObjectMapper mapper = new ObjectMapper(new SmileFactory()); + + ObjectNode top1 = mapper.createObjectNode(); + ObjectNode foo1 = top1.putObject("foo"); + foo1.put("bar", "baz"); + final String TEXT = "Caf\u00e9 1\u20ac"; + final byte[] TEXT_BYTES = TEXT.getBytes("UTF-8"); + foo1.put("dat", TEXT_BYTES); + + byte[] doc = mapper.writeValueAsBytes(top1); + // now, deserialize + JsonNode top2 = mapper.readValue(doc, JsonNode.class); + JsonNode foo2 = top2.get("foo"); + assertEquals("baz", foo2.get("bar").textValue()); + + JsonNode datNode = foo2.get("dat"); + if (!datNode.isBinary()) { + fail("Expected binary node; got "+datNode.getClass().getName()); + } + byte[] bytes = datNode.binaryValue(); + Assert.assertArrayEquals(TEXT_BYTES, bytes); + } +} diff --git a/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileGenerator.java b/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileGenerator.java index 3e2aa48..681acb5 100644 --- a/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileGenerator.java +++ b/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileGenerator.java @@ -1,7 +1,10 @@ package com.fasterxml.jackson.dataformat.smile; import java.io.*; +import java.util.HashMap; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.smile.SmileConstants; import com.fasterxml.jackson.dataformat.smile.SmileFactory; import com.fasterxml.jackson.dataformat.smile.SmileGenerator; @@ -176,7 +179,31 @@ public class TestSmileGenerator fail("Expected shared String length to be < "+BASE_LEN+", was "+data.length); } } - + + public void testWithMap() throws Exception + { + final SmileFactory smileFactory = new SmileFactory(); + smileFactory.disable(SmileGenerator.Feature.WRITE_HEADER); + smileFactory.disable(SmileParser.Feature.REQUIRE_HEADER); + final ObjectMapper smileObjectMapper = new ObjectMapper(smileFactory); + final HashMap<String, String> data = new HashMap<String,String>(); + data.put("key", "value"); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + final SmileGenerator smileGenerator = smileFactory.createJsonGenerator(out); + // NOTE: not optimal way -- should use "gen.writeStartArray()" -- but exposed a problem + out.write(SmileConstants.TOKEN_LITERAL_START_ARRAY); + smileObjectMapper.writeValue(smileGenerator, data); + smileGenerator.flush(); + // as above, should use generator + out.write(SmileConstants.TOKEN_LITERAL_END_ARRAY); + smileGenerator.close(); + byte[] doc = out.toByteArray(); + JsonNode root = smileObjectMapper.readTree(doc); + assertNotNull(root); + assertTrue(root.isArray()); + assertEquals(1, root.size()); + } + /* /********************************************************** /* Helper methods diff --git a/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileParserLocation.java b/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileParserLocation.java index d7e1c0f..1dd2e05 100644 --- a/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileParserLocation.java +++ b/src/test/java/com/fasterxml/jackson/dataformat/smile/TestSmileParserLocation.java @@ -20,7 +20,8 @@ public class TestSmileParserLocation assertNotNull(loc); // first: -1 for "not known", for character-based stuff assertEquals(-1, loc.getCharOffset()); - assertEquals(-1, loc.getColumnNr()); + // column will indicate offset, so: + assertEquals(4, loc.getColumnNr()); assertEquals(-1, loc.getLineNr()); // but first 4 bytes are for header assertEquals(4, loc.getByteOffset()); -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jackson-dataformat-smile.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

