You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2016/08/26 08:11:58 UTC
johnzon git commit: JOHNZON-94 making JsonValue serializable
Repository: johnzon
Updated Branches:
refs/heads/master f634af84f -> 60525af05
JOHNZON-94 making JsonValue serializable
Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/60525af0
Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/60525af0
Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/60525af0
Branch: refs/heads/master
Commit: 60525af05ea8154529fac1206b6231d9757d0333
Parents: f634af8
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Fri Aug 26 10:11:44 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Fri Aug 26 10:11:44 2016 +0200
----------------------------------------------------------------------
.../johnzon/core/JsonArrayBuilderImpl.java | 11 +-
.../org/apache/johnzon/core/JsonArrayImpl.java | 25 ++--
.../org/apache/johnzon/core/JsonDoubleImpl.java | 6 +-
.../org/apache/johnzon/core/JsonLongImpl.java | 6 +-
.../org/apache/johnzon/core/JsonNumberImpl.java | 8 +-
.../johnzon/core/JsonObjectBuilderImpl.java | 4 +-
.../org/apache/johnzon/core/JsonObjectImpl.java | 25 ++--
.../org/apache/johnzon/core/JsonReaderImpl.java | 6 +-
.../org/apache/johnzon/core/JsonStringImpl.java | 5 +-
.../johnzon/core/SerializablePrimitives.java | 97 ++++++++++++++
.../apache/johnzon/core/SerializationTest.java | 130 +++++++++++++++++++
.../johnzon/mapper/MappingParserImpl.java | 20 +--
12 files changed, 277 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
index 5dfd839..ea46072 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
@@ -18,6 +18,10 @@
*/
package org.apache.johnzon.core;
+import javax.json.JsonArray;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
+import javax.json.JsonValue;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -25,11 +29,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import javax.json.JsonArray;
-import javax.json.JsonArrayBuilder;
-import javax.json.JsonObjectBuilder;
-import javax.json.JsonValue;
-
class JsonArrayBuilderImpl implements JsonArrayBuilder, Serializable {
private List<JsonValue> tmpList;
@@ -77,7 +76,7 @@ class JsonArrayBuilderImpl implements JsonArrayBuilder, Serializable {
@Override
public JsonArrayBuilder add(final boolean value) {
- addValue(value ? JsonValue.TRUE : JsonValue.FALSE);
+ addValue(value ? SerializablePrimitives.TRUE : SerializablePrimitives.FALSE);
return this;
}
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayImpl.java
index fee44ce..6906645 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayImpl.java
@@ -18,16 +18,15 @@
*/
package org.apache.johnzon.core;
-import java.io.Serializable;
-import java.util.AbstractList;
-import java.util.Iterator;
-import java.util.List;
-
import javax.json.JsonArray;
import javax.json.JsonNumber;
import javax.json.JsonObject;
import javax.json.JsonString;
import javax.json.JsonValue;
+import java.io.Serializable;
+import java.util.AbstractList;
+import java.util.Iterator;
+import java.util.List;
class JsonArrayImpl extends AbstractList<JsonValue> implements JsonArray, Serializable {
private Integer hashCode = null;
@@ -119,9 +118,9 @@ class JsonArrayImpl extends AbstractList<JsonValue> implements JsonArray, Serial
public boolean getBoolean(final int index) {
final JsonValue val = value(index, JsonValue.class);
- if (val == JsonValue.TRUE) {
+ if (SerializablePrimitives.TRUE.equals(val)) {
return true;
- } else if (val == JsonValue.FALSE) {
+ } else if (SerializablePrimitives.FALSE.equals(val)) {
return false;
} else {
throw new ClassCastException();
@@ -144,20 +143,12 @@ class JsonArrayImpl extends AbstractList<JsonValue> implements JsonArray, Serial
}
final JsonValue val = get(index);
-
- if (val == JsonValue.TRUE) {
- return true;
- } else if (val == JsonValue.FALSE) {
- return false;
- } else {
- return defaultValue;
- }
-
+ return SerializablePrimitives.TRUE.equals(val) || !SerializablePrimitives.FALSE.equals(val) && defaultValue;
}
@Override
public boolean isNull(final int index) {
- return value(index, JsonValue.class) == JsonValue.NULL;
+ return JsonValue.NULL.equals(value(index, JsonValue.class));
}
@Override
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/main/java/org/apache/johnzon/core/JsonDoubleImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonDoubleImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonDoubleImpl.java
index bb51b36..cff63c0 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonDoubleImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonDoubleImpl.java
@@ -18,12 +18,12 @@
*/
package org.apache.johnzon.core;
+import javax.json.JsonNumber;
+import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
-import javax.json.JsonNumber;
-
-final class JsonDoubleImpl implements JsonNumber {
+final class JsonDoubleImpl implements JsonNumber, Serializable {
private final double value;
JsonDoubleImpl(final double value) {
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java
index 1a85b0b..4068d9b 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java
@@ -18,12 +18,12 @@
*/
package org.apache.johnzon.core;
+import javax.json.JsonNumber;
+import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
-import javax.json.JsonNumber;
-
-public final class JsonLongImpl implements JsonNumber {
+public final class JsonLongImpl implements JsonNumber, Serializable {
private final long value;
JsonLongImpl(final long value) {
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/main/java/org/apache/johnzon/core/JsonNumberImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonNumberImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonNumberImpl.java
index 8b560ed..9ad7752 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonNumberImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonNumberImpl.java
@@ -18,14 +18,14 @@
*/
package org.apache.johnzon.core;
+import javax.json.JsonNumber;
+import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
-import javax.json.JsonNumber;
-
-final class JsonNumberImpl implements JsonNumber {
+final class JsonNumberImpl implements JsonNumber, Serializable {
private final BigDecimal value;
- private Integer hashCode = null;
+ private transient Integer hashCode = null;
JsonNumberImpl(final BigDecimal decimal) {
if(decimal == null) {
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
index ea15a17..2a260f3 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
@@ -77,13 +77,13 @@ class JsonObjectBuilderImpl implements JsonObjectBuilder, Serializable {
@Override
public JsonObjectBuilder add(final String name, final boolean value) {
- putValue(name, value ? JsonValue.TRUE : JsonValue.FALSE);
+ putValue(name, value ? SerializablePrimitives.TRUE : SerializablePrimitives.FALSE);
return this;
}
@Override
public JsonObjectBuilder addNull(final String name) {
- putValue(name, JsonValue.NULL);
+ putValue(name, SerializablePrimitives.NULL);
return this;
}
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
index d7912cb..ef8b84d 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
@@ -18,21 +18,20 @@
*/
package org.apache.johnzon.core;
-import java.io.Serializable;
-import java.util.AbstractMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
import javax.json.JsonArray;
import javax.json.JsonNumber;
import javax.json.JsonObject;
import javax.json.JsonString;
import javax.json.JsonValue;
+import java.io.Serializable;
+import java.util.AbstractMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
final class JsonObjectImpl extends AbstractMap<String, JsonValue> implements JsonObject, Serializable {
- private Integer hashCode = null;
+ private transient Integer hashCode = null;
private final Map<String, JsonValue> unmodifieableBackingMap;
private <T> T value(final String name, final Class<T> clazz) {
@@ -109,20 +108,14 @@ final class JsonObjectImpl extends AbstractMap<String, JsonValue> implements Jso
@Override
public boolean getBoolean(final String name) {
- return value(name, JsonValue.class) == JsonValue.TRUE;
+ return SerializablePrimitives.TRUE.equals(value(name, JsonValue.class));
}
@Override
public boolean getBoolean(final String name, final boolean defaultValue) {
final Object v = unmodifieableBackingMap.get(name);
if (v != null) {
- if (v == JsonValue.TRUE) {
- return true;
- } else if (v == JsonValue.FALSE) {
- return false;
- } else {
- return defaultValue;
- }
+ return SerializablePrimitives.TRUE.equals(v) || !SerializablePrimitives.FALSE.equals(v) && defaultValue;
} else {
return defaultValue;
}
@@ -130,7 +123,7 @@ final class JsonObjectImpl extends AbstractMap<String, JsonValue> implements Jso
@Override
public boolean isNull(final String name) {
- return value(name, JsonValue.class) == JsonValue.NULL;
+ return JsonValue.NULL.equals(value(name, JsonValue.class));
}
@Override
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java
index b0107ee..2632c9a 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java
@@ -79,19 +79,19 @@ public class JsonReaderImpl implements JsonReader {
throw new JsonParsingException("Expected end of file", parser.getLocation());
}
close();
- return JsonValue.FALSE;
+ return SerializablePrimitives.FALSE;
case VALUE_TRUE:
if (parser.hasNext()) {
throw new JsonParsingException("Expected end of file", parser.getLocation());
}
close();
- return JsonValue.TRUE;
+ return SerializablePrimitives.TRUE;
case VALUE_NULL:
if (parser.hasNext()) {
throw new JsonParsingException("Expected end of file", parser.getLocation());
}
close();
- return JsonValue.NULL;
+ return SerializablePrimitives.NULL;
case VALUE_NUMBER:
if (parser.hasNext()) {
throw new JsonParsingException("Expected end of file", parser.getLocation());
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStringImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStringImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStringImpl.java
index a7e8f29..5ec8a36 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStringImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStringImpl.java
@@ -19,11 +19,12 @@
package org.apache.johnzon.core;
import javax.json.JsonString;
+import java.io.Serializable;
-final class JsonStringImpl implements JsonString {
+final class JsonStringImpl implements JsonString, Serializable {
private final String value;
private String escape;
- private Integer hashCode = null;
+ private transient Integer hashCode = null;
JsonStringImpl(final String value) {
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/main/java/org/apache/johnzon/core/SerializablePrimitives.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/SerializablePrimitives.java b/johnzon-core/src/main/java/org/apache/johnzon/core/SerializablePrimitives.java
new file mode 100644
index 0000000..c046f85
--- /dev/null
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/SerializablePrimitives.java
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.johnzon.core;
+
+import javax.json.JsonValue;
+import java.io.InvalidObjectException;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+
+public final class SerializablePrimitives {
+ private SerializablePrimitives() {
+ // no-op
+ }
+
+ public static final JsonValue NULL = new SerializableJsonValue(JsonValue.NULL);
+ public static final JsonValue TRUE = new SerializableJsonValue(JsonValue.TRUE);
+ public static final JsonValue FALSE = new SerializableJsonValue(JsonValue.FALSE);
+
+ private static final class SerializableJsonValue implements JsonValue, Serializable {
+ private final JsonValue delegate;
+
+ SerializableJsonValue(final JsonValue value) {
+ delegate = value;
+ }
+
+ @Override
+ public ValueType getValueType() {
+ return delegate.getValueType();
+ }
+
+ @Override
+ public String toString() {
+ return delegate.toString();
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o || o == delegate) {
+ return true;
+ }
+ if (o == null) {
+ return false;
+ }
+ if (SerializableJsonValue.class.isInstance(o)) {
+ return SerializableJsonValue.class.cast(o).delegate.equals(delegate);
+ }
+ return JsonValue.class.isInstance(o) && o.equals(delegate);
+
+ }
+
+ @Override
+ public int hashCode() {
+ return delegate.hashCode();
+ }
+
+ private Object writeReplace() throws ObjectStreamException {
+ return new SerializationReplacement(delegate.toString());
+ }
+ }
+
+ private static final class SerializationReplacement implements Serializable {
+ private final String value;
+
+ private SerializationReplacement(final String value) {
+ this.value = value;
+ }
+
+ private Object readResolve() throws ObjectStreamException {
+ if ("null".equals(value)) {
+ return NULL;
+ }
+ if ("true".equals(value)) {
+ return TRUE;
+ }
+ if ("false".equals(value)) {
+ return FALSE;
+ }
+ throw new InvalidObjectException("Unknown " + value);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-core/src/test/java/org/apache/johnzon/core/SerializationTest.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/SerializationTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/SerializationTest.java
new file mode 100644
index 0000000..b80aae7
--- /dev/null
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/SerializationTest.java
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.johnzon.core;
+
+import org.junit.Test;
+
+import javax.json.JsonArray;
+import javax.json.JsonNumber;
+import javax.json.JsonObject;
+import javax.json.JsonString;
+import javax.json.JsonValue;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import static java.util.Arrays.asList;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
+
+public class SerializationTest {
+ @Test
+ public void jsonString() throws IOException, ClassNotFoundException {
+ final JsonString source = new JsonStringImpl("test");
+ final JsonString string = serialDeser(source);
+ assertNotSame(source, string);
+ assertEquals("test", string.getString());
+ assertEquals("\"test\"", string.toString());
+ }
+
+ @Test
+ public void jsonNumber() throws IOException, ClassNotFoundException {
+ final JsonNumber source = new JsonNumberImpl(new BigDecimal("1.0"));
+ final JsonNumber deserialized = serialDeser(source);
+ assertNotSame(source, deserialized);
+ assertEquals(1.0, deserialized.doubleValue(), 0.);
+ assertEquals("1.0", deserialized.toString());
+ }
+
+ @Test
+ public void jsonLong() throws IOException, ClassNotFoundException {
+ final JsonNumber source = new JsonLongImpl(1);
+ final JsonNumber string = serialDeser(source);
+ assertNotSame(source, string);
+ assertEquals(1, string.longValue());
+ assertEquals("1", string.toString());
+ }
+
+ @Test
+ public void jsonDouble() throws IOException, ClassNotFoundException {
+ final JsonNumber source = new JsonDoubleImpl(1.5);
+ final JsonNumber string = serialDeser(source);
+ assertNotSame(source, string);
+ assertEquals(1.5, string.doubleValue(), 0.);
+ assertEquals("1.5", string.toString());
+ }
+
+ @Test
+ public void jsonObject() throws IOException, ClassNotFoundException {
+ final Map<String, JsonValue> map = new LinkedHashMap<String, JsonValue>();
+ map.put("test", new JsonStringImpl("val"));
+ final JsonObject source = new JsonObjectImpl(Collections.unmodifiableMap(map));
+ final JsonObject serialization = serialDeser(source);
+ assertNotSame(source, serialization);
+ assertTrue(serialization.containsKey("test"));
+ assertEquals("val", serialization.getString("test"));
+ assertEquals(1, serialization.size());
+ }
+
+ @Test
+ public void jsonArray() throws IOException, ClassNotFoundException {
+ final List<JsonValue> list = new ArrayList<JsonValue>();
+ list.add(new JsonStringImpl("test"));
+ final JsonArray source = new JsonArrayImpl(Collections.unmodifiableList(list));
+ final JsonArray serialization = serialDeser(source);
+ assertNotSame(source, serialization);
+ assertEquals(1, serialization.size());
+ assertEquals("test", JsonString.class.cast(serialization.iterator().next()).getString());
+ }
+
+ @Test
+ public void jsonPrimitives() throws IOException, ClassNotFoundException { // NOTE: spec jar primitives are not serializable
+ for (final JsonValue v : asList(SerializablePrimitives.FALSE, SerializablePrimitives.TRUE, SerializablePrimitives.NULL)) {
+ assertEquals(v, serialDeser(v));
+ }
+ }
+
+ @Test
+ public void primitiveInObject() throws IOException, ClassNotFoundException {
+ assertTrue(serialDeser(JsonProviderImpl.provider().createObjectBuilder()
+ .add("bool", true)
+ .build()
+ .getBoolean("bool")));
+ }
+
+ private static <T> T serialDeser(final T instance) throws IOException, ClassNotFoundException {
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(instance);
+ oos.close();
+ final ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
+ try {
+ return (T) in.readObject();
+ } finally {
+ in.close();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/johnzon/blob/60525af0/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
index a96a64e..e731b8f 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
@@ -173,13 +173,13 @@ public class MappingParserImpl implements MappingParser {
return (T) new ArrayList(asList(Object[].class.cast(buildArrayWithComponentType(jsonArray, Object.class, null))));
}
}
- if (JsonValue.NULL == jsonValue) {
+ if (JsonValue.NULL.equals(jsonValue)) {
return null;
}
- if (JsonValue.TRUE == jsonValue && (Boolean.class == targetType || boolean.class == targetType || Object.class == targetType)) {
+ if (jsonValue.equals(JsonValue.TRUE) && (Boolean.class == targetType || boolean.class == targetType || Object.class == targetType)) {
return (T) Boolean.TRUE;
}
- if (JsonValue.FALSE == jsonValue && (Boolean.class == targetType || boolean.class == targetType || Object.class == targetType)) {
+ if (jsonValue.equals(JsonValue.FALSE) && (Boolean.class == targetType || boolean.class == targetType || Object.class == targetType)) {
return (T) Boolean.FALSE;
}
throw new IllegalArgumentException("Unsupported " + jsonValue + " for type " + targetType);
@@ -301,7 +301,7 @@ public class MappingParserImpl implements MappingParser {
}
final AccessMode.Writer setterMethod = value.writer;
- if (jsonValue == JsonValue.NULL) { // forced
+ if (JsonValue.NULL.equals(jsonValue)) { // forced
setterMethod.write(t, null);
} else {
Object existingInstance = null;
@@ -422,15 +422,15 @@ public class MappingParserImpl implements MappingParser {
private Object toObject(final Object baseInstance, final JsonValue jsonValue,
final Type type, final Adapter itemConverter) {
- if (jsonValue == null || JsonValue.NULL == jsonValue) {
+ if (jsonValue == null || JsonValue.NULL.equals(jsonValue)) {
return null;
}
if (type == Boolean.class || type == boolean.class) {
- if (jsonValue == JsonValue.TRUE) {
+ if (jsonValue.equals(JsonValue.TRUE)) {
return true;
}
- if (jsonValue == JsonValue.FALSE) {
+ if (jsonValue.equals(JsonValue.FALSE)) {
return false;
}
throw new MapperException("Unable to parse " + jsonValue + " to boolean");
@@ -441,10 +441,10 @@ public class MappingParserImpl implements MappingParser {
}
if (Object.class == type) { // handling specific types here to keep exception in standard handling
- if (jsonValue == JsonValue.TRUE) {
+ if (jsonValue.equals(JsonValue.TRUE)) {
return true;
}
- if (jsonValue == JsonValue.FALSE) {
+ if (jsonValue.equals(JsonValue.FALSE)) {
return false;
}
if (JsonNumber.class.isInstance(jsonValue)) {
@@ -584,7 +584,7 @@ public class MappingParserImpl implements MappingParser {
}
for (final JsonValue value : jsonArray) {
- collection.add(value == JsonValue.NULL ? null : toObject(null, value, mapping.arg, itemConverter));
+ collection.add(JsonValue.NULL.equals(value) ? null : toObject(null, value, mapping.arg, itemConverter));
}
if (EnumSet.class == mapping.raw) {