diff options
author | Ed Willink | 2016-11-07 11:03:40 +0000 |
---|---|---|
committer | Ed Willink | 2016-12-20 21:48:11 +0000 |
commit | 2c84293f83887b4155a83a7480aa2f83cec59b76 (patch) | |
tree | 8ce542a1b5b1f23b76420201dc820fcc2dce26ab | |
parent | d3bd63d7d8f8ee04ad908a863839cd5764e458d4 (diff) | |
download | org.eclipse.qvtd-2c84293f83887b4155a83a7480aa2f83cec59b76.tar.gz org.eclipse.qvtd-2c84293f83887b4155a83a7480aa2f83cec59b76.tar.xz org.eclipse.qvtd-2c84293f83887b4155a83a7480aa2f83cec59b76.zip |
[500962] Promote Incremental init to Trnasformer.Incremental
3 files changed, 38 insertions, 15 deletions
diff --git a/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/java/QVTiCG2JavaVisitor.java b/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/java/QVTiCG2JavaVisitor.java index 4c2c2093c..a162d40c2 100644 --- a/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/java/QVTiCG2JavaVisitor.java +++ b/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/java/QVTiCG2JavaVisitor.java @@ -126,14 +126,10 @@ import org.eclipse.qvtd.runtime.evaluation.AbstractInvocation; import org.eclipse.qvtd.runtime.evaluation.AbstractTransformer; import org.eclipse.qvtd.runtime.evaluation.Connection; import org.eclipse.qvtd.runtime.evaluation.InvocationConstructor; -import org.eclipse.qvtd.runtime.evaluation.InvocationManager; -import org.eclipse.qvtd.runtime.evaluation.ObjectManager; import org.eclipse.qvtd.runtime.evaluation.TransformationExecutor; import org.eclipse.qvtd.runtime.evaluation.Transformer; import org.eclipse.qvtd.runtime.internal.evaluation.AbstractComputationConstructor; import org.eclipse.qvtd.runtime.internal.evaluation.AbstractInvocationConstructor; -import org.eclipse.qvtd.runtime.internal.evaluation.IncrementalInvocationManager; -import org.eclipse.qvtd.runtime.internal.evaluation.IncrementalObjectManager; import com.google.common.collect.Iterables; @@ -437,7 +433,7 @@ public class QVTiCG2JavaVisitor extends CG2JavaVisitor<@NonNull QVTiCodeGenerato js.append("}\n"); } - protected void doCreateIncrementalManagers() { + /* protected void doCreateIncrementalManagers() { js.append("@Override\n"); js.append("protected "); js.appendIsRequired(true); @@ -467,7 +463,7 @@ public class QVTiCG2JavaVisitor extends CG2JavaVisitor<@NonNull QVTiCodeGenerato js.append(")invocationManager);\n"); js.popIndentation(); js.append("}\n"); - } + } */ protected boolean doEcoreCreateClass(@NonNull CGValuedElement cgElement, @NonNull EClass eClass) { String createMethodName = "create" + eClass.getName(); @@ -1477,8 +1473,8 @@ public class QVTiCG2JavaVisitor extends CG2JavaVisitor<@NonNull QVTiCodeGenerato js.append("}\n"); } - protected @NonNull Class<? extends AbstractTransformer> getAbstractTransformationExecutorClass() { - return AbstractTransformer.class; + protected @NonNull Class<? extends Transformer> getAbstractTransformationExecutorClass() { + return isIncremental ? AbstractTransformer.Incremental.class : AbstractTransformer.class; } @Override @@ -2416,10 +2412,10 @@ public class QVTiCG2JavaVisitor extends CG2JavaVisitor<@NonNull QVTiCodeGenerato js.append("\n"); doConstructor(cgTransformation, oppositeIndex2propertyIdName, allInstancesNames); js.append("\n"); - if (isIncremental) { + /* if (isIncremental) { doCreateIncrementalManagers(); js.append("\n"); - } + } */ doRun(cgTransformation); for (@NonNull CGOperation cgOperation : ClassUtil.nullFree(cgOperations)) { if (!(cgOperation instanceof CGCachedOperation)) { diff --git a/plugins/org.eclipse.qvtd.runtime/src/org/eclipse/qvtd/runtime/evaluation/AbstractTransformer.java b/plugins/org.eclipse.qvtd.runtime/src/org/eclipse/qvtd/runtime/evaluation/AbstractTransformer.java index 7f31d5cec..b26f158e0 100644 --- a/plugins/org.eclipse.qvtd.runtime/src/org/eclipse/qvtd/runtime/evaluation/AbstractTransformer.java +++ b/plugins/org.eclipse.qvtd.runtime/src/org/eclipse/qvtd/runtime/evaluation/AbstractTransformer.java @@ -24,6 +24,14 @@ import org.eclipse.qvtd.runtime.internal.evaluation.AbstractTransformerInternal; */ public abstract class AbstractTransformer extends AbstractTransformerInternal { + public static abstract class Incremental extends AbstractTransformerInternal.Incremental + { + protected Incremental(@NonNull TransformationExecutor executor, @NonNull String @NonNull [] modelNames, + @NonNull PropertyId @Nullable [] propertyIndex2propertyId, @NonNull ClassId @NonNull [] classIndex2classId, int @Nullable [] @NonNull [] classIndex2allClassIndexes) { + super(executor, modelNames, propertyIndex2propertyId, classIndex2classId, classIndex2allClassIndexes) ; + } + } + public static final @NonNull String PLUGIN_ID = "org.eclipse.qvtd.runtime"; public static final @NonNull TracingOption APPENDS = new TracingOption(PLUGIN_ID, "tx/appends"); public static final @NonNull TracingOption CONSUMES = new TracingOption(PLUGIN_ID, "tx/consumes"); @@ -34,9 +42,4 @@ public abstract class AbstractTransformer extends AbstractTransformerInternal @NonNull PropertyId @Nullable [] propertyIndex2propertyId, @NonNull ClassId @NonNull [] classIndex2classId, int @Nullable [] @NonNull [] classIndex2allClassIndexes) { super(executor, modelNames, propertyIndex2propertyId, classIndex2classId, classIndex2allClassIndexes) ; } - - @Override - public <R> R accept(@NonNull ExecutionVisitor<R> visitor) { - return visitor.visitTransformer(this); - } } diff --git a/plugins/org.eclipse.qvtd.runtime/src/org/eclipse/qvtd/runtime/internal/evaluation/AbstractTransformerInternal.java b/plugins/org.eclipse.qvtd.runtime/src/org/eclipse/qvtd/runtime/internal/evaluation/AbstractTransformerInternal.java index e4ff9d1f6..3b969dbe3 100644 --- a/plugins/org.eclipse.qvtd.runtime/src/org/eclipse/qvtd/runtime/internal/evaluation/AbstractTransformerInternal.java +++ b/plugins/org.eclipse.qvtd.runtime/src/org/eclipse/qvtd/runtime/internal/evaluation/AbstractTransformerInternal.java @@ -48,6 +48,7 @@ import org.eclipse.qvtd.runtime.evaluation.AbstractTransformer; import org.eclipse.qvtd.runtime.evaluation.AbstractTypedModelInstance; import org.eclipse.qvtd.runtime.evaluation.Connection; import org.eclipse.qvtd.runtime.evaluation.ExecutionVisitable; +import org.eclipse.qvtd.runtime.evaluation.ExecutionVisitor; import org.eclipse.qvtd.runtime.evaluation.InvocationFailedException; import org.eclipse.qvtd.runtime.evaluation.InvocationManager; import org.eclipse.qvtd.runtime.evaluation.ObjectManager; @@ -60,6 +61,24 @@ import org.eclipse.qvtd.runtime.evaluation.Transformer; */ public abstract class AbstractTransformerInternal extends AbstractModelManager implements Transformer, ExecutionVisitable { + public static abstract class Incremental extends AbstractTransformerInternal + { + protected Incremental(@NonNull TransformationExecutor executor, @NonNull String @NonNull [] modelNames, + @NonNull PropertyId @Nullable [] propertyIndex2propertyId, @NonNull ClassId @NonNull [] classIndex2classId, int @Nullable [] @NonNull [] classIndex2allClassIndexes) { + super(executor, modelNames, propertyIndex2propertyId, classIndex2classId, classIndex2allClassIndexes) ; + } + + @Override + protected @NonNull InvocationManager createInvocationManager() { + return new IncrementalInvocationManager(executor); + } + + @Override + protected @NonNull ObjectManager createObjectManager() { + return new IncrementalObjectManager((IncrementalInvocationManager)invocationManager); + } + } + private static final @NonNull List<@NonNull Integer> EMPTY_INDEX_LIST = Collections.emptyList(); private static final @NonNull List<@NonNull Object> EMPTY_EOBJECT_LIST = Collections.emptyList(); @@ -582,6 +601,11 @@ public abstract class AbstractTransformerInternal extends AbstractModelManager i } } + @Override + public <R> R accept(@NonNull ExecutionVisitor<R> visitor) { + return visitor.visitTransformer(this); + } + /** * Add eRootObjects to the modelIndex model. */ |