[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