parseObject(JsonParser parser) throws IOException {
/**
* Parse the json and return as a Map taking a JsonParser and a starting token.
- *
- * Used when the first token is checked to see if the value is null prior to calling this.
- *
+ *
+ * Used when the first token is checked to see if the value is null prior to calling this.
*/
@Override
public Map parseObject(JsonParser parser, JsonToken token) throws IOException {
diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/EJsonReader.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/EJsonReader.java
similarity index 96%
rename from ebean-core/src/main/java/io/ebeaninternal/json/EJsonReader.java
rename to ebean-core-json/src/main/java/io/ebeaninternal/json/EJsonReader.java
index 938f7f5a99..7c808979f9 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/json/EJsonReader.java
+++ b/ebean-core-json/src/main/java/io/ebeaninternal/json/EJsonReader.java
@@ -8,15 +8,23 @@
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
+import java.util.*;
final class EJsonReader {
static final JsonFactory json = new JsonFactory();
+ private final JsonParser parser;
+ private final boolean modifyAware;
+ private final ModifyAwareFlag modifyAwareOwner;
+ private int depth;
+ private Stack stack;
+ private Context currentContext;
+
+ EJsonReader(JsonParser parser, boolean modifyAware) {
+ this.parser = parser;
+ this.modifyAware = modifyAware;
+ this.modifyAwareOwner = modifyAware ? new ModifyAwareFlag() : null;
+ }
@SuppressWarnings("unchecked")
static Map parseObject(String json, boolean modifyAware) throws IOException {
@@ -102,24 +110,6 @@ static Object parse(JsonParser parser, JsonToken token, boolean modifyAware) thr
return new EJsonReader(parser, modifyAware).parseJson(token);
}
- private final JsonParser parser;
-
- private final boolean modifyAware;
-
- private final ModifyAwareFlag modifyAwareOwner;
-
- private int depth;
-
- private Stack stack;
-
- private Context currentContext;
-
- EJsonReader(JsonParser parser, boolean modifyAware) {
- this.parser = parser;
- this.modifyAware = modifyAware;
- this.modifyAwareOwner = (modifyAware) ? new ModifyAwareFlag() : null;
- }
-
private void startArray() {
depth++;
stack.push(currentContext);
@@ -197,7 +187,6 @@ private Object parseJson(JsonToken token) throws IOException {
*/
private void processJsonToken(JsonToken token) throws IOException {
switch (token) {
-
case START_ARRAY:
startArray();
break;
@@ -273,17 +262,17 @@ private boolean isEmpty() {
}
}
- private static abstract class Context {
+ private abstract static class Context {
Context next;
abstract void popContext(Context temp);
abstract Object getValue();
- abstract void setKey(String key);
-
abstract void setValue(Object value);
+ abstract void setKey(String key);
+
abstract void setValueNull();
}
@@ -312,13 +301,13 @@ Object getValue() {
}
@Override
- void setKey(String key) {
- this.key = key;
+ void setValue(Object value) {
+ map.put(key, value);
}
@Override
- void setValue(Object value) {
- map.put(key, value);
+ void setKey(String key) {
+ this.key = key;
}
@Override
@@ -364,5 +353,4 @@ void setKey(String key) {
// not expected
}
}
-
}
diff --git a/ebean-core/src/main/java/io/ebeaninternal/json/EJsonWriter.java b/ebean-core-json/src/main/java/io/ebeaninternal/json/EJsonWriter.java
similarity index 99%
rename from ebean-core/src/main/java/io/ebeaninternal/json/EJsonWriter.java
rename to ebean-core-json/src/main/java/io/ebeaninternal/json/EJsonWriter.java
index 2a05f306d8..ff73de8f99 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/json/EJsonWriter.java
+++ b/ebean-core-json/src/main/java/io/ebeaninternal/json/EJsonWriter.java
@@ -20,6 +20,11 @@ final class EJsonWriter {
* Base jsonFactory implementation used when it is not passed in.
*/
static final JsonFactory jsonFactory = new JsonFactory();
+ private final JsonGenerator jsonGenerator;
+
+ private EJsonWriter(JsonGenerator jsonGenerator) {
+ this.jsonGenerator = jsonGenerator;
+ }
static String write(Object object) throws IOException {
StringWriter writer = new StringWriter(200);
@@ -42,12 +47,6 @@ static void writeCollection(Collection