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){

Reply via email to