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;
+       }
 }

Reply via email to