aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatu Saloranta <tatu.saloranta@iki.fi>2013-12-07 20:58:58 -0800
committerTatu Saloranta <tatu.saloranta@iki.fi>2013-12-07 20:58:58 -0800
commit9077a58a1325a4e5e610c13849b3509e8cd88111 (patch)
tree61a75649db70c911cbffc5d5ded2cdff3e9ed3e5 /src
parentc4a00322e562be3a53b93638b8ea9640a7c27806 (diff)
downloadjackson-databind-9077a58a1325a4e5e610c13849b3509e8cd88111.tar.gz
Fix #362
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/ser/std/UUIDSerializer.java12
-rw-r--r--src/test/java/com/fasterxml/jackson/databind/ser/TestJdkTypes.java6
-rw-r--r--src/test/java/com/fasterxml/jackson/databind/util/TestTokenBuffer.java8
3 files changed, 19 insertions, 7 deletions
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/UUIDSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/UUIDSerializer.java
index c59c8053d..e4f239b53 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/UUIDSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/UUIDSerializer.java
@@ -6,6 +6,7 @@ import java.util.UUID;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.util.TokenBuffer;
/**
* Specialized {@link JsonSerializer} to output {@link java.util.UUID}s.
@@ -41,8 +42,15 @@ public class UUIDSerializer
{
// First: perhaps we could serialize it as raw binary data?
if (jgen.canWriteBinaryNatively()) {
- jgen.writeBinary(_asBytes(value));
- return;
+ /* 07-Dec-2013, tatu: One nasty case; that of TokenBuffer. While it can
+ * technically retain binary data, we do not want to do use binary
+ * with it, as that results in UUIDs getting converted to Base64 for
+ * most conversions.
+ */
+ if (!(jgen instanceof TokenBuffer)) {
+ jgen.writeBinary(_asBytes(value));
+ return;
+ }
}
// UUID.toString() works ok functionally, but we can make it go much faster
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestJdkTypes.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestJdkTypes.java
index 98d264fe8..79865449d 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestJdkTypes.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestJdkTypes.java
@@ -18,7 +18,7 @@ import com.fasterxml.jackson.databind.*;
public class TestJdkTypes
extends com.fasterxml.jackson.databind.BaseMapTest
{
- private final ObjectMapper MAPPER = new ObjectMapper();
+ private final ObjectMapper MAPPER = objectMapper();
/**
* Unit test to catch bug [JACKSON-8].
@@ -144,6 +144,10 @@ public class TestJdkTypes
UUID uuid = UUID.fromString(value);
String json = MAPPER.writeValueAsString(uuid);
assertEquals(quote(uuid.toString()), json);
+
+ // Also, wrt [#362], should convert cleanly
+ String str = MAPPER.convertValue(uuid, String.class);
+ assertEquals(value, str);
}
// then use templating; note that these are not exactly valid UUIDs
diff --git a/src/test/java/com/fasterxml/jackson/databind/util/TestTokenBuffer.java b/src/test/java/com/fasterxml/jackson/databind/util/TestTokenBuffer.java
index e01bec68e..1e9b566d7 100644
--- a/src/test/java/com/fasterxml/jackson/databind/util/TestTokenBuffer.java
+++ b/src/test/java/com/fasterxml/jackson/databind/util/TestTokenBuffer.java
@@ -237,11 +237,11 @@ public class TestTokenBuffer extends com.fasterxml.jackson.test.BaseTest
UUID out = mapper.readValue(buf.asParser(), UUID.class);
assertEquals(uuid.toString(), out.toString());
- // second part: ensure it's written as binary...
+ // second part: As per [#362], should NOT use binary with TokenBuffer
JsonParser jp = buf.asParser();
- assertEquals(JsonToken.VALUE_EMBEDDED_OBJECT, jp.nextToken());
- byte[] raw = jp.getBinaryValue();
- assertEquals(16, raw.length);
+ assertEquals(JsonToken.VALUE_STRING, jp.nextToken());
+ String str = jp.getText();
+ assertEquals(value, str);
jp.close();
}
}