You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by va...@apache.org on 2015/07/21 22:52:36 UTC
[39/50] ode git commit: added Upgradechecker to confirm if Omodel
classes has upgraded to newest; not sure if it works, however
added Upgradechecker to confirm if Omodel classes has upgraded to newest; not sure if it works, however
Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/bbdf8e45
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/bbdf8e45
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/bbdf8e45
Branch: refs/heads/ODE-912
Commit: bbdf8e453651e795e786a4ebd5e2097537b85356
Parents: 0e5cf5b
Author: fangzhen <fa...@gmail.com>
Authored: Fri Aug 8 23:30:55 2014 +0800
Committer: fangzhen <fa...@gmail.com>
Committed: Fri Aug 8 23:30:55 2014 +0800
----------------------------------------------------------------------
.../ode/bpel/compiler_2_0/MigrationTest.java | 7 +++
.../org/apache/ode/bpel/obj/ExtensibleImpl.java | 2 +-
.../ode/bpel/obj/migrate/OmUpgradeVisitor.java | 4 --
.../ode/bpel/obj/migrate/UpgradeChecker.java | 47 +++++++++++++++++
.../apache/ode/bpel/obj/serde/DeSerializer.java | 53 +++++++++++++-------
5 files changed, 89 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ode/blob/bbdf8e45/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 ee27926..43809cf 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.UpgradeChecker;
import org.junit.Assert;
import org.junit.Test;
@@ -50,6 +51,12 @@ public class MigrationTest extends GoodCompileTest{
de.addCustomComparator(new DomElementComparator());
boolean res = de.deepEquals(nu, migrated);
assertEquals(Boolean.TRUE, res);
+
+ UpgradeChecker checker = new UpgradeChecker();
+ ObjectTraverser traverser = new ObjectTraverser();
+ traverser.accept(checker);
+ traverser.traverseObject(migrated);
+ assertEquals(true, checker.isNewest());
} catch (Exception ex) {
ex.printStackTrace();
Assert.fail("Compilation or migration did not succeed.");
http://git-wip-us.apache.org/repos/asf/ode/blob/bbdf8e45/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 a6f6f68..bec1674 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,7 +15,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
@JsonIdentityInfo(generator = UniqueStringIdGenerator.class, property = "@id")
public class ExtensibleImpl implements Extensible<Object>, Serializable{
public static final long serialVersionUID = -1L;
- protected static final int CURRENT_CLASS_VERSION = 1;
+ public static final int CURRENT_CLASS_VERSION = 1;
/** The wrapper wraps fields. Fields can be deleted, added or updated */
transient protected Map<String, Object> fieldContainer;
http://git-wip-us.apache.org/repos/asf/ode/blob/bbdf8e45/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/OmUpgradeVisitor.java
----------------------------------------------------------------------
diff --git a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/OmUpgradeVisitor.java b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/OmUpgradeVisitor.java
index 75db83c..f0cde52 100644
--- a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/OmUpgradeVisitor.java
+++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/OmUpgradeVisitor.java
@@ -1,12 +1,8 @@
package org.apache.ode.bpel.obj.migrate;
-import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
import org.apache.ode.bpel.obj.Extensible;
http://git-wip-us.apache.org/repos/asf/ode/blob/bbdf8e45/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
new file mode 100644
index 0000000..ef9b93e
--- /dev/null
+++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/migrate/UpgradeChecker.java
@@ -0,0 +1,47 @@
+package org.apache.ode.bpel.obj.migrate;
+
+import java.lang.reflect.Field;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.obj.ExtensibleImpl;
+
+public class UpgradeChecker extends AbstractObjectVisitor{
+ private static final Log __log = LogFactory.getLog(UpgradeChecker.class);
+
+ private boolean newest = true;
+ @Override
+ public Object visitPojo(Object obj) {
+ if (! (obj instanceof ExtensibleImpl)){
+ return null;
+ }
+ visitExtensible(obj);
+ return null;
+ }
+
+ private void visitExtensible(Object obj) {
+ ExtensibleImpl eobj = (ExtensibleImpl)obj;
+ if (eobj.getClassVersion() != eobj.CURRENT_CLASS_VERSION){
+ newest = false;
+ __log.debug(obj.getClass() + "hasn't upgraded to newest version. current: "
+ + eobj.getClassVersion() + ", newest: " + eobj.CURRENT_CLASS_VERSION);
+ }
+ List<Field> fields = MigUtils.getAllFields(obj.getClass());
+ for (Field f : fields){
+ f.setAccessible(true);
+ try {
+ Object value = f.get(obj);
+ if (value != null){
+ traverse.traverseObject(value);
+ }
+ } catch (Exception e){
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ public boolean isNewest() {
+ return newest;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ode/blob/bbdf8e45/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/DeSerializer.java
----------------------------------------------------------------------
diff --git a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/DeSerializer.java b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/DeSerializer.java
index 59b7a86..a661983 100644
--- a/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/DeSerializer.java
+++ b/bpel-nobj/src/main/java/org/apache/ode/bpel/obj/serde/DeSerializer.java
@@ -13,23 +13,27 @@ import org.apache.ode.bpel.obj.OProcess;
import org.apache.ode.bpel.obj.OProcessWrapper;
import org.apache.ode.bpel.obj.migrate.ObjectTraverser;
import org.apache.ode.bpel.obj.migrate.OmUpgradeVisitor;
+import org.apache.ode.bpel.obj.migrate.UpgradeChecker;
import org.apache.ode.bpel.obj.serde.OmSerdeFactory.SerializeFormat;
public class DeSerializer {
private OProcessWrapper wrapper = new OProcessWrapper();
private InputStream is;
- public DeSerializer(InputStream is){
+
+ public DeSerializer(InputStream is) {
this.is = is;
deserializeHeader();
}
-
+
public DeSerializer() {
}
- public void serialize(OutputStream out, OProcess process){
+ public void serialize(OutputStream out, OProcess process) {
serialize(out, process, OmSerdeFactory.FORMAT_SERIALIZED_DEFAULT);
}
- public void serialize(OutputStream out, OProcess process, SerializeFormat format){
+
+ public void serialize(OutputStream out, OProcess process,
+ SerializeFormat format) {
wrapper.setCompileTime(System.currentTimeMillis());
wrapper.setProcess(process);
wrapper.setFormat(format);
@@ -42,49 +46,60 @@ public class DeSerializer {
oos.writeObject(wrapper.getType());
oos.writeObject(wrapper.getOtherHeaders());
} catch (IOException e1) {
- SerializaionRtException e = new SerializaionRtException("Error when serialize Headers.");
+ SerializaionRtException e = new SerializaionRtException(
+ "Error when serialize Headers.");
e.initCause(e1);
throw e;
}
OmSerdeFactory factory = new OmSerdeFactory();
factory.setFormat(format);
- OmSerializer serializer = factory.createOmSerializer(out, wrapper.getProcess());
+ OmSerializer serializer = factory.createOmSerializer(out,
+ wrapper.getProcess());
serializer.serialize();
}
-
- private void deserializeHeader(){
+
+ private void deserializeHeader() {
try {
ObjectInputStream ois = new ObjectInputStream(is);
wrapper = new OProcessWrapper();
- wrapper.setMagic((byte[])ois.readObject());
- wrapper.setFormat((SerializeFormat)ois.readObject());
+ wrapper.setMagic((byte[]) ois.readObject());
+ wrapper.setFormat((SerializeFormat) ois.readObject());
wrapper.setCompileTime(ois.readLong());
- wrapper.setGuid((String)ois.readObject());
- wrapper.setType((QName)ois.readObject());
+ wrapper.setGuid((String) ois.readObject());
+ wrapper.setType((QName) ois.readObject());
wrapper.setOtherHeaders((Map<String, Object>) (ois.readObject()));
wrapper.checkValid();
} catch (Exception e1) {
- SerializaionRtException e = new SerializaionRtException("Error when reading Headers during deseriazation");
+ SerializaionRtException e = new SerializaionRtException(
+ "Error when reading Headers during deseriazation");
e.initCause(e1);
throw e;
}
}
- public OProcess deserialize(){
+
+ public OProcess deserialize() {
OmSerdeFactory factory = new OmSerdeFactory();
factory.setFormat(wrapper.getFormat());
- OmDeserializer de = factory.createOmDeserializer(is);
- OProcess process = de.deserialize();
+ OmDeserializer de = factory.createOmDeserializer(is);
+ OProcess process = de.deserialize();
//upgrade
- OmUpgradeVisitor upgrader = new OmUpgradeVisitor();
+ UpgradeChecker checker = new UpgradeChecker();
ObjectTraverser traverser = new ObjectTraverser();
- traverser.accept(upgrader);
+ traverser.accept(checker);
traverser.traverseObject(process);
+ if (!checker.isNewest()) {
+ OmUpgradeVisitor upgrader = new OmUpgradeVisitor();
+ traverser = new ObjectTraverser();
+ traverser.accept(upgrader);
+ traverser.traverseObject(process);
+ }
return process;
}
-
+
public OProcessWrapper getWrapper() {
return wrapper;
}
+
public void setWrapper(OProcessWrapper wrapper) {
this.wrapper = wrapper;
}