add originalVersion to OModle classes.

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

Branch: refs/heads/master
Commit: b8044ef7ea4792c0a1be9909f2c9985ae283e31e
Parents: ec02cf6
Author: fangzhen <[email protected]>
Authored: Fri Aug 1 15:54:46 2014 +0800
Committer: fangzhen <[email protected]>
Committed: Fri Aug 1 15:54:46 2014 +0800

----------------------------------------------------------------------
 .../java/org/apache/ode/bpel/obj/DebugInfo.java |  7 ++++++-
 .../org/apache/ode/bpel/obj/ExtensibleImpl.java | 20 ++++++++++++++++++++
 .../obj/migrate/ExtensibeImplEqualityComp.java  |  1 +
 .../apache/ode/bpel/obj/migrate/OmOld2new.java  |  2 ++
 4 files changed, 29 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ode/blob/b8044ef7/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/DebugInfo.java
----------------------------------------------------------------------
diff --git a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/DebugInfo.java 
b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/DebugInfo.java
index 937aca7..d08b325 100644
--- a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/DebugInfo.java
+++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/DebugInfo.java
@@ -130,8 +130,13 @@ public class DebugInfo extends ExtensibleImpl  implements 
Serializable{
        public boolean equals(Object obj){
                if (!(obj instanceof DebugInfo)) return false;
                DebugInfo other = (DebugInfo)obj;
-               return this.getStartLine() == other.getStartLine() &&
+               boolean eq = this.getStartLine() == other.getStartLine() &&
                                this.getEndLine() == other.getEndLine();
+               if (this.getOriginalVersion() == 0 || 
other.getOriginalVersion() == 0){
+                       return eq;
+               }else{
+                       return eq && 
this.getSourceURI().equals(other.getSourceURI());
+               }
        }
        private void readObject(ObjectInputStream ois) throws IOException, 
ClassNotFoundException{
                ois.defaultReadObject();

http://git-wip-us.apache.org/repos/asf/ode/blob/b8044ef7/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 f2af58b..e608fcb 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
@@ -15,10 +15,13 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
 public class ExtensibleImpl  implements Extensible<Object>, Serializable{
        public static final long serialVersionUID = -1L;
        protected static final int CURRENT_CLASS_VERSION = 1;
+       
        /** The wrapper wraps fields. Fields can be deleted, added or updated */
        transient protected Map<String, Object> fieldContainer;
        /** Version of this class*/
        private static final String CLASSVERSION = "classVersion";
+       /** Original version before migration*/
+       private static final String ORIGINALVERSION = "originalVersion";
 
        protected ExtensibleImpl() {
                this(new LinkedHashMap<String, Object>());
@@ -26,6 +29,7 @@ public class ExtensibleImpl  implements Extensible<Object>, 
Serializable{
        protected ExtensibleImpl(Map<String, Object> container) {
                fieldContainer = container;
                setClassVersion(CURRENT_CLASS_VERSION);
+               setOriginalVersion(CURRENT_CLASS_VERSION); //if this is called 
by deserializer, original will be set later.
        }
        
 //     @JsonAnyGetter
@@ -60,6 +64,15 @@ public class ExtensibleImpl  implements Extensible<Object>, 
Serializable{
                fieldContainer.put(CLASSVERSION, version);
        }
        
+       @JsonIgnore
+       public int getOriginalVersion(){
+               Object o = fieldContainer.get(ORIGINALVERSION);
+               return o == null? -1 : (Integer)o;
+       }
+       public void setOriginalVersion(int version){
+               fieldContainer.put(ORIGINALVERSION, version);
+       }
+       
        private void writeObject(ObjectOutputStream oos) throws IOException{
                oos.defaultWriteObject();
                oos.writeInt(fieldContainer.size());
@@ -91,6 +104,13 @@ public class ExtensibleImpl  implements Extensible<Object>, 
Serializable{
        
        @Override
        public void upgrade2Newest(){
+               int version = getClassVersion();
+               if (version == CURRENT_CLASS_VERSION) return;
+               if (version > CURRENT_CLASS_VERSION){
+                       //should never get here. 
+                       throw new RuntimeException("class version is newer than 
newest!");
+               }
+               setClassVersion(CURRENT_CLASS_VERSION);
                return;
        }
 }

http://git-wip-us.apache.org/repos/asf/ode/blob/b8044ef7/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 92b3fd7..72d4985 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
@@ -76,6 +76,7 @@ public class ExtensibeImplEqualityComp implements 
EqualityComparator{
        @SuppressWarnings("rawtypes")
        private void dehydrate(Map map) {
                if (map == null) return;
+               map.remove("originalVersion");
                Set<Entry> entries = map.entrySet();
                Iterator<Entry> itor = entries.iterator();
                while (itor.hasNext()){

http://git-wip-us.apache.org/repos/asf/ode/blob/b8044ef7/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/OmOld2new.java
----------------------------------------------------------------------
diff --git 
a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/OmOld2new.java 
b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/OmOld2new.java
index 0b5e284..61b139d 100644
--- a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/OmOld2new.java
+++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/OmOld2new.java
@@ -178,6 +178,8 @@ public class OmOld2new extends AbstractObjectVisitor{
                                throw rte;
                        }
                }
+               n.setClassVersion(1);
+               n.setOriginalVersion(0);
                n.upgrade2Newest();
                return n;
        }

Reply via email to