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/ODE-912 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; }
