smile serialization worked.

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

Branch: refs/heads/master
Commit: 9e1338737eef8528334739f7ca50150c11294fc1
Parents: c6c985e
Author: fangzhen <[email protected]>
Authored: Sun Aug 3 00:40:58 2014 +0800
Committer: fangzhen <[email protected]>
Committed: Sun Aug 3 00:40:58 2014 +0800

----------------------------------------------------------------------
 .../ode/bpel/compiler_2_0/GoodCompileTest.java  | 11 +---
 .../compiler_2_0/JavaSerializationTest.java     | 57 ++++++++++++++++++++
 .../compiler_2_0/JsonSerializationTest.java     | 10 ++++
 .../bpel/compiler_2_0/SerializationTest.java    | 49 -----------------
 .../compiler_2_0/SmileSerializationTest.java    | 11 ++++
 .../org/apache/ode/bpel/obj/ExtensibleImpl.java |  5 +-
 .../obj/migrate/ExtensibeImplEqualityComp.java  |  2 -
 .../ode/bpel/obj/serde/OmSerdeFactory.java      |  2 +-
 .../jacksonhack/UniqueStringIdGenerator.java    | 56 +++++++++++++++++++
 .../bpel/obj/serde/jacksonhack/JacksonTest.java | 38 +++++++++++--
 10 files changed, 172 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ode/blob/9e133873/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/GoodCompileTest.java
----------------------------------------------------------------------
diff --git 
a/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/GoodCompileTest.java
 
b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/GoodCompileTest.java
index 2602642..9a1d973 100644
--- 
a/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/GoodCompileTest.java
+++ 
b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/GoodCompileTest.java
@@ -50,18 +50,9 @@ public class GoodCompileTest extends AbstractCompileTestCase 
implements
                        String cbpPath = bpelPath.substring(0, 
bpelPath.lastIndexOf("."))
                                        + ".cbp";
                        _compiler.serializeOProcess(origi, cbpPath);
-
-                       DeSerializer deserializer = new DeSerializer(new 
FileInputStream(cbpPath));
-                       OProcess desered = deserializer.deserialize();
-
-               DeepEqualityHelper de = new DeepEqualityHelper();
-               de.addCustomComparator(new ExtensibeImplEqualityComp());
-               de.addCustomComparator(new DomElementComparator());
-               boolean res = de.deepEquals(origi, desered);
-                       assertEquals(Boolean.TRUE, res);
                } catch (Exception ex) {
                        ex.printStackTrace();
-                       Assert.fail("Compilation or deserialization did not 
succeed.");
+                       Assert.fail("Compilation did not succeed.");
                }
        }
 

http://git-wip-us.apache.org/repos/asf/ode/blob/9e133873/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/JavaSerializationTest.java
----------------------------------------------------------------------
diff --git 
a/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/JavaSerializationTest.java
 
b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/JavaSerializationTest.java
new file mode 100644
index 0000000..a0c1126
--- /dev/null
+++ 
b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/JavaSerializationTest.java
@@ -0,0 +1,57 @@
+package org.apache.ode.bpel.compiler_2_0;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.net.URI;
+import java.net.URL;
+
+import org.apache.ode.bpel.obj.OProcess;
+import org.apache.ode.bpel.obj.migrate.DeepEqualityHelper;
+import org.apache.ode.bpel.obj.migrate.DomElementComparator;
+import org.apache.ode.bpel.obj.migrate.ExtensibeImplEqualityComp;
+import org.apache.ode.bpel.obj.serde.DeSerializer;
+import org.apache.ode.bpel.obj.serde.OmSerdeFactory;
+import org.apache.ode.bpel.obj.serde.OmSerdeFactory.SerializeFormat;
+import org.junit.Assert;
+
+public class JavaSerializationTest extends GoodCompileTest{
+       protected SerializeFormat format;
+       protected String pathSuffix;
+       
+       public JavaSerializationTest(){
+               this.format = 
OmSerdeFactory.SerializeFormat.FORMAT_SERIALIZED_JAVA;
+               this.pathSuffix = "java";
+       }
+       public void runTest(String bpel) throws Exception {
+               try {
+                       Class testClass = getClass();
+                       URL url = testClass.getResource(bpel);
+                       URI uri = url.toURI();
+                       String path = uri.getPath();
+                       File bpelFile = new File(path);
+                       OProcess origi = _compiler.compile2OProcess(bpelFile, 
0);
+                       String bpelPath = bpelFile.getAbsolutePath();
+                       String cbpPath = bpelPath.substring(0, 
bpelPath.lastIndexOf("."))
+                                       + "." + pathSuffix + ".cbp";
+                       DeSerializer serializer = new DeSerializer();
+                       serializer.serialize(new FileOutputStream(cbpPath), 
+                                       origi, format);
+
+                       DeSerializer deserializer = new DeSerializer(new 
FileInputStream(cbpPath));
+                       OProcess desered = deserializer.deserialize();
+
+               DeepEqualityHelper de = new DeepEqualityHelper();
+               de.addCustomComparator(new ExtensibeImplEqualityComp());
+               de.addCustomComparator(new DomElementComparator());
+               boolean res = de.deepEquals(origi, desered);
+                       assertEquals(Boolean.TRUE, res);
+               } catch (Exception ex) {
+                       ex.printStackTrace();
+                       Assert.fail("Compilation or deserialization did not 
succeed.");
+               }
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/ode/blob/9e133873/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/JsonSerializationTest.java
----------------------------------------------------------------------
diff --git 
a/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/JsonSerializationTest.java
 
b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/JsonSerializationTest.java
new file mode 100644
index 0000000..dbdfe84
--- /dev/null
+++ 
b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/JsonSerializationTest.java
@@ -0,0 +1,10 @@
+package org.apache.ode.bpel.compiler_2_0;
+
+import org.apache.ode.bpel.obj.serde.OmSerdeFactory;
+
+public class JsonSerializationTest extends JavaSerializationTest{
+       public JsonSerializationTest(){
+               this.format = 
OmSerdeFactory.SerializeFormat.FORMAT_SERIALIZED_JSON;
+               this.pathSuffix = "json";
+       }
+}

http://git-wip-us.apache.org/repos/asf/ode/blob/9e133873/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/SerializationTest.java
----------------------------------------------------------------------
diff --git 
a/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/SerializationTest.java
 
b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/SerializationTest.java
deleted file mode 100644
index 22df441..0000000
--- 
a/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/SerializationTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.apache.ode.bpel.compiler_2_0;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.net.URI;
-import java.net.URL;
-
-import org.apache.ode.bpel.obj.OProcess;
-import org.apache.ode.bpel.obj.migrate.DeepEqualityHelper;
-import org.apache.ode.bpel.obj.migrate.DomElementComparator;
-import org.apache.ode.bpel.obj.migrate.ExtensibeImplEqualityComp;
-import org.apache.ode.bpel.obj.serde.DeSerializer;
-import org.apache.ode.bpel.obj.serde.OmSerdeFactory;
-import org.junit.Assert;
-
-public class SerializationTest extends GoodCompileTest{
-       public void runTest(String bpel) throws Exception {
-               try {
-                       Class testClass = getClass();
-                       URL url = testClass.getResource(bpel);
-                       URI uri = url.toURI();
-                       String path = uri.getPath();
-                       File bpelFile = new File(path);
-                       OProcess origi = _compiler.compile2OProcess(bpelFile, 
0);
-                       String bpelPath = bpelFile.getAbsolutePath();
-                       String cbpPath = bpelPath.substring(0, 
bpelPath.lastIndexOf("."))
-                                       + ".json.cbp";
-                       DeSerializer serializer = new DeSerializer();
-                       serializer.serialize(new FileOutputStream(cbpPath), 
-                                       origi, 
OmSerdeFactory.SerializeFormat.FORMAT_SERIALIZED_JSON);
-
-                       DeSerializer deserializer = new DeSerializer(new 
FileInputStream(cbpPath));
-                       OProcess desered = deserializer.deserialize();
-
-               DeepEqualityHelper de = new DeepEqualityHelper();
-               de.addCustomComparator(new ExtensibeImplEqualityComp());
-               de.addCustomComparator(new DomElementComparator());
-               boolean res = de.deepEquals(origi, desered);
-                       assertEquals(Boolean.TRUE, res);
-               } catch (Exception ex) {
-                       ex.printStackTrace();
-                       Assert.fail("Compilation or deserialization did not 
succeed.");
-               }
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/ode/blob/9e133873/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/SmileSerializationTest.java
----------------------------------------------------------------------
diff --git 
a/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/SmileSerializationTest.java
 
b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/SmileSerializationTest.java
new file mode 100644
index 0000000..47de594
--- /dev/null
+++ 
b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/SmileSerializationTest.java
@@ -0,0 +1,11 @@
+package org.apache.ode.bpel.compiler_2_0;
+
+import org.apache.ode.bpel.obj.serde.OmSerdeFactory;
+
+public class SmileSerializationTest extends JavaSerializationTest{
+       public SmileSerializationTest(){
+               this.format = 
OmSerdeFactory.SerializeFormat.FORMAT_SERIALIZED_SMILE;
+               this.pathSuffix = "smile";
+
+       }
+}

http://git-wip-us.apache.org/repos/asf/ode/blob/9e133873/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/ExtensibleImpl.java
----------------------------------------------------------------------
diff --git 
a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/ExtensibleImpl.java 
b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/ExtensibleImpl.java
index e608fcb..2979340 100644
--- a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/ExtensibleImpl.java
+++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/ExtensibleImpl.java
@@ -7,11 +7,12 @@ import java.io.Serializable;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+import org.apache.ode.bpel.obj.serde.jacksonhack.UniqueStringIdGenerator;
+
 import com.fasterxml.jackson.annotation.JsonIdentityInfo;
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.ObjectIdGenerators;
 
-@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property 
= "@id")
+@JsonIdentityInfo(generator = UniqueStringIdGenerator.class, property = "@id")
 public class ExtensibleImpl  implements Extensible<Object>, Serializable{
        public static final long serialVersionUID = -1L;
        protected static final int CURRENT_CLASS_VERSION = 1;

http://git-wip-us.apache.org/repos/asf/ode/blob/9e133873/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/ExtensibeImplEqualityComp.java
----------------------------------------------------------------------
diff --git 
a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/ExtensibeImplEqualityComp.java
 
b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/ExtensibeImplEqualityComp.java
index 56cebc2..e0be0d1 100644
--- 
a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/ExtensibeImplEqualityComp.java
+++ 
b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/ExtensibeImplEqualityComp.java
@@ -6,8 +6,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
-import javax.print.attribute.standard.MediaSize.Other;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.obj.DebugInfo;

http://git-wip-us.apache.org/repos/asf/ode/blob/9e133873/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/OmSerdeFactory.java
----------------------------------------------------------------------
diff --git 
a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/OmSerdeFactory.java 
b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/OmSerdeFactory.java
index 3cdd955..869b055 100644
--- a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/OmSerdeFactory.java
+++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/OmSerdeFactory.java
@@ -6,7 +6,7 @@ import java.io.OutputStream;
 import org.apache.ode.bpel.obj.OProcess;
 
 public class OmSerdeFactory {
-       public static final SerializeFormat FORMAT_SERIALIZED_DEFAULT = 
SerializeFormat.FORMAT_SERIALIZED_JAVA;
+       public static final SerializeFormat FORMAT_SERIALIZED_DEFAULT = 
SerializeFormat.FORMAT_SERIALIZED_SMILE;
 
        private SerializeFormat format = FORMAT_SERIALIZED_DEFAULT;
        

http://git-wip-us.apache.org/repos/asf/ode/blob/9e133873/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/jacksonhack/UniqueStringIdGenerator.java
----------------------------------------------------------------------
diff --git 
a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/jacksonhack/UniqueStringIdGenerator.java
 
b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/jacksonhack/UniqueStringIdGenerator.java
new file mode 100644
index 0000000..cef3e30
--- /dev/null
+++ 
b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/jacksonhack/UniqueStringIdGenerator.java
@@ -0,0 +1,56 @@
+package org.apache.ode.bpel.obj.serde.jacksonhack;
+
+import java.util.UUID;
+
+import com.fasterxml.jackson.annotation.ObjectIdGenerator;
+
+/**
+ * Copied from jackson {@link 
com.fasterxml.jackson.annotation.ObjectIdGenerators.UUIDGenerator}
+ *  and changed id type from UUID to String
+ */
+public class UniqueStringIdGenerator extends ObjectIdGenerator<String>{
+    private static final long serialVersionUID = 1L;
+    protected final Class<?> _scope;
+    public UniqueStringIdGenerator() { this(Object.class); }
+    private UniqueStringIdGenerator(Class<?> scope) {
+       _scope = scope;
+    }
+
+    /**
+     * Can just return base instance since this is essentially scopeless
+     */
+    @Override
+    public ObjectIdGenerator<String> forScope(Class<?> scope) {
+        return this;
+    }
+    
+    /**
+     * Can just return base instance since this is essentially scopeless
+     */
+    @Override
+    public ObjectIdGenerator<String> newForSerialization(Object context) {
+        return this;
+    }
+
+    @Override
+    public String generateId(Object forPojo) {
+        return UUID.randomUUID().toString();
+    }
+
+    @Override
+    public IdKey key(Object key) {
+        return new IdKey(getClass(), null, key);
+    }
+
+    /**
+     * Since UUIDs are always unique, let's fully ignore scope definition
+     */
+    @Override
+    public boolean canUseFor(ObjectIdGenerator<?> gen) {
+        return (gen.getClass() == getClass());
+    }
+       @Override
+       public Class<?> getScope() {
+               return _scope;
+       }
+}

http://git-wip-us.apache.org/repos/asf/ode/blob/9e133873/bpel-nobj/src/test/java/org/apache/ode/bpel/obj/serde/jacksonhack/JacksonTest.java
----------------------------------------------------------------------
diff --git 
a/bpel-nobj/src/test/java/org/apache/ode/bpel/obj/serde/jacksonhack/JacksonTest.java
 
b/bpel-nobj/src/test/java/org/apache/ode/bpel/obj/serde/jacksonhack/JacksonTest.java
index ae92799..afa4b78 100644
--- 
a/bpel-nobj/src/test/java/org/apache/ode/bpel/obj/serde/jacksonhack/JacksonTest.java
+++ 
b/bpel-nobj/src/test/java/org/apache/ode/bpel/obj/serde/jacksonhack/JacksonTest.java
@@ -5,7 +5,9 @@ import static org.junit.Assert.assertEquals;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.xml.namespace.QName;
@@ -14,7 +16,6 @@ import org.apache.ode.bpel.obj.serde.KeyAsJsonDeserializer;
 import org.apache.ode.bpel.obj.serde.KeyAsJsonSerializer;
 import org.junit.Test;
 
-import com.fasterxml.jackson.annotation.JsonAnyGetter;
 import com.fasterxml.jackson.annotation.JsonIdentityInfo;
 import com.fasterxml.jackson.annotation.ObjectIdGenerators;
 import com.fasterxml.jackson.core.JsonGenerationException;
@@ -24,6 +25,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.dataformat.smile.SmileFactory;
 
 public class JacksonTest {
        /**
@@ -53,14 +55,14 @@ public class JacksonTest {
                A a2 = b;
                map.put("i5", b);
                map.put("i6", a2);
-               ObjectMapper mapper = new ObjectMapper();
+               ObjectMapper mapper = new ObjectMapper(new SmileFactory());
                mapper.setSerializerFactory(TypeBeanSerializerFactory.instance);
                
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
                mapper.enable(SerializationFeature.INDENT_OUTPUT);
                ByteArrayOutputStream os = new ByteArrayOutputStream();
                mapper.writeValue(os, map);
                ByteArrayInputStream is = new 
ByteArrayInputStream(os.toByteArray());
-               ObjectMapper m2 = new ObjectMapper();
+               ObjectMapper m2 = new ObjectMapper(new SmileFactory());
                m2.setSerializerFactory(TypeBeanSerializerFactory.instance);
                m2.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
                @SuppressWarnings("rawtypes")
@@ -111,7 +113,7 @@ public class JacksonTest {
        }
        @Test
        public void testMapTypeInfo() throws JsonParseException, 
JsonMappingException, IOException{
-               ObjectMapper mapper = new ObjectMapper();
+               ObjectMapper mapper = new ObjectMapper(new SmileFactory());
                mapper.setSerializerFactory(TypeBeanSerializerFactory.instance);
                
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
                mapper.enable(SerializationFeature.INDENT_OUTPUT);
@@ -123,11 +125,37 @@ public class JacksonTest {
                mapper.writeValue(os, c);
 
                ByteArrayInputStream is = new 
ByteArrayInputStream(os.toByteArray());
-               ObjectMapper m2 = new ObjectMapper();
+               ObjectMapper m2 = new ObjectMapper(new SmileFactory());
                m2.setSerializerFactory(TypeBeanSerializerFactory.instance);
                m2.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
 
                C de = m2.readValue(is, C.class);
                assertEquals(c.map, de.map);
        }
+       
+       @JsonIdentityInfo(generator = UniqueStringIdGenerator.class, property = 
"@id")
+       public static class D{
+               public D next;
+       }
+       @Test
+       public void testSmileFormat() throws JsonGenerationException, 
JsonMappingException, IOException{
+               ObjectMapper mapper = new ObjectMapper(new SmileFactory());
+               D d = new D();
+               d.next = d;
+               
+               mapper.setSerializerFactory(TypeBeanSerializerFactory.instance);
+               
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+               mapper.enable(SerializationFeature.INDENT_OUTPUT);
+               ByteArrayOutputStream os = new ByteArrayOutputStream();
+               mapper.writeValue(os, d);
+
+               ByteArrayInputStream is = new 
ByteArrayInputStream(os.toByteArray());
+               ObjectMapper m2 = new ObjectMapper(new SmileFactory());
+               m2.setSerializerFactory(TypeBeanSerializerFactory.instance);
+               m2.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+
+               D de = m2.readValue(is, D.class);
+               assertEquals(D.class, de.next.getClass());
+               
+       }
 }

Reply via email to