less console garbage.

Project: http://git-wip-us.apache.org/repos/asf/ode-jacob/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode-jacob/commit/b2416402
Tree: http://git-wip-us.apache.org/repos/asf/ode-jacob/tree/b2416402
Diff: http://git-wip-us.apache.org/repos/asf/ode-jacob/diff/b2416402

Branch: refs/heads/master
Commit: b241640266f2bdfae235e501cb88ee484ec504b4
Parents: e9db356
Author: Tammo van Lessen <[email protected]>
Authored: Fri May 3 19:46:57 2013 +0200
Committer: Tammo van Lessen <[email protected]>
Committed: Fri May 3 19:46:57 2013 +0200

----------------------------------------------------------------------
 src/test/java/JacksonTest.java.bak |  124 +++++++++++++++++++++++++++++++
 1 files changed, 124 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/b2416402/src/test/java/JacksonTest.java.bak
----------------------------------------------------------------------
diff --git a/src/test/java/JacksonTest.java.bak 
b/src/test/java/JacksonTest.java.bak
new file mode 100644
index 0000000..7e7fc1c
--- /dev/null
+++ b/src/test/java/JacksonTest.java.bak
@@ -0,0 +1,124 @@
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
+import com.fasterxml.jackson.annotation.JsonIdentityInfo;
+import com.fasterxml.jackson.annotation.ObjectIdGenerators;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectMapper.DefaultTypeResolverBuilder;
+import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
+import com.fasterxml.jackson.databind.introspect.Annotated;
+import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
+import com.fasterxml.jackson.databind.util.StdConverter;
+
+
+public class JacksonTest {
+    
+    static int nextId = 0;
+    static Map<Integer, Base> objectsById = new HashMap<Integer, 
JacksonTest.Base>();
+    Root root;
+    
+    @JsonIdentityInfo(generator=ObjectIdGenerators.UUIDGenerator.class)
+    public static class Base {
+        public int id;
+        
+        public Base() {
+            id = nextId++;
+        }
+    }
+    
+    @JsonIdentityInfo(generator=ObjectIdGenerators.UUIDGenerator.class)
+    public static class Root {
+        public Object a;
+        public Object b;
+        
+        public String toString() {
+            return "root [a=" + a + "; b=" + b + "]";
+        }
+    }
+    
+    public static class A extends Base {
+        public String someField = "foo";
+    }
+    
+    public static class B extends Base {
+        public String otherField = "bar";
+    }
+    
+    public static class Placeholder extends Base {
+    }
+    
+    public static class BaseToPlaceholderConverter extends StdConverter<Base, 
Placeholder> {
+
+        public Placeholder convert(Base value) {
+            Placeholder p = new Placeholder();
+            p.id = value.id;
+            return p;
+        }
+    }
+    public static class PlaceholderToBaseConverter extends 
StdConverter<Placeholder, Base> {
+
+        public Base convert(Placeholder value) {
+            return objectsById.get(value.id);
+        }
+    }
+    
+    public static class MyAnnotationInspector extends 
JacksonAnnotationIntrospector {
+        @Override
+        public Object findSerializationConverter(Annotated a) {
+            if (Base.class.isAssignableFrom(a.getRawType())) {
+                return new BaseToPlaceholderConverter();
+            }
+            return super.findSerializationConverter(a);
+        }
+
+        @Override
+        public Object findDeserializationConverter(Annotated a) {
+            if (Base.class.isAssignableFrom(a.getRawType())) {
+                return new PlaceholderToBaseConverter();
+            }
+            return super.findSerializationConverter(a);
+        }
+
+    }
+    
+    @Before
+    public void setUp() {
+        root = new Root();
+        
+        A a = new A();
+        B b = new B();
+        
+        root.a = a;
+        root.b = b;
+    
+        objectsById.put(a.id, a);
+        objectsById.put(b.id, b);
+    }
+    
+    @Test
+    public void test() throws Exception {
+        ObjectMapper om = new ObjectMapper();
+//        om.disable(MapperFeature.AUTO_DETECT_CREATORS);
+//        om.disable(MapperFeature.AUTO_DETECT_GETTERS);
+//        om.disable(MapperFeature.AUTO_DETECT_IS_GETTERS);
+//        om.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
+        om.setAnnotationIntrospector(new MyAnnotationInspector());
+        om.enableDefaultTyping();
+
+        String json = om.writeValueAsString(root);
+        System.out.println(json);
+        
+        //Root root2 = om.readValue(json, Root.class);
+        System.out.println(root);
+        //System.out.println(root2);
+
+    }
+    
+    
+}

Reply via email to