Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2016-06-30 12:28:18 +0000
committerEd Willink2016-06-30 12:32:42 +0000
commitbd122f55834417a23c4456ccdcb71ae3609755d1 (patch)
treee83f9b7b6cff9d3064350ab81d83da2695c47074
parent7ff46055ef2c5a0be7a6616d249486dc579f1528 (diff)
downloadorg.eclipse.qvtd-bd122f55834417a23c4456ccdcb71ae3609755d1.tar.gz
org.eclipse.qvtd-bd122f55834417a23c4456ccdcb71ae3609755d1.tar.xz
org.eclipse.qvtd-bd122f55834417a23c4456ccdcb71ae3609755d1.zip
[496420] Localize debug options
-rw-r--r--plugins/org.eclipse.qvtd.compiler/.options17
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DependencyAnalyzer.java155
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Scheduler.java1
-rw-r--r--tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/OCL2QVTiTestCases.java374
4 files changed, 287 insertions, 260 deletions
diff --git a/plugins/org.eclipse.qvtd.compiler/.options b/plugins/org.eclipse.qvtd.compiler/.options
index fe762a99a..10e654a0f 100644
--- a/plugins/org.eclipse.qvtd.compiler/.options
+++ b/plugins/org.eclipse.qvtd.compiler/.options
@@ -1,5 +1,20 @@
# Debugging options for the org.eclipse.ocl.examples.codegen plug-in
+# Turn on tracing of the operation dependency analysis blocking an incomplete operation analysis
+org.eclipse.qvtd.compiler/qvtp2qvts/dependency/block=false
+# Turn on tracing of the operation dependency analysis creating a new operation analysis
+org.eclipse.qvtd.compiler/qvtp2qvts/dependency/create=false
+# Turn on tracing of the operation dependency analysis failing to complete an operation analysis
+org.eclipse.qvtd.compiler/qvtp2qvts/dependency/fail=false
+# Turn on tracing of the operation dependency analysis successfully completing an operation analysis
+org.eclipse.qvtd.compiler/qvtp2qvts/dependency/finish=false
+# Turn on tracing of the operation dependency analysis operation returns
+org.eclipse.qvtd.compiler/qvtp2qvts/dependency/return=false
+# Turn on tracing of the operation dependency analysis (re)starting an operation analysis
+org.eclipse.qvtd.compiler/qvtp2qvts/dependency/start=false
+# Turn on tracing of the operation dependency analysis unblocking an operation analysis for a retry
+org.eclipse.qvtd.compiler/qvtp2qvts/dependency/unblock=false
+
# Turn on tracing of partitioining
org.eclipse.qvtd.compiler/qvtm2qvtp/partitioining=false
# Turn on tracing of connection creation
@@ -8,8 +23,6 @@ org.eclipse.qvtd.compiler/qvtp2qvts/connectionCreation=false
org.eclipse.qvtd.compiler/qvtp2qvts/connectionRouting=false
# Turn on generation of debug graphs
org.eclipse.qvtd.compiler/qvtp2qvts/debugGraphs=false
-# Turn on tracing of the operation dependency analysis
-org.eclipse.qvtd.compiler/qvtp2qvts/dependencyAnalysis=false
# Turn on dump of the consuming node for each class
org.eclipse.qvtd.compiler/qvtp2qvts/dump/class2consumingNodes=false
# Turn on dump of the consumed properties analysis
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DependencyAnalyzer.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DependencyAnalyzer.java
index ad8705c2e..d41751827 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DependencyAnalyzer.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/DependencyAnalyzer.java
@@ -62,6 +62,8 @@ import org.eclipse.ocl.pivot.utilities.EnvironmentFactory;
import org.eclipse.ocl.pivot.utilities.MetamodelManager;
import org.eclipse.ocl.pivot.utilities.ParserException;
import org.eclipse.ocl.pivot.utilities.PivotUtil;
+import org.eclipse.ocl.pivot.utilities.TracingOption;
+import org.eclipse.qvtd.compiler.CompilerConstants;
import org.eclipse.qvtd.pivot.qvtbase.Function;
import org.eclipse.qvtd.pivot.qvtbase.Transformation;
import org.eclipse.qvtd.pivot.qvtbase.utilities.QVTbaseUtil;
@@ -73,8 +75,15 @@ import org.eclipse.qvtd.pivot.qvtimperative.util.AbstractExtendingQVTimperativeV
public class DependencyAnalyzer
{
-// private static final @SuppressWarnings("null")@NonNull Set<@NonNull List<@NonNull DependencyStep>> EMPTY_ELEMENTS = Collections.emptySet();
-
+ // private static final @SuppressWarnings("null")@NonNull Set<@NonNull List<@NonNull DependencyStep>> EMPTY_ELEMENTS = Collections.emptySet();
+ public static final @NonNull TracingOption BLOCK = new TracingOption(CompilerConstants.PLUGIN_ID, "dependency/block");
+ public static final @NonNull TracingOption CREATE = new TracingOption(CompilerConstants.PLUGIN_ID, "dependency/create");
+ public static final @NonNull TracingOption FAIL = new TracingOption(CompilerConstants.PLUGIN_ID, "dependency/fail");
+ public static final @NonNull TracingOption FINISH = new TracingOption(CompilerConstants.PLUGIN_ID, "dependency/finish");
+ public static final @NonNull TracingOption RETURN = new TracingOption(CompilerConstants.PLUGIN_ID, "dependency/return");
+ public static final @NonNull TracingOption START = new TracingOption(CompilerConstants.PLUGIN_ID, "dependency/start");
+ public static final @NonNull TracingOption UNBLOCK = new TracingOption(CompilerConstants.PLUGIN_ID, "dependency/unblock");
+
@SuppressWarnings("serial")
protected static class BlockedAnalysisException extends RuntimeException
{
@@ -98,7 +107,7 @@ public class DependencyAnalyzer
protected DependencyStepFactory(@NonNull DomainUsage usage) {
this.usage = usage;
}
-
+
public @NonNull ClassDependencyStep createClassDependencyStep(org.eclipse.ocl.pivot.@NonNull Class type, @NonNull Element element) {
ClassDependencyStep dependencyStep = class2step.get(type);
if (dependencyStep == null) {
@@ -107,7 +116,7 @@ public class DependencyAnalyzer
}
return dependencyStep;
}
-
+
public @NonNull NavigationDependencyStep createPropertyDependencyStep(@NonNull NavigationCallExp navigationCallExp) {
Property property = PivotUtil.getReferredProperty(navigationCallExp);
assert property != null;
@@ -123,7 +132,7 @@ public class DependencyAnalyzer
return usage;
}
}
-
+
protected abstract static class DependencyStep
{
protected final @NonNull DomainUsage usage;
@@ -146,11 +155,11 @@ public class DependencyAnalyzer
return usage;
}
}
-
+
protected static class ClassDependencyStep extends DependencyStep
{
private final org.eclipse.ocl.pivot.@NonNull Class type;
-
+
public ClassDependencyStep(@NonNull DomainUsage usage, org.eclipse.ocl.pivot.@NonNull Class type, @NonNull Element element) {
super(usage, element);
this.type = type;
@@ -172,11 +181,11 @@ public class DependencyAnalyzer
return usage + " «" + type.eClass().getName() + "»" + type.toString();
}
}
-
+
protected static class NavigationDependencyStep extends DependencyStep
{
protected final @NonNull Property property;
-
+
public NavigationDependencyStep(@NonNull DomainUsage usage, @NonNull Property property, @NonNull NavigationCallExp element) {
super(usage, element);
this.property = property;
@@ -206,23 +215,23 @@ public class DependencyAnalyzer
return property;
}
-// @Override
-// public org.eclipse.ocl.pivot.@NonNull Class getType() {
-// Type type = property.getType();
-// assert type != null;
-// return (org.eclipse.ocl.pivot.Class) type;
-// }
+ // @Override
+ // public org.eclipse.ocl.pivot.@NonNull Class getType() {
+ // Type type = property.getType();
+ // assert type != null;
+ // return (org.eclipse.ocl.pivot.Class) type;
+ // }
@Override
public String toString() {
return usage + " «" + property.eClass().getName() + "»" + property.toString();
}
}
-
+
protected static class UnknownDependencyStep extends DependencyStep
{
private final org.eclipse.ocl.pivot.@NonNull Class type;
-
+
public UnknownDependencyStep(@NonNull DomainUsage usage, org.eclipse.ocl.pivot.@NonNull Class type, @NonNull Element element) {
super(usage, element);
this.type = type;
@@ -244,7 +253,7 @@ public class DependencyAnalyzer
return usage + " ??«" + type.eClass().getName() + "»" + type.toString();
}
}
-
+
protected static class DependencyPaths
{
protected final @NonNull DependencyAnalyzer dependencyAnalyzer;
@@ -313,7 +322,7 @@ public class DependencyAnalyzer
}
return dependencyAnalyzer.createDependencyPaths(newReturnPaths, newHiddenPaths);
}
-
+
public @NonNull DependencyPaths append(@NonNull NavigationDependencyStep propertyDependencyStep) {
Set<@NonNull List<@NonNull DependencyStep>> oldReturnPaths = returnPaths;
if (oldReturnPaths == null) {
@@ -450,8 +459,8 @@ public class DependencyAnalyzer
protected class DependencyAnalyzerVisitor extends AbstractExtendingQVTimperativeVisitor<@NonNull DependencyPaths, @Nullable Object>
{
private final @Nullable DependencyAnalyzerVisitor parent;
- private final @NonNull Map<@NonNull VariableDeclaration, @NonNull DependencyPaths> variable2dependencies = new HashMap<@NonNull VariableDeclaration, @NonNull DependencyPaths>();
-
+ private final @NonNull Map<@NonNull VariableDeclaration, @NonNull DependencyPaths> variable2dependencies = new HashMap<@NonNull VariableDeclaration, @NonNull DependencyPaths>();
+
protected DependencyAnalyzerVisitor(@Nullable DependencyAnalyzerVisitor parent) {
super(null);
this.parent = parent;
@@ -460,13 +469,13 @@ public class DependencyAnalyzer
private void addVariable(@NonNull VariableDeclaration variable, @NonNull DependencyPaths value) {
variable2dependencies.put(variable, value);
}
-
+
public @NonNull DependencyPaths analyze(/*@NonNull*/ Visitable element) {
DependencyPaths accept = element.accept(this);
assert accept != null;
return accept;
}
-
+
protected @NonNull DependencyPaths getVariable(@NonNull VariableDeclaration variable) {
DependencyPaths result = variable2dependencies.get(variable);
if (result != null) {
@@ -514,7 +523,7 @@ public class DependencyAnalyzer
}
@Override
- public @NonNull DependencyPaths visitLetExp(@NonNull LetExp letExp) {
+ public @NonNull DependencyPaths visitLetExp(@NonNull LetExp letExp) {
Variable ownedVariable = letExp.getOwnedVariable();
DependencyPaths result = analyze(ownedVariable.getOwnedInit());
DependencyAnalyzerVisitor nestedAnalyzer = new DependencyAnalyzerVisitor(this);
@@ -570,19 +579,19 @@ public class DependencyAnalyzer
return executeOperationCall(operationCallExp, argumentPaths);
}
OperationId operationId = referredOperation.getOperationId();
-// if (operationId == scheduler.getOclAnyOclAsTypeId()) {
-// return analyzeOperationCallExp_oclAsType(sourceNode, operationCallExp);
-// }
+ // if (operationId == scheduler.getOclAnyOclAsTypeId()) {
+ // return analyzeOperationCallExp_oclAsType(sourceNode, operationCallExp);
+ // }
if (PivotUtil.isSameOperation(operationId, scheduler.getOclElementOclContainerId())) {
return executeOperationCallExp_oclContainer(operationCallExp, argumentPaths);
}
-// if (PivotUtil.isSameOperation(operationId, scheduler.getCollectionSelectByKindId())) {
-// return executeOperationCallExp_collectionSelectByKind(operationCallExp, argumentPaths);
-// }
-// else if (PivotUtil.isSameOperation(operationId, scheduler.getOclAnyOclIsKindOfId())) {
-// return analyzeOperationCallExp_oclIsKindOf(sourceNode, operationCallExp);
-// }
-// else {
+ // if (PivotUtil.isSameOperation(operationId, scheduler.getCollectionSelectByKindId())) {
+ // return executeOperationCallExp_collectionSelectByKind(operationCallExp, argumentPaths);
+ // }
+ // else if (PivotUtil.isSameOperation(operationId, scheduler.getOclAnyOclIsKindOfId())) {
+ // return analyzeOperationCallExp_oclIsKindOf(sourceNode, operationCallExp);
+ // }
+ // else {
org.eclipse.ocl.pivot.Class returnType = ClassUtil.nonNullState((org.eclipse.ocl.pivot.Class) operationCallExp.getType());
DependencyStep step = createClassDependencyStep(returnType, operationCallExp);
DependencyPaths result = createDependencyPaths(step);
@@ -592,7 +601,7 @@ public class DependencyAnalyzer
return result;
}
-/* private @NonNull DependencyPaths executeOperationCallExp_collectionSelectByKind(@NonNull OperationCallExp operationCallExp,
+ /* private @NonNull DependencyPaths executeOperationCallExp_collectionSelectByKind(@NonNull OperationCallExp operationCallExp,
@NonNull List<@NonNull DependencyPaths> argumentPaths) {
OCLExpression oclExpression = operationCallExp.getOwnedArguments().get(0);
Type typeValue = oclExpression.getTypeValue();
@@ -691,20 +700,20 @@ public class DependencyAnalyzer
* Analyses that this analysis blocks
*/
private Set<@NonNull OperationAnalysis> invokingAnalyses = null;
-
+
public OperationAnalysis(@NonNull Operation operation, @NonNull List<@NonNull DependencyPaths> sourceAndArgumentPaths) {
this.operation = operation;
this.sourceAndArgumentPaths = sourceAndArgumentPaths;
- Scheduler.DEPENDENCY_ANALYSIS.println("Create " + this);
+ CREATE.println("Create " + this);
}
-
+
private void addFailedAnalysis(@NonNull OperationAnalysis failedAnalysis) {
if (failedAnalyses == null) {
failedAnalyses = new HashSet<@NonNull OperationAnalysis>();
}
failedAnalyses.add(failedAnalysis);
}
-
+
private void addInvokingAnalysis(@NonNull OperationAnalysis invokingAnalysis) {
if (invokingAnalyses == null) {
invokingAnalyses = new HashSet<@NonNull OperationAnalysis>();
@@ -716,7 +725,7 @@ public class DependencyAnalyzer
if (result != null) {
return result;
}
- Scheduler.DEPENDENCY_ANALYSIS.println("Start " + this);
+ START.println("Start " + this);
try {
DependencyAnalyzerVisitor visitor = new DependencyAnalyzerVisitor(null);
LanguageExpression bodyExpression;
@@ -750,13 +759,13 @@ public class DependencyAnalyzer
}
invokingAnalyses.clear();
}
- Scheduler.DEPENDENCY_ANALYSIS.println("Finish " + this);
+ FINISH.println("Finish " + this);
return result;
} catch (ParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BlockedAnalysisException e) {
- Scheduler.DEPENDENCY_ANALYSIS.println("Fail " + this);
+ FAIL.println("Fail " + this);
for (@NonNull OperationAnalysis analysis : e.getFailedAnalyses()) {
block(this, analysis);
}
@@ -774,14 +783,14 @@ public class DependencyAnalyzer
invokingAnalyses.remove(invokingAnalysis);
invokingAnalysis.removeFailedAnalysis(this);
}
-// invokingAnalyses.clear();
+ // invokingAnalyses.clear();
}
if (failedAnalyses != null) {
for (@NonNull OperationAnalysis failedAnalysis : new ArrayList<@NonNull OperationAnalysis>(failedAnalyses)) {
failedAnalyses.remove(failedAnalysis);
failedAnalysis.removeInvokingAnalysis(this);
}
-// failedAnalyses.clear();
+ // failedAnalyses.clear();
}
unblock(this);
checkAll();
@@ -791,12 +800,12 @@ public class DependencyAnalyzer
if ((failedAnalyses != null) && !failedAnalyses.isEmpty()) {
assert DependencyAnalyzer.this.blockedAnalyses.contains(this) : "should be blocked " + this;
for (@NonNull OperationAnalysis blockingAnalysis : failedAnalyses) {
-// assert DependencyAnalyzer.this.blockedAnalyses.contains(blockingAnalysis);
+ // assert DependencyAnalyzer.this.blockedAnalyses.contains(blockingAnalysis);
assert blockingAnalysis.invokingAnalyses.contains(this);
}
}
if (invokingAnalyses != null) {
-// assert DependencyAnalyzer.this.blockedAnalyses.contains(this);
+ // assert DependencyAnalyzer.this.blockedAnalyses.contains(this);
for (@NonNull OperationAnalysis blockedAnalysis : invokingAnalyses) {
assert DependencyAnalyzer.this.blockedAnalyses.contains(blockedAnalysis);
assert blockedAnalysis.failedAnalyses.contains(this);
@@ -807,7 +816,7 @@ public class DependencyAnalyzer
public @Nullable DependencyPaths getResult() {
return result;
}
-
+
private void removeFailedAnalysis(@NonNull OperationAnalysis operationAnalysis) {
assert failedAnalyses != null;
boolean wasRemoved = failedAnalyses.remove(operationAnalysis);
@@ -829,7 +838,7 @@ public class DependencyAnalyzer
return operation.toString() + " <= " + sourceAndArgumentPaths;
}
}
-
+
private final @NonNull MetamodelManager metamodelManager;
protected final @NonNull RootDomainUsageAnalysis domainUsageAnalysis;
protected final @NonNull SchedulerConstants scheduler;
@@ -840,7 +849,7 @@ public class DependencyAnalyzer
private final @NonNull FinalAnalysis finalAnalysis;
private final @NonNull Set<@NonNull OperationAnalysis> blockedAnalyses = new HashSet<@NonNull OperationAnalysis>();
private final @NonNull Deque<@NonNull OperationAnalysis> unblockedAnalyses = new LinkedList<@NonNull OperationAnalysis>();
-
+
public DependencyAnalyzer(@NonNull SchedulerConstants scheduler) {
EnvironmentFactory environmentFactory = scheduler.getEnvironmentFactory();
this.metamodelManager = environmentFactory.getMetamodelManager();
@@ -866,7 +875,7 @@ public class DependencyAnalyzer
}
}
while (blockedAnalyses.size() > 0) {
-// System.out.println("blocked");
+ // System.out.println("blocked");
Map<String, @NonNull OperationAnalysis> map = new HashMap<String, @NonNull OperationAnalysis>();
for (OperationAnalysis analysis : blockedAnalyses) {
map.put(analysis.toString(), analysis);
@@ -878,17 +887,17 @@ public class DependencyAnalyzer
for (String key : keys) {
OperationAnalysis operationAnalysis = map.get(key);
assert operationAnalysis != null;
-// System.out.println(" " + operationAnalysis);
-// for (OperationAnalysis blockingAnalysis : operationAnalysis.failedAnalyses) {
-// System.out.println(" " + blockingAnalysis);
-// }
+ // System.out.println(" " + operationAnalysis);
+ // for (OperationAnalysis blockingAnalysis : operationAnalysis.failedAnalyses) {
+ // System.out.println(" " + blockingAnalysis);
+ // }
operationAnalysis.check();
if ((operationAnalysis.invokingAnalyses != null) && (operationAnalysis.invokingAnalyses.size() > mostBlockedCount)) {
mostBlocked = operationAnalysis;
- mostBlockedCount = operationAnalysis.invokingAnalyses.size();
+ mostBlockedCount = operationAnalysis.invokingAnalyses.size();
}
}
-// System.out.println("Most blocked " + mostBlockedCount + " : " + mostBlocked);
+ // System.out.println("Most blocked " + mostBlockedCount + " : " + mostBlocked);
assert mostBlocked != null;
mostBlocked.assignUnknownResult();
while (unblockedAnalyses.size() > 0) {
@@ -898,7 +907,7 @@ public class DependencyAnalyzer
}
}
Map<@NonNull String, @NonNull OperationAnalysis> map2 = new HashMap<@NonNull String, @NonNull OperationAnalysis>();
-// System.out.println("not blocked");
+ // System.out.println("not blocked");
for (@NonNull Map<@NonNull List<@NonNull DependencyPaths>, @NonNull OperationAnalysis> values : operation2result.values()) {
for (@NonNull OperationAnalysis analysis : values.values()) {
if (!blockedAnalyses.contains(analysis)) {
@@ -911,17 +920,17 @@ public class DependencyAnalyzer
for (@NonNull String key : keys2) {
OperationAnalysis operationAnalysis = map2.get(key);
assert operationAnalysis != null;
-// System.out.println(" " + operationAnalysis);
-// if (operationAnalysis.failedAnalyses != null) {
-// for (OperationAnalysis failedAnalysis : operationAnalysis.failedAnalyses) {
-// System.out.println(" " + failedAnalysis);
-// }
-// }
+ // System.out.println(" " + operationAnalysis);
+ // if (operationAnalysis.failedAnalyses != null) {
+ // for (OperationAnalysis failedAnalysis : operationAnalysis.failedAnalyses) {
+ // System.out.println(" " + failedAnalysis);
+ // }
+ // }
operationAnalysis.check();
}
return analyze(visitor, element);
}
-
+
public @NonNull DependencyPaths analyze(/*@NonNull*/ Element element,
@NonNull VariableDeclaration selfVariable, @Nullable DependencyPaths selfPath) {
assert element != null;
@@ -933,8 +942,8 @@ public class DependencyAnalyzer
visitor.addVariable(selfVariable, selfPath);
return analyze(visitor, element);
}
-
-/* private DependencyPaths analyzeOperationCall(@NonNull Operation operation, @NonNull List<DependencyPaths> sourceAndArgumentPaths) {
+
+ /* private DependencyPaths analyzeOperationCall(@NonNull Operation operation, @NonNull List<DependencyPaths> sourceAndArgumentPaths) {
OperationId operationId = operation.getOperationId();
Scheduler.DEPENDENCY_ANALYSIS.println(++debugDepth + " Call " + operationId);// + " for " + sourceAndArgumentPaths);
Map<List<DependencyPaths>, OperationAnalysis> args2result = operation2result.get(operationId);
@@ -972,18 +981,18 @@ public class DependencyAnalyzer
} */
protected void block(@NonNull OperationAnalysis invokingAnalysis, @NonNull OperationAnalysis failedAnalysis) {
- Scheduler.DEPENDENCY_ANALYSIS.println("Block " + invokingAnalysis); // + "\n from " + failedAnalysis);
+ BLOCK.println("Block " + invokingAnalysis); // + "\n from " + failedAnalysis);
blockedAnalyses.add(invokingAnalysis);
invokingAnalysis.addFailedAnalysis(failedAnalysis);
failedAnalysis.addInvokingAnalysis(invokingAnalysis);
}
-
+
private void checkAll() {
for (OperationAnalysis operationAnalysis : blockedAnalyses) {
operationAnalysis.check();
}
}
-
+
protected @NonNull ClassDependencyStep createClassDependencyStep(org.eclipse.ocl.pivot.@NonNull Class type, @NonNull Element element) {
while (type instanceof CollectionType) {
type = ClassUtil.nonNullState((org.eclipse.ocl.pivot.Class) ((CollectionType)type).getElementType());
@@ -1017,7 +1026,7 @@ public class DependencyAnalyzer
DependencyStepFactory factory = getDependencyStepFactory(usage);
return factory.createPropertyDependencyStep(navigationCallExp);
}
-
+
/**
* Attempt to execute all applicable overloads of operationCallExp with a given concatenation of known source and argument paths.
* Throws a BlockedAnalysisException if any overload is blocked pending execution of some other operation.
@@ -1088,11 +1097,11 @@ public class DependencyAnalyzer
assert usage != null;
return usage;
}
-
+
protected void unblock(@NonNull OperationAnalysis operationAnalysis) {
- Scheduler.DEPENDENCY_ANALYSIS.println("Unblock " + operationAnalysis);
+ UNBLOCK.println("Unblock " + operationAnalysis);
@SuppressWarnings("unused")boolean wasRemoved = blockedAnalyses.remove(operationAnalysis);
-// assert wasRemoved; -- multiple unblocking occur when introducing UnknownDependencySteps
+ // assert wasRemoved; -- multiple unblocking occur when introducing UnknownDependencySteps
unblockedAnalyses.addLast(operationAnalysis);
}
} \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Scheduler.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Scheduler.java
index 03642777e..d063732ff 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Scheduler.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/Scheduler.java
@@ -44,7 +44,6 @@ public class Scheduler extends SchedulerConstants
public static final @NonNull TracingOption CONNECTION_CREATION = new TracingOption(CompilerConstants.PLUGIN_ID, "qvtp2qvts/connectionCreation");
public static final @NonNull TracingOption CONNECTION_ROUTING = new TracingOption(CompilerConstants.PLUGIN_ID, "qvtp2qvts/connectionRouting");
public static final @NonNull TracingOption DEBUG_GRAPHS = new TracingOption(CompilerConstants.PLUGIN_ID, "qvtp2qvts/debugGraphs");
- public static final @NonNull TracingOption DEPENDENCY_ANALYSIS = new TracingOption(CompilerConstants.PLUGIN_ID, "qvtp2qvts/dependencyAnalysis");
public static final @NonNull TracingOption DUMP_CLASS_TO_CONSUMING_NODES = new TracingOption(CompilerConstants.PLUGIN_ID, "qvtp2qvts/dump/class2consumingNodes");
public static final @NonNull TracingOption DUMP_CLASS_TO_CONTAINING_PROPERTIES = new TracingOption(CompilerConstants.PLUGIN_ID, "qvtp2qvts/dump/class2containingProperty");
public static final @NonNull TracingOption DUMP_CLASS_TO_REALIZED_NODES = new TracingOption(CompilerConstants.PLUGIN_ID, "qvtp2qvts/dump/class2realizedNodes");
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/OCL2QVTiTestCases.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/OCL2QVTiTestCases.java
index dce7e9fb2..08c2d0d8a 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/OCL2QVTiTestCases.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/OCL2QVTiTestCases.java
@@ -4,7 +4,7 @@
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* Adolfo Sanchez-Barbudo Herrera (University of York) - initial API and implementation
*******************************************************************************/
@@ -37,6 +37,7 @@ import org.eclipse.ocl.pivot.utilities.ClassUtil;
import org.eclipse.ocl.pivot.utilities.OCL;
import org.eclipse.ocl.xtext.completeocl.CompleteOCLStandaloneSetup;
import org.eclipse.qvtd.compiler.CompilerChain.Key;
+import org.eclipse.qvtd.compiler.internal.qvtp2qvts.DependencyAnalyzer;
import org.eclipse.qvtd.cs2as.compiler.CS2ASJavaCompilerParameters;
import org.eclipse.qvtd.cs2as.compiler.internal.CS2ASJavaCompilerImpl;
import org.eclipse.qvtd.cs2as.compiler.internal.CS2ASJavaCompilerParametersImpl;
@@ -76,24 +77,24 @@ import example4.kiamacs.KiamacsPackage;
*/
public class OCL2QVTiTestCases extends LoadTestCase {
-// private static final boolean CREATE_GRAPHML = false; // Note. You need Epsilon with Bug 458724 fix to have output graphml models serialised
+ // private static final boolean CREATE_GRAPHML = false; // Note. You need Epsilon with Bug 458724 fix to have output graphml models serialised
private static final @NonNull String TESTS_GEN_PATH = "../org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/";
private static final @NonNull String TESTS_PACKAGE_NAME = "cg";
-// private static final @NonNull String DEBUG_SEGMENT = "debug";
+ // private static final @NonNull String DEBUG_SEGMENT = "debug";
private static @NonNull URI TESTS_BASE_URI = URI.createPlatformResourceURI("org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models", true);
-
+
protected static class MyQVT extends QVTimperative
{
protected final @NonNull String testName;
protected final @NonNull URI baseURI;
-// protected final @NonNull URI samplesBaseUri;
+ // protected final @NonNull URI samplesBaseUri;
private Set<@NonNull String> nsURIs = new HashSet<@NonNull String>();
-
+
public MyQVT(@NonNull String testName) {
super(new QVTiEnvironmentFactory(getProjectMap(), null));
this.testName = testName;
this.baseURI = TESTS_BASE_URI.appendSegment(testName);
-// this.samplesBaseUri = baseURI.appendSegment("samples");
+ // this.samplesBaseUri = baseURI.appendSegment("samples");
}
@Override
@@ -107,7 +108,7 @@ public class OCL2QVTiTestCases extends LoadTestCase {
EPackage.Registry.INSTANCE.remove(nsURI);
}
}
-
+
//
// Execute the transformation with the interpreter
//
@@ -115,12 +116,12 @@ public class OCL2QVTiTestCases extends LoadTestCase {
TransformationExecutor evaluator = new QVTiTransformationExecutor(getEnvironmentFactory(), txClass);
Transformer tx = evaluator.getTransformer();
URI samplesBaseUri = baseURI.appendSegment("samples");
- URI csModelURI = samplesBaseUri.appendSegment(String.format("%s_input.xmi", modelName));
- URI asModelURI = samplesBaseUri.appendSegment(String.format("%s_output_CG.xmi", modelName));
- URI expectedAsModelURI = samplesBaseUri.appendSegment(String.format("%s_output_ref.xmi", modelName));
- saveEmptyModel(asModelURI);
+ URI csModelURI = samplesBaseUri.appendSegment(String.format("%s_input.xmi", modelName));
+ URI asModelURI = samplesBaseUri.appendSegment(String.format("%s_output_CG.xmi", modelName));
+ URI expectedAsModelURI = samplesBaseUri.appendSegment(String.format("%s_output_ref.xmi", modelName));
+ saveEmptyModel(asModelURI);
- ResourceSet rSet = getResourceSet();
+ ResourceSet rSet = getResourceSet();
Resource inputResource = rSet.getResource(csModelURI, true);
tx.addRootObjects(OCL2QVTp.LEFT_MODEL_TYPE_NAME, ClassUtil.nonNullState(inputResource.getContents()));
assertTrue(tx.run());
@@ -148,19 +149,19 @@ public class OCL2QVTiTestCases extends LoadTestCase {
BasicQVTiExecutor testEvaluator = new QVTiIncrementalExecutor(getEnvironmentFactory(), tx, QVTiIncrementalExecutor.Mode.LAZY);
//testEvaluator.saveTransformation(null);
- testEvaluator.loadModel(OCL2QVTp.LEFT_MODEL_TYPE_NAME, csModelURI);
- testEvaluator.createModel(OCL2QVTp.RIGHT_MODEL_TYPE_NAME, asModelURI, null);
- boolean success = testEvaluator.execute();
- testEvaluator.saveModels(TestsXMLUtil.defaultSavingOptions);
- testEvaluator.dispose();
- assertTrue(success);
- ResourceSet rSet = getResourceSet();
- Resource expected = rSet.getResource(expectedAsModelURI, true);
- Resource actual = rSet.getResource(asModelURI, true);
- assert (expected != null) && (actual != null);
+ testEvaluator.loadModel(OCL2QVTp.LEFT_MODEL_TYPE_NAME, csModelURI);
+ testEvaluator.createModel(OCL2QVTp.RIGHT_MODEL_TYPE_NAME, asModelURI, null);
+ boolean success = testEvaluator.execute();
+ testEvaluator.saveModels(TestsXMLUtil.defaultSavingOptions);
+ testEvaluator.dispose();
+ assertTrue(success);
+ ResourceSet rSet = getResourceSet();
+ Resource expected = rSet.getResource(expectedAsModelURI, true);
+ Resource actual = rSet.getResource(asModelURI, true);
+ assert (expected != null) && (actual != null);
assertSameModel(expected, actual);
}
-
+
protected @NonNull Transformation executeNewOCL2QVTi_CompilerChain (@NonNull String oclDoc, String... extendedOclDocs) throws IOException {
URI mainOclDocURI = baseURI.appendSegment(oclDoc);
URI[] oclDocURIs = new URI[extendedOclDocs.length];
@@ -175,9 +176,9 @@ public class OCL2QVTiTestCases extends LoadTestCase {
URI serializedURI = txURI.trimFileExtension().appendFileExtension("serialized.qvti");
doSerialize(inputURI, serializedURI);
}
- return qvtiTransf;
+ return qvtiTransf;
}
-
+
protected void loadEcoreFile(String ecoreFileName, EPackage ePackage) {
URI fileURI = baseURI.appendSegment(ecoreFileName);
@@ -197,7 +198,7 @@ public class OCL2QVTiTestCases extends LoadTestCase {
}
}
}
-
+
protected void loadGenModels(String... genModelNames) {
if (genModelNames != null) {
for (String genModelName : genModelNames) {
@@ -218,10 +219,11 @@ public class OCL2QVTiTestCases extends LoadTestCase {
Resource r = rSet.createResource(modelURI);
r.save(TestsXMLUtil.defaultSavingOptions);
}
-
+
protected @NonNull Map<@NonNull String, @Nullable Map<@NonNull Key<Object>, @Nullable Object>> createTestCasesCompilerOptions() {
Map<@NonNull String, @Nullable Map<@NonNull Key<Object>, @Nullable Object>> options = new HashMap<@NonNull String, @Nullable Map<@NonNull Key<Object>, @Nullable Object>>();
OCL2QVTiCompilerChain.setOption(options, OCL2QVTiCompilerChain.DEFAULT_STEP, OCL2QVTiCompilerChain.SAVE_OPTIONS_KEY, TestsXMLUtil.defaultSavingOptions);
+ OCL2QVTiCompilerChain.setOption(options, OCL2QVTiCompilerChain.DEFAULT_STEP, OCL2QVTiCompilerChain.DEBUG_KEY, true);
// TODO problem when validating OCL2QVTiCompilerChain.setOption(options, OCL2QVTiCompilerChain.DEFAULT_STEP, OCL2QVTiCompilerChain.VALIDATE_KEY, true);
return options;
}
@@ -233,12 +235,12 @@ public class OCL2QVTiTestCases extends LoadTestCase {
public OCL2QVTiCompilerTester(@NonNull URI baseURI, @NonNull String oclDocName, @NonNull QVTimperative metaModelManager) {
super(metaModelManager, null, baseURI.appendSegment(oclDocName));
}
-
+
// For testing purpose
-// @Override
-// protected Resource ocl2qvtp(URI oclDocURI) throws IOException {
-// return super.ocl2qvtp(oclDocURI);
-// }
+ // @Override
+ // protected Resource ocl2qvtp(URI oclDocURI) throws IOException {
+ // return super.ocl2qvtp(oclDocURI);
+ // }
}
@Override
@@ -262,34 +264,34 @@ public class OCL2QVTiTestCases extends LoadTestCase {
myQVT.loadGenModels("SourceMM1.genmodel", "TargetMM1.genmodel");
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("Source2Target.ocl");
CS2ASJavaCompilerParameters cgParams = new CS2ASJavaCompilerParametersImpl(
- "example1.target.lookup.util.TargetLookupSolver",
- "example1.target.lookup.util.TargetLookupResult",
- TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
+ "example1.target.lookup.util.TargetLookupSolver",
+ "example1.target.lookup.util.TargetLookupResult",
+ TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
Class<? extends Transformer> txClass = new CS2ASJavaCompilerImpl().compileTransformation(myQVT, qvtiTransf, cgParams);
myQVT.executeModelsTX_CG(txClass, "model1");
myQVT.executeModelsTX_CG(txClass, "model2");
myQVT.executeModelsTX_CG(txClass, "model3");
myQVT.dispose();
}
-
+
@Test
public void testExample1_Interpreted() throws Exception {
testCaseAppender.uninstall(); // Silence Log failures warning that *.ocl has *.ecore rather than http:// references
MyQVT myQVT = new MyQVT("example1");
myQVT.loadGenModels("SourceMM1.genmodel", "TargetMM1.genmodel");
-
+
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("Source2Target.ocl");
URI txURI = qvtiTransf.eResource().getURI();
-
+
myQVT.dispose();
myQVT = new MyQVT("example1");
myQVT.loadEcoreFile("SourceMM1.ecore", SourcePackage.eINSTANCE);
myQVT.loadEcoreFile("TargetMM1.ecore", TargetPackage.eINSTANCE);
Transformation tx = getTransformation(myQVT.getMetamodelManager().getASResourceSet(), txURI);
-// myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
- myQVT.executeModelsTX_Interpreted(tx, "model1");
- myQVT.executeModelsTX_Interpreted(tx, "model2");
- myQVT.executeModelsTX_Interpreted(tx, "model3");
+ // myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
+ myQVT.executeModelsTX_Interpreted(tx, "model1");
+ myQVT.executeModelsTX_Interpreted(tx, "model2");
+ myQVT.executeModelsTX_Interpreted(tx, "model3");
myQVT.dispose();
}
@@ -306,24 +308,24 @@ public class OCL2QVTiTestCases extends LoadTestCase {
assertValidQVTiModel(qvtpFileURI);
myQVT.dispose();
}
-
+
@Test
public void testExample2_CG() throws Exception {
-// Scheduler.EDGE_ORDER.setState(true);
-// Scheduler.REGION_DEPTH.setState(true);
-// Scheduler.REGION_ORDER.setState(true);
-// Scheduler.REGION_TRAVERSAL.setState(true);
-// QVTs2QVTiVisitor.POLLED_PROPERTIES.setState(true);
-// Scheduler.DEPENDENCY_ANALYSIS.setState(true);
-// AbstractTransformer.INVOCATIONS.setState(true);
+ // Scheduler.EDGE_ORDER.setState(true);
+ // Scheduler.REGION_DEPTH.setState(true);
+ // Scheduler.REGION_ORDER.setState(true);
+ // Scheduler.REGION_TRAVERSAL.setState(true);
+ // QVTs2QVTiVisitor.POLLED_PROPERTIES.setState(true);
+ // Scheduler.DEPENDENCY_ANALYSIS.setState(true);
+ // AbstractTransformer.INVOCATIONS.setState(true);
MyQVT myQVT = new MyQVT("example2");
myQVT.loadGenModels("ClassesCS.genmodel", "Classes.genmodel");
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("classescs2as.ocl");
CS2ASJavaCompilerParameters cgParams = new CS2ASJavaCompilerParametersImpl(
- "example2.classes.lookup.util.ClassesLookupSolver",
- "example2.classes.lookup.util.ClassesLookupResult",
- TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
+ "example2.classes.lookup.util.ClassesLookupSolver",
+ "example2.classes.lookup.util.ClassesLookupResult",
+ TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
Class<? extends Transformer> txClass = new CS2ASJavaCompilerImpl().compileTransformation(myQVT, qvtiTransf, cgParams);
myQVT.executeModelsTX_CG(txClass, "model1");
myQVT.executeModelsTX_CG(txClass, "model2");
@@ -334,106 +336,110 @@ public class OCL2QVTiTestCases extends LoadTestCase {
myQVT.executeModelsTX_CG(txClass, "model7");
myQVT.dispose();
}
-
+
@Test
public void testExample2_Interpreted() throws Exception {
+ // DependencyAnalyzer.START.setState(true);
+ // DependencyAnalyzer.FAIL.setState(true);
+ // DependencyAnalyzer.FINISH.setState(true);
+ DependencyAnalyzer.RETURN.setState(true);
testCaseAppender.uninstall(); // Silence Log failures warning that *.ocl has *.ecore rather than http:// references
MyQVT myQVT = new MyQVT("example2");
myQVT.loadGenModels("ClassesCS.genmodel", "Classes.genmodel");
-
+
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("classescs2as.ocl");
URI txURI = qvtiTransf.eResource().getURI();
-
+
myQVT.dispose();
myQVT = new MyQVT("example2");
myQVT.loadEcoreFile("ClassesCS.ecore", ClassescsPackage.eINSTANCE);
myQVT.loadEcoreFile("Classes.ecore", ClassesPackage.eINSTANCE);
Transformation tx = getTransformation(myQVT.getMetamodelManager().getASResourceSet(), txURI);
-// myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
- myQVT.executeModelsTX_Interpreted(tx, "model1");
- myQVT.executeModelsTX_Interpreted(tx, "model2");
- myQVT.executeModelsTX_Interpreted(tx, "model3");
-// myQVT.executeModelsTX_Interpreted(tx, "model4");
-// myQVT.executeModelsTX_Interpreted(tx, "model5");
-// myQVT.executeModelsTX_Interpreted(tx, "model6");
-// myQVT.executeModelsTX_Interpreted(tx, "model7");
+ // myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
+ myQVT.executeModelsTX_Interpreted(tx, "model1");
+ myQVT.executeModelsTX_Interpreted(tx, "model2");
+ myQVT.executeModelsTX_Interpreted(tx, "model3");
+ // myQVT.executeModelsTX_Interpreted(tx, "model4");
+ // myQVT.executeModelsTX_Interpreted(tx, "model5");
+ // myQVT.executeModelsTX_Interpreted(tx, "model6");
+ // myQVT.executeModelsTX_Interpreted(tx, "model7");
myQVT.dispose();
}
@Test
public void testExample2_V2_CG() throws Exception {
-// Scheduler.DUMP_CLASS_TO_CONSUMING_NODES.setState(true);
-// Scheduler.DUMP_CLASS_TO_CONTAINING_PROPERTIES.setState(true);
-// Scheduler.DUMP_CLASS_TO_REALIZED_NODES.setState(true);
-// Scheduler.DUMP_INPUT_MODEL_TO_DOMAIN_USAGE.setState(true);
-// Scheduler.DUMP_PROPERTY_TO_CONSUMING_CLASSES.setState(true);
-// Scheduler.EDGE_ORDER.setState(true);
-// Scheduler.REGION_DEPTH.setState(true);
-// Scheduler.REGION_ORDER.setState(true);
-// Scheduler.REGION_TRAVERSAL.setState(true);
-// QVTs2QVTiVisitor.POLLED_PROPERTIES.setState(true);
-// Scheduler.DEPENDENCY_ANALYSIS.setState(true);
-// AbstractTransformer.INVOCATIONS.setState(true);
+ // Scheduler.DUMP_CLASS_TO_CONSUMING_NODES.setState(true);
+ // Scheduler.DUMP_CLASS_TO_CONTAINING_PROPERTIES.setState(true);
+ // Scheduler.DUMP_CLASS_TO_REALIZED_NODES.setState(true);
+ // Scheduler.DUMP_INPUT_MODEL_TO_DOMAIN_USAGE.setState(true);
+ // Scheduler.DUMP_PROPERTY_TO_CONSUMING_CLASSES.setState(true);
+ // Scheduler.EDGE_ORDER.setState(true);
+ // Scheduler.REGION_DEPTH.setState(true);
+ // Scheduler.REGION_ORDER.setState(true);
+ // Scheduler.REGION_TRAVERSAL.setState(true);
+ // QVTs2QVTiVisitor.POLLED_PROPERTIES.setState(true);
+ DependencyAnalyzer.FINISH.setState(true);
+ // AbstractTransformer.INVOCATIONS.setState(true);
MyQVT myQVT = new MyQVT("example2");
OCLstdlibPackage.eINSTANCE.getName();
myQVT.loadGenModels("ClassesCS.genmodel", "Classes.genmodel");
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("classescs2asV2.ocl");
CS2ASJavaCompilerParameters cgParams = new CS2ASJavaCompilerParametersImpl(
- "example2.classes.lookup.util.ClassesLookupSolver",
- "example2.classes.lookup.util.ClassesLookupResult",
- TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
+ "example2.classes.lookup.util.ClassesLookupSolver",
+ "example2.classes.lookup.util.ClassesLookupResult",
+ TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
Class<? extends Transformer> txClass = new CS2ASJavaCompilerImpl().compileTransformation(myQVT, qvtiTransf, cgParams);
-
+
myQVT.dispose();
myQVT = new MyQVT("example2");
myQVT.loadEcoreFile("ClassesCS.ecore", ClassescsPackage.eINSTANCE);
myQVT.loadEcoreFile("Classes.ecore", ClassesPackage.eINSTANCE);
-
+
myQVT.executeModelsTX_CG(txClass, "model1V2");
myQVT.executeModelsTX_CG(txClass, "model2V2");
myQVT.executeModelsTX_CG(txClass, "model3V2");
myQVT.executeModelsTX_CG(txClass, "model4V2");
myQVT.dispose();
}
-
+
@Test
public void testExample2_V2_Interpreted() throws Exception {
testCaseAppender.uninstall(); // Silence Log failures warning that *.ocl has *.ecore rather than http:// references
MyQVT myQVT = new MyQVT("example2");
myQVT.loadGenModels("ClassesCS.genmodel", "Classes.genmodel");
-
+
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("classescs2asV2.ocl");
URI txURI = qvtiTransf.eResource().getURI();
-
+
myQVT.dispose();
myQVT = new MyQVT("example2");
OCLstdlibPackage.eINSTANCE.getName();
myQVT.loadEcoreFile("ClassesCS.ecore", ClassescsPackage.eINSTANCE);
myQVT.loadEcoreFile("Classes.ecore", ClassesPackage.eINSTANCE);
Transformation tx = getTransformation(myQVT.getMetamodelManager().getASResourceSet(), txURI);
- myQVT.executeModelsTX_Interpreted(tx, "model1V2");
- myQVT.executeModelsTX_Interpreted(tx, "model2V2");
- myQVT.executeModelsTX_Interpreted(tx, "model3V2");
- myQVT.executeModelsTX_Interpreted(tx, "model4V2");
+ myQVT.executeModelsTX_Interpreted(tx, "model1V2");
+ myQVT.executeModelsTX_Interpreted(tx, "model2V2");
+ myQVT.executeModelsTX_Interpreted(tx, "model3V2");
+ myQVT.executeModelsTX_Interpreted(tx, "model4V2");
myQVT.dispose();
}
-
-// Note supported anymore
-// @Test
-// public void testExample2_OCL2QVTp_MiddleModel() throws Exception {
-// MyQVT myQVT = new MyQVT("example2");
-// URI baseURI = TESTS_BASE_URI.appendSegment("example2");
-// URI oclDocURI = baseURI.appendSegment("classescs2as.ocl.oclas");
-// URI qvtpFileURI = baseURI.appendSegment("classescs2as.qvtp.qvtcas");
-// URI tracesMMURI = baseURI.appendSegment("classescs2as.ecore.oclas");
-//
-// OCL2QVTiBrokerTester mtc = new OCL2QVTiBrokerTester(baseURI, "classescs2as.ocl", myQVT, false);
-// mtc.runOCL2QVTp_MiddleModel(oclDocURI, qvtpFileURI, tracesMMURI);
-// // Test the QVTp transformation can be loaded
-// assertValidQVTiModel(qvtpFileURI);
-// myQVT.dispose();
-// }
-
+
+ // Note supported anymore
+ // @Test
+ // public void testExample2_OCL2QVTp_MiddleModel() throws Exception {
+ // MyQVT myQVT = new MyQVT("example2");
+ // URI baseURI = TESTS_BASE_URI.appendSegment("example2");
+ // URI oclDocURI = baseURI.appendSegment("classescs2as.ocl.oclas");
+ // URI qvtpFileURI = baseURI.appendSegment("classescs2as.qvtp.qvtcas");
+ // URI tracesMMURI = baseURI.appendSegment("classescs2as.ecore.oclas");
+ //
+ // OCL2QVTiBrokerTester mtc = new OCL2QVTiBrokerTester(baseURI, "classescs2as.ocl", myQVT, false);
+ // mtc.runOCL2QVTp_MiddleModel(oclDocURI, qvtpFileURI, tracesMMURI);
+ // // Test the QVTp transformation can be loaded
+ // assertValidQVTiModel(qvtpFileURI);
+ // myQVT.dispose();
+ // }
+
@Test
public void testExample2_OCL2QVTp_MiddleFolded() throws Exception {
MyQVT myQVT = new MyQVT("example2");
@@ -450,88 +456,88 @@ public class OCL2QVTiTestCases extends LoadTestCase {
@Test
public void testExample3_CG() throws Exception {
-// Scheduler.CONNECTION_CREATION.setState(true);
-// Scheduler.CONNECTION_ROUTING.setState(true);
-// Scheduler.DEBUG_GRAPHS.setState(true);
-// Scheduler.EDGE_ORDER.setState(true);
-// Scheduler.REGION_CYCLES.setState(true);
-// Scheduler.REGION_DEPTH.setState(true);
-// Scheduler.REGION_ORDER.setState(true);
-// Scheduler.REGION_STACK.setState(true);
+ // Scheduler.CONNECTION_CREATION.setState(true);
+ // Scheduler.CONNECTION_ROUTING.setState(true);
+ // Scheduler.DEBUG_GRAPHS.setState(true);
+ // Scheduler.EDGE_ORDER.setState(true);
+ // Scheduler.REGION_CYCLES.setState(true);
+ // Scheduler.REGION_DEPTH.setState(true);
+ // Scheduler.REGION_ORDER.setState(true);
+ // Scheduler.REGION_STACK.setState(true);
MyQVT myQVT = new MyQVT("example3");
myQVT.loadGenModels("KiamaAS.genmodel", "KiamaCS.genmodel");
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("KiamaRewrite.ocl");
CS2ASJavaCompilerParameters cgParams = new CS2ASJavaCompilerParametersImpl("","",
- TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
+ TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
Class<? extends Transformer> txClass = new CS2ASJavaCompilerImpl().compileTransformation(myQVT, qvtiTransf, cgParams);
-// myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
-// FIXME BUG 484278 model0 has an invalid model TopCS.node[1] has a null value.
-// executeModelsTX_CG(myQVT, txClass, testBaseURI, "model0");
+ // myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
+ // FIXME BUG 484278 model0 has an invalid model TopCS.node[1] has a null value.
+ // executeModelsTX_CG(myQVT, txClass, testBaseURI, "model0");
myQVT.executeModelsTX_CG(txClass, "model1");
myQVT.dispose();
}
-
+
@Test
public void testExample3_Interpreted() throws Exception {
MyQVT myQVT = new MyQVT("example3");
myQVT.loadGenModels("KiamaAS.genmodel", "KiamaCS.genmodel");
Transformation tx = myQVT.executeNewOCL2QVTi_CompilerChain("KiamaRewrite.ocl");
- myQVT.executeModelsTX_Interpreted(tx, "model1");
+ myQVT.executeModelsTX_Interpreted(tx, "model1");
myQVT.dispose();
- }
-
+ }
+
@Test
public void testExample4_CG() throws Exception {
-// CommonSubexpressionEliminator.CSE_BUILD.setState(true);
-// CommonSubexpressionEliminator.CSE_PLACES.setState(true);
-// CommonSubexpressionEliminator.CSE_PRUNE.setState(true);
-// CommonSubexpressionEliminator.CSE_PULL_UP.setState(true);
-// CommonSubexpressionEliminator.CSE_PUSH_UP.setState(true);
-// CommonSubexpressionEliminator.CSE_REWRITE.setState(true);
-// Scheduler.EDGE_ORDER.setState(true);
-// Scheduler.REGION_DEPTH.setState(true);
-// Scheduler.REGION_ORDER.setState(true);
-// Scheduler.REGION_TRAVERSAL.setState(true);
-// QVTs2QVTiVisitor.POLLED_PROPERTIES.setState(true);
-// AbstractTransformer.EXCEPTIONS.setState(true);
-// AbstractTransformer.INVOCATIONS.setState(true);
+ // CommonSubexpressionEliminator.CSE_BUILD.setState(true);
+ // CommonSubexpressionEliminator.CSE_PLACES.setState(true);
+ // CommonSubexpressionEliminator.CSE_PRUNE.setState(true);
+ // CommonSubexpressionEliminator.CSE_PULL_UP.setState(true);
+ // CommonSubexpressionEliminator.CSE_PUSH_UP.setState(true);
+ // CommonSubexpressionEliminator.CSE_REWRITE.setState(true);
+ // Scheduler.EDGE_ORDER.setState(true);
+ // Scheduler.REGION_DEPTH.setState(true);
+ // Scheduler.REGION_ORDER.setState(true);
+ // Scheduler.REGION_TRAVERSAL.setState(true);
+ // QVTs2QVTiVisitor.POLLED_PROPERTIES.setState(true);
+ // AbstractTransformer.EXCEPTIONS.setState(true);
+ // AbstractTransformer.INVOCATIONS.setState(true);
MyQVT myQVT = new MyQVT("example4");
myQVT.loadGenModels("SimplerKiamaAS.genmodel", "SimplerKiamaCS.genmodel");
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("SimplerKiama.ocl");
CS2ASJavaCompilerParameters cgParams = new CS2ASJavaCompilerParametersImpl("","",
- TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
+ TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
Class<? extends Transformer> txClass = new CS2ASJavaCompilerImpl().compileTransformation(myQVT, qvtiTransf, cgParams);
-// myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
-// FIXME BUG 484278 model0 has an invalid model TopCS.node[1] has a null value.
-// executeModelsTX_CG(myQVT, txClass, testBaseURI, "model0");
+ // myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
+ // FIXME BUG 484278 model0 has an invalid model TopCS.node[1] has a null value.
+ // executeModelsTX_CG(myQVT, txClass, testBaseURI, "model0");
myQVT.executeModelsTX_CG(txClass, "model1");
myQVT.executeModelsTX_CG(txClass, "model2");
myQVT.executeModelsTX_CG(txClass, "model3");
myQVT.dispose();
}
-
+
@Test
public void testExample4_Interpreted() throws Exception {
MyQVT myQVT = new MyQVT("example4");
myQVT.loadGenModels("SimplerKiamaAS.genmodel", "SimplerKiamaCS.genmodel");
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("SimplerKiama.ocl");
URI txURI = qvtiTransf.eResource().getURI();
-
+
myQVT.dispose();
myQVT = new MyQVT("example4");
myQVT.loadEcoreFile("SimplerKiamaCS.ecore", KiamacsPackage.eINSTANCE);
myQVT.loadEcoreFile("SimplerKiamaAS.ecore", KiamaasPackage.eINSTANCE);
-
+
Transformation tx = getTransformation(myQVT.getMetamodelManager().getASResourceSet(), txURI);
-// myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
-// FIXME BUG 484278 model0 has an invalid model TopCS.node[1] has a null value.
-// executeModelsTX_Interpreted(myQVT, qvtiTransf, baseURI, "model0");
- myQVT.executeModelsTX_Interpreted(tx, "model1");
- myQVT.executeModelsTX_Interpreted(tx, "model2");
- myQVT.executeModelsTX_Interpreted(tx, "model3");
+ // myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
+ // FIXME BUG 484278 model0 has an invalid model TopCS.node[1] has a null value.
+ // executeModelsTX_Interpreted(myQVT, qvtiTransf, baseURI, "model0");
+ myQVT.executeModelsTX_Interpreted(tx, "model1");
+ myQVT.executeModelsTX_Interpreted(tx, "model2");
+ myQVT.executeModelsTX_Interpreted(tx, "model3");
myQVT.dispose();
}
-
+
@Test
public void testExample5_CG() throws Exception {
MyQVT myQVT = new MyQVT("example5");
@@ -539,43 +545,43 @@ public class OCL2QVTiTestCases extends LoadTestCase {
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("Source2TargetBase.ocl");
CS2ASJavaCompilerParameters cgParams = new CS2ASJavaCompilerParametersImpl(
- "",
- "",
- TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
+ "",
+ "",
+ TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
Class<? extends Transformer> txClass = new CS2ASJavaCompilerImpl()
- .compileTransformation(myQVT, qvtiTransf, cgParams);
-
+ .compileTransformation(myQVT, qvtiTransf, cgParams);
+
// Execute CGed transformation
myQVT.executeModelsTX_CG(txClass, "model1");
-
+
myQVT.dispose();
myQVT = new MyQVT("example5");
- myQVT.loadGenModels("SourceBaseMM.genmodel", "TargetBaseMM.genmodel",
- "SourceDerivedMM.genmodel", "TargetDerivedMM.genmodel");
-
- qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("Source2TargetDerived.ocl",
+ myQVT.loadGenModels("SourceBaseMM.genmodel", "TargetBaseMM.genmodel",
+ "SourceDerivedMM.genmodel", "TargetDerivedMM.genmodel");
+
+ qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("Source2TargetDerived.ocl",
"Source2TargetBase.ocl");
txClass = new CS2ASJavaCompilerImpl()
.compileTransformation(myQVT, qvtiTransf, cgParams);
-
+
// Execute CGed transformation
myQVT.executeModelsTX_CG(txClass, "model2");
myQVT.dispose();
}
-
+
@Test
public void testExample5_Interpreted() throws Exception {
MyQVT myQVT = new MyQVT("example5");
myQVT.loadGenModels("SourceBaseMM.genmodel", "TargetBaseMM.genmodel");
Transformation tx = myQVT.executeNewOCL2QVTi_CompilerChain("Source2TargetBase.ocl");
- myQVT.executeModelsTX_Interpreted(tx, "model1");
-
+ myQVT.executeModelsTX_Interpreted(tx, "model1");
+
myQVT.dispose();
myQVT = new MyQVT("example5");
- myQVT.loadGenModels("SourceBaseMM.genmodel", "TargetBaseMM.genmodel",
- "SourceDerivedMM.genmodel", "TargetDerivedMM.genmodel");
- tx = myQVT.executeNewOCL2QVTi_CompilerChain("Source2TargetDerived.ocl",
+ myQVT.loadGenModels("SourceBaseMM.genmodel", "TargetBaseMM.genmodel",
+ "SourceDerivedMM.genmodel", "TargetDerivedMM.genmodel");
+ tx = myQVT.executeNewOCL2QVTi_CompilerChain("Source2TargetDerived.ocl",
"Source2TargetBase.ocl");
myQVT.executeModelsTX_Interpreted(tx, "model2");
myQVT.dispose();
@@ -588,20 +594,20 @@ public class OCL2QVTiTestCases extends LoadTestCase {
// MetaModelManager.initializeASResourceSet(asResourceSet);
assertValidModel(asURI, asResourceSet);
}
- */
+ */
protected static void assertValidModel(URI asURI, ResourceSet rSet) {
Resource resource = rSet.getResource(asURI, true);
- EcoreUtil.resolveAll(resource);
+ EcoreUtil.resolveAll(resource);
String rUriString = resource.getURI().toString();
assertNoUnresolvedProxies("Validating a resource: " + rUriString, resource);
- assertNoResourceErrors("Loading a resource" + rUriString, resource);
- //assertNoValidationErrors("Loading a resource" + rUriString, resource);
+ assertNoResourceErrors("Loading a resource" + rUriString, resource);
+ //assertNoValidationErrors("Loading a resource" + rUriString, resource);
}
protected static void assertValidQVTiModel(@NonNull URI asURI) {
-
+
// We don't generate QVTi models anymore. Perhaps do a QVTc validation if there is a QVTcore.ocl file
}
@@ -620,15 +626,15 @@ public class OCL2QVTiTestCases extends LoadTestCase {
}
}
throw new IllegalStateException("No transformation");
- }
-
+ }
+
// FIXME move following clones to a Util class
protected static @NonNull XtextResource pivot2cs(@NonNull OCL ocl, @NonNull ResourceSet resourceSet, @NonNull ASResource asResource, @NonNull URI outputURI) throws IOException {
XtextResource xtextResource = ClassUtil.nonNullState((XtextResource) resourceSet.createResource(outputURI, QVTimperativeCSPackage.eCONTENT_TYPE));
ocl.as2cs(asResource, (CSResource) xtextResource);
- assertNoResourceErrors("Conversion failed", xtextResource);
+ assertNoResourceErrors("Conversion failed", xtextResource);
assertNoDiagnosticErrors("Concrete Syntax validation failed", xtextResource);
- try {
+ try {
xtextResource.save(TestsXMLUtil.defaultSavingOptions);
}
catch (Exception e) {
@@ -646,7 +652,7 @@ public class OCL2QVTiTestCases extends LoadTestCase {
ResourceSet resourceSet = new ResourceSetImpl();
//
// Load QVTcAS
- //
+ //
OCL ocl = QVTbase.newInstance(OCL.NO_PROJECTS);
ocl.getEnvironmentFactory().setSeverity(PivotTables.STR_Variable_c_c_CompatibleInitialiserType, StatusCodes.Severity.IGNORE);
try {
@@ -656,7 +662,7 @@ public class OCL2QVTiTestCases extends LoadTestCase {
assertNoValidationErrors("Normalisation invalid", asResource);
//
// Pivot to CS
- //
+ //
XtextResource xtextResource = pivot2cs(ocl, resourceSet, asResource, serializedURI);
resourceSet.getResources().clear();
return xtextResource;
@@ -671,16 +677,16 @@ public class OCL2QVTiTestCases extends LoadTestCase {
protected static @NonNull ASResource loadQVTiAS(@NonNull OCL ocl, @NonNull URI inputURI) {
Resource asResource = ocl.getMetamodelManager().getASResourceSet().getResource(inputURI, true);
assert asResource != null;
-// List<String> conversionErrors = new ArrayList<String>();
-// RootPackageCS documentCS = Ecore2OCLinEcore.importFromEcore(resourceSet, null, ecoreResource);
-// Resource eResource = documentCS.eResource();
+ // List<String> conversionErrors = new ArrayList<String>();
+ // RootPackageCS documentCS = Ecore2OCLinEcore.importFromEcore(resourceSet, null, ecoreResource);
+ // Resource eResource = documentCS.eResource();
assertNoResourceErrors("Load failed", asResource);
-// Resource xtextResource = resourceSet.createResource(outputURI, OCLinEcoreCSTPackage.eCONTENT_TYPE);
-// XtextResource xtextResource = (XtextResource) resourceSet.createResource(outputURI);
-// xtextResource.getContents().add(documentCS);
+ // Resource xtextResource = resourceSet.createResource(outputURI, OCLinEcoreCSTPackage.eCONTENT_TYPE);
+ // XtextResource xtextResource = (XtextResource) resourceSet.createResource(outputURI);
+ // xtextResource.getContents().add(documentCS);
return (ASResource) asResource;
}
-
+
}

Back to the top