You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by va...@apache.org on 2015/07/21 22:52:34 UTC

[37/50] ode git commit: smile serialization worked.

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/ODE-912
Commit: 9e1338737eef8528334739f7ca50150c11294fc1
Parents: c6c985e
Author: fangzhen <fa...@gmail.com>
Authored: Sun Aug 3 00:40:58 2014 +0800
Committer: fangzhen <fa...@gmail.com>
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());
+		
+	}
 }