fixed bug of upgrade2newest and check if it's newest
Project: http://git-wip-us.apache.org/repos/asf/ode/repo Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/32fa79b3 Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/32fa79b3 Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/32fa79b3 Branch: refs/heads/ODE-912 Commit: 32fa79b34bff66079ff1b1f2e978ba5297309726 Parents: 912945b Author: fangzhen <[email protected]> Authored: Sat Aug 9 21:26:06 2014 +0800 Committer: fangzhen <[email protected]> Committed: Sat Aug 9 21:43:54 2014 +0800 ---------------------------------------------------------------------- .../ode/bpel/compiler_2_0/MigrationTest.java | 12 ++++++++-- .../org/apache/ode/bpel/obj/ExtensibleImpl.java | 24 ++++++++++++++++---- .../apache/ode/bpel/obj/migrate/OmOld2new.java | 1 - .../ode/bpel/obj/migrate/UpgradeChecker.java | 11 +++++++-- 4 files changed, 38 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ode/blob/32fa79b3/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/MigrationTest.java ---------------------------------------------------------------------- diff --git a/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/MigrationTest.java b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/MigrationTest.java index 43809cf..2afc036 100644 --- a/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/MigrationTest.java +++ b/bpel-compiler/src/test/java/org/apache/ode/bpel/compiler_2_0/MigrationTest.java @@ -16,6 +16,7 @@ import org.apache.ode.bpel.obj.migrate.DomElementComparator; import org.apache.ode.bpel.obj.migrate.ExtensibeImplEqualityComp; import org.apache.ode.bpel.obj.migrate.ObjectTraverser; import org.apache.ode.bpel.obj.migrate.OmOld2new; +import org.apache.ode.bpel.obj.migrate.OmUpgradeVisitor; import org.apache.ode.bpel.obj.migrate.UpgradeChecker; import org.junit.Assert; import org.junit.Test; @@ -46,14 +47,21 @@ public class MigrationTest extends GoodCompileTest{ OProcess migrated = (OProcess) mtraverse.traverseObject(old); __log.debug("migrated new OProcess " + migrated.getFieldContainer()); + //upgrade + OmUpgradeVisitor upgrader = new OmUpgradeVisitor(); + ObjectTraverser traverser = new ObjectTraverser(); + traverser.accept(upgrader); + traverser.traverseObject(migrated); + + //check DeepEqualityHelper de = new DeepEqualityHelper(); de.addCustomComparator(new ExtensibeImplEqualityComp()); de.addCustomComparator(new DomElementComparator()); boolean res = de.deepEquals(nu, migrated); assertEquals(Boolean.TRUE, res); - + UpgradeChecker checker = new UpgradeChecker(); - ObjectTraverser traverser = new ObjectTraverser(); + traverser = new ObjectTraverser(); traverser.accept(checker); traverser.traverseObject(migrated); assertEquals(true, checker.isNewest()); http://git-wip-us.apache.org/repos/asf/ode/blob/32fa79b3/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 bec1674..eab0a08 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 @@ -29,8 +29,15 @@ 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. + int currentVersion = 0; + try { + currentVersion = (Integer) this.getClass().getField("CURRENT_CLASS_VERSION").get(this); + } catch (Exception e) { + // should never get here + e.printStackTrace(); + } + setClassVersion(currentVersion); + setOriginalVersion(currentVersion); //if this is called by deserializer, original will be set later. } // @JsonAnyGetter @@ -103,12 +110,19 @@ 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){ + int currentVersion = version; + try { + currentVersion = (Integer) this.getClass().getField("CURRENT_CLASS_VERSION").get(this); + } catch (Exception e) { + // should never get here + e.printStackTrace(); + } + if (version == currentVersion) return; + if (version > currentVersion){ //should never get here. throw new RuntimeException("class version is newer than newest!"); } - setClassVersion(CURRENT_CLASS_VERSION); + setClassVersion(currentVersion); return; } } http://git-wip-us.apache.org/repos/asf/ode/blob/32fa79b3/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 61b139d..4f79a80 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 @@ -180,7 +180,6 @@ public class OmOld2new extends AbstractObjectVisitor{ } n.setClassVersion(1); n.setOriginalVersion(0); - n.upgrade2Newest(); return n; } http://git-wip-us.apache.org/repos/asf/ode/blob/32fa79b3/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/UpgradeChecker.java ---------------------------------------------------------------------- diff --git a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/UpgradeChecker.java b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/UpgradeChecker.java index ef9b93e..26eabf7 100644 --- a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/UpgradeChecker.java +++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/UpgradeChecker.java @@ -22,10 +22,17 @@ public class UpgradeChecker extends AbstractObjectVisitor{ private void visitExtensible(Object obj) { ExtensibleImpl eobj = (ExtensibleImpl)obj; - if (eobj.getClassVersion() != eobj.CURRENT_CLASS_VERSION){ + int currentVersion = 1; + try { + currentVersion = (Integer) eobj.getClass().getField("CURRENT_CLASS_VERSION").get(obj); + } catch (Exception e) { + // should never get here + e.printStackTrace(); + } + if (eobj.getClassVersion() != currentVersion){ newest = false; __log.debug(obj.getClass() + "hasn't upgraded to newest version. current: " - + eobj.getClassVersion() + ", newest: " + eobj.CURRENT_CLASS_VERSION); + + eobj.getClassVersion() + ", newest: " + currentVersion); } List<Field> fields = MigUtils.getAllFields(obj.getClass()); for (Field f : fields){
