[jackson-dataformat-smile] 20/31: Improvements to handling of errors
Hilko Bengen
bengen at alioth.debian.org
Mon Sep 2 17:37:25 UTC 2013
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 <tsaloranta at gmail.com>
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
More information about the pkg-java-commits
mailing list