switch format form final int to enum; added java serializer
Project: http://git-wip-us.apache.org/repos/asf/ode/repo Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/ce24520c Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/ce24520c Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/ce24520c Branch: refs/heads/ODE-912 Commit: ce24520ccc4fdb41f688e108ec138c8c24c8e0a6 Parents: 6ff01cf Author: fangzhen <[email protected]> Authored: Sat Jul 26 13:12:18 2014 +0800 Committer: fangzhen <[email protected]> Committed: Sat Jul 26 13:12:18 2014 +0800 ---------------------------------------------------------------------- .../org/apache/ode/bpel/obj/ExtensibleImpl.java | 33 +++++++++++++++++++- .../apache/ode/bpel/obj/OProcessWrapper.java | 9 +++--- .../bpel/obj/serde/JavaSerOmDeserializer.java | 30 ++++++++++++++++++ .../ode/bpel/obj/serde/JavaSerOmSerializer.java | 23 ++++++++++++++ .../ode/bpel/obj/serde/OmSerdeFactory.java | 24 +++++++++----- 5 files changed, 106 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ode/blob/ce24520c/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 657ba7c..e6fe657 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 @@ -1,8 +1,12 @@ package org.apache.ode.bpel.obj; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.LinkedHashMap; import java.util.Map; +import java.util.Map.Entry; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -11,8 +15,9 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators; @JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property = "@id") public class ExtensibleImpl implements Extensible<Object>, Serializable{ public static final long serialVersionUID = -1L; + /** The wrapper wraps fields. Fields can be deleted, added or updated */ - protected Map<String, Object> fieldContainer; + transient protected Map<String, Object> fieldContainer; /** Version of this class*/ private static String CLASS_VERSION = "classVersion"; @@ -53,4 +58,30 @@ public class ExtensibleImpl implements Extensible<Object>, Serializable{ public void setClassVersion(int version) { fieldContainer.put(CLASS_VERSION, version); } + + private void writeObject(ObjectOutputStream oos) throws IOException{ + oos.defaultWriteObject(); + oos.writeInt(fieldContainer.size()); + oos.writeObject(fieldContainer.getClass().getName()); + for (String key : fieldContainer.keySet()){ + oos.writeObject(key); + oos.writeObject(fieldContainer.get(key)); + } + } + private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException{ + ois.defaultReadObject(); + int size = ois.readInt(); + String cls = (String)ois.readObject(); + try { + fieldContainer = (Map<String, Object>)(Class.forName(cls).newInstance()); + } catch (Exception e) { + //should never get here + e.printStackTrace(); + } + for (int i = 0; i < size; i++){ + String key = (String)ois.readObject(); + Object value = ois.readObject(); + fieldContainer.put(key, value); + } + } } http://git-wip-us.apache.org/repos/asf/ode/blob/ce24520c/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/OProcessWrapper.java ---------------------------------------------------------------------- diff --git a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/OProcessWrapper.java b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/OProcessWrapper.java index caa3bb4..a409b6d 100644 --- a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/OProcessWrapper.java +++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/OProcessWrapper.java @@ -7,6 +7,7 @@ import java.util.Map; import javax.xml.namespace.QName; import org.apache.ode.bpel.obj.serde.OmSerdeFactory; +import org.apache.ode.bpel.obj.serde.OmSerdeFactory.SerializeFormat; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -44,7 +45,7 @@ public class OProcessWrapper extends ExtensibleImpl implements Serializable{ public OProcessWrapper() { super(new LinkedHashMap<String, Object>()); setCompileTime(0); - setFormat(OmSerdeFactory.FORMAT_UNINITIALIZED); + setFormat(SerializeFormat.FORMAT_UNINITIALIZED); } @@ -78,11 +79,11 @@ public class OProcessWrapper extends ExtensibleImpl implements Serializable{ } @JsonIgnore - public short getFormat() { - return (Short)fieldContainer.get(FORMAT); + public SerializeFormat getFormat() { + return (SerializeFormat)fieldContainer.get(FORMAT); } - public void setFormat(short format) { + public void setFormat(SerializeFormat format) { fieldContainer.put(FORMAT, format); } http://git-wip-us.apache.org/repos/asf/ode/blob/ce24520c/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/JavaSerOmDeserializer.java ---------------------------------------------------------------------- diff --git a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/JavaSerOmDeserializer.java b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/JavaSerOmDeserializer.java new file mode 100644 index 0000000..e161b4e --- /dev/null +++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/JavaSerOmDeserializer.java @@ -0,0 +1,30 @@ +package org.apache.ode.bpel.obj.serde; + +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; + +import org.apache.ode.bpel.obj.OProcessWrapper; + +public class JavaSerOmDeserializer implements OmDeserializer { + private InputStream is; + public JavaSerOmDeserializer(InputStream is) { + this.is = is; + } + + @Override + public OProcessWrapper deserialize() throws IOException, + SerializaionRtException { + ObjectInputStream ois = new ObjectInputStream(is); + OProcessWrapper wrapper = null; + try { + wrapper = (OProcessWrapper)ois.readObject(); + } catch (ClassNotFoundException e) { + SerializaionRtException se = new SerializaionRtException("error when deserializing process"); + se.initCause(e); + throw se; + } + return wrapper; + } + +} http://git-wip-us.apache.org/repos/asf/ode/blob/ce24520c/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/JavaSerOmSerializer.java ---------------------------------------------------------------------- diff --git a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/JavaSerOmSerializer.java b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/JavaSerOmSerializer.java new file mode 100644 index 0000000..7394e87 --- /dev/null +++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/JavaSerOmSerializer.java @@ -0,0 +1,23 @@ +package org.apache.ode.bpel.obj.serde; + +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.io.OutputStream; + +import org.apache.ode.bpel.obj.OProcessWrapper; + +public class JavaSerOmSerializer implements OmSerializer { + private OutputStream out; + private OProcessWrapper wrapper; + public JavaSerOmSerializer(OutputStream out, OProcessWrapper wrapper) { + this.wrapper = wrapper; + this.out = out; + } + + @Override + public void serialize() throws SerializaionRtException, IOException { + ObjectOutputStream oos = new ObjectOutputStream(out); + oos.writeObject(wrapper); + } + +} http://git-wip-us.apache.org/repos/asf/ode/blob/ce24520c/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 512129e..5169442 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,12 +6,9 @@ import java.io.OutputStream; import org.apache.ode.bpel.obj.OProcessWrapper; public class OmSerdeFactory { - public static final short FORMAT_UNINITIALIZED = 0x00; - public static final short FORMAT_SERIALIZED_JSON = 0x10; - public static final short FORMAT_SERIALIZED_SMILE = 0x11; - public static final short FORMAT_SERIALIZED_DEFAULT = FORMAT_SERIALIZED_JSON; + public static final SerializeFormat FORMAT_SERIALIZED_DEFAULT = SerializeFormat.FORMAT_SERIALIZED_JAVA; - private short format = FORMAT_SERIALIZED_DEFAULT; + private SerializeFormat format = FORMAT_SERIALIZED_DEFAULT; public OmSerializer createOmSerializer(OutputStream out, OProcessWrapper wrapper){ @@ -23,7 +20,9 @@ public class OmSerdeFactory { case FORMAT_SERIALIZED_SMILE: serializer = new SmileOmSerializer(out, wrapper); break; - + case FORMAT_SERIALIZED_JAVA: + serializer = new JavaSerOmSerializer(out, wrapper); + break; default: throw new SerializaionRtException("Unsupported format"); } @@ -38,17 +37,26 @@ public class OmSerdeFactory { break; case FORMAT_SERIALIZED_SMILE: deser = new SmileOmDeserializer(is); + case FORMAT_SERIALIZED_JAVA: + deser = new JavaSerOmDeserializer(is); + break; default: throw new SerializaionRtException("Unsupported format"); } return deser; } - public short getFormat() { + public SerializeFormat getFormat() { return format; } - public void setFormat(short format) { + public void setFormat(SerializeFormat format) { this.format = format; } + public static enum SerializeFormat{ + FORMAT_UNINITIALIZED, + FORMAT_SERIALIZED_JSON, + FORMAT_SERIALIZED_SMILE, + FORMAT_SERIALIZED_JAVA; + } }
