package org.apache.ode.bpel.obj.migrate; import java.lang.reflect.Field; import java.util.Collection; import java.util.List; import org.apache.ode.bpel.obj.Extensible; /** * Upgrade Omodel Object to newest version. Used as * visitor of {@link ObjectTraverser} * @see ObjectTraverser */ public class OmUpgradeVisitor extends AbstractObjectVisitor{ @Override protected boolean isCollection(Object old) { return old instanceof Collection; } @Override protected boolean isSet(Object obj){ return false; } @Override public Object visitPojo(Object obj) { if (! (obj instanceof Extensible)){ return null; } visitExtensible(obj); return null; } private void visitExtensible(Object obj) { ((Extensible)obj).upgrade2Newest(); 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); } } } }