You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by st...@apache.org on 2016/04/03 19:01:28 UTC

[09/10] incubator-johnzon git commit: JOHNZON-71 swap mapper parts out to MappingGenerator

JOHNZON-71 swap mapper parts out to MappingGenerator


Project: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/commit/f2a00fb1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/tree/f2a00fb1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/diff/f2a00fb1

Branch: refs/heads/master
Commit: f2a00fb11aeeb0ca6adf860d8a5dd8d4cbcb20a1
Parents: d88dfde
Author: Mark Struberg <st...@apache.org>
Authored: Sun Apr 3 18:26:56 2016 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Sun Apr 3 18:26:56 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/johnzon/mapper/Mapper.java  | 16 +++++++++++--
 .../johnzon/mapper/MappingGeneratorImpl.java    | 25 +++++++++++++-------
 2 files changed, 31 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/f2a00fb1/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
index 0a7b76d..aae3c34 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
@@ -311,13 +311,25 @@ public class Mapper implements Closeable {
             }
             return;
         }
+
         final JsonGenerator generator = generatorFactory.createGenerator(stream);
-        doWriteHandlingNullObject(object, generator);
+        writeObject(object, generator);
     }
 
     public void writeObject(final Object object, final OutputStream stream) {
         final JsonGenerator generator = generatorFactory.createGenerator(stream, config.getEncoding());
-        doWriteHandlingNullObject(object, generator);
+        writeObject(object, generator);
+    }
+
+    private void writeObject(Object object, JsonGenerator generator) {
+        try {
+            MappingGenerator mappingGenerator = new MappingGeneratorImpl(config, generator, mappings);
+            generator.writeStartObject();
+            mappingGenerator.writeObject(object);
+            generator.writeEnd();
+        } finally {
+            doCloseOrFlush(generator);
+        }
     }
 
     public String writeArrayAsString(final Collection<?> instance) {

http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/f2a00fb1/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
index 3129572..d823be6 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
@@ -34,7 +34,7 @@ import org.apache.johnzon.mapper.internal.AdapterKey;
 public class MappingGeneratorImpl implements MappingGenerator {
     private final MapperConfig config;
     private final JsonGenerator generator;
-    protected final Mappings mappings;
+    private final Mappings mappings;
 
 
     MappingGeneratorImpl(MapperConfig config, JsonGenerator jsonGenerator, final Mappings mappings) {
@@ -55,17 +55,22 @@ public class MappingGeneratorImpl implements MappingGenerator {
         } else if (object instanceof JsonValue) {
             generator.write((JsonValue) object);
         } else {
-            doWriteObject(object);
+            doWriteObject(object, false);
         }
         return this;
     }
 
-    private void doWriteObject(Object object) {
+    private void doWriteObject(Object object, boolean writeBody) {
         try {
             if (object instanceof Map) {
-                generator.writeStartObject();
+                if (writeBody) {
+                    generator.writeStartObject();
+                }
                 writeMapBody((Map<?, ?>) object, null);
-                generator.writeEnd();
+                if (writeBody) {
+                    generator.writeEnd();
+                }
+                return;
             }
 
             if(writePrimitives(object)) {
@@ -80,9 +85,13 @@ public class MappingGeneratorImpl implements MappingGenerator {
                 return;
             }
 
-            generator.writeStartObject();
+            if (writeBody) {
+                generator.writeStartObject();
+            }
             doWriteObjectBody(object);
-            generator.writeEnd();
+            if (writeBody) {
+                generator.writeEnd();
+            }
         } catch (final InvocationTargetException e) {
             throw new MapperException(e);
         } catch (final IllegalAccessException e) {
@@ -319,7 +328,7 @@ public class MappingGeneratorImpl implements MappingGenerator {
             } else if (o == null) {
                 generator.writeNull();
             } else {
-                doWriteObject(o);
+                doWriteObject(o, true);
             }
         }
     }