Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2014-08-06 13:26:43 +0000
committerEd Willink2014-08-06 13:26:43 +0000
commitd9fff51be2d98c9d055662fc760e5a36d94ea89d (patch)
tree0ad13653318df09c9e951eec081523c66c04b228
parent996e9683d4df90bf7fcedf913bc2a060e72a5316 (diff)
downloadorg.eclipse.ocl-d9fff51be2d98c9d055662fc760e5a36d94ea89d.tar.gz
org.eclipse.ocl-d9fff51be2d98c9d055662fc760e5a36d94ea89d.tar.xz
org.eclipse.ocl-d9fff51be2d98c9d055662fc760e5a36d94ea89d.zip
[441004] Correct CGClass.templateParameters isUnique
-rw-r--r--examples/org.eclipse.ocl.examples.autogen/src/org/eclipse/ocl/examples/autogen/lookup/LookupCG2JavaVisitor.java9
-rw-r--r--examples/org.eclipse.ocl.examples.autogen/src/org/eclipse/ocl/examples/autogen/lookup/LookupCodeGenerator.java16
-rw-r--r--examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGClassImpl.java11
-rw-r--r--examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelPackageImpl.java2
-rw-r--r--examples/org.eclipse.ocl.examples.codegen/model/cgmodel.ecore4
-rw-r--r--examples/org.eclipse.ocl.examples.pivot/emf-gen/org/eclipse/ocl/examples/pivot/lookup/AutoPivotLookupVisitor.java12
6 files changed, 33 insertions, 21 deletions
diff --git a/examples/org.eclipse.ocl.examples.autogen/src/org/eclipse/ocl/examples/autogen/lookup/LookupCG2JavaVisitor.java b/examples/org.eclipse.ocl.examples.autogen/src/org/eclipse/ocl/examples/autogen/lookup/LookupCG2JavaVisitor.java
index d2dc955c5f..ba439cc21c 100644
--- a/examples/org.eclipse.ocl.examples.autogen/src/org/eclipse/ocl/examples/autogen/lookup/LookupCG2JavaVisitor.java
+++ b/examples/org.eclipse.ocl.examples.autogen/src/org/eclipse/ocl/examples/autogen/lookup/LookupCG2JavaVisitor.java
@@ -80,9 +80,8 @@ public class LookupCG2JavaVisitor extends AutoCG2JavaVisitor<LookupCodeGenerator
js.append("this.");
js.appendReferenceTo(context.getChildVariable());
js.append(" = " + LookupClassContext.ELEMENT_NAME + ";\n");
- js.append("return (");
- js.appendClassReference(Environment.class);
- js.append(")" + LookupClassContext.ELEMENT_NAME);
+ js.append("return ");
+ js.append(LookupClassContext.ELEMENT_NAME);
js.append(".accept(this);\n");
js.popIndentation();
js.append("}\n");
@@ -124,9 +123,7 @@ public class LookupCG2JavaVisitor extends AutoCG2JavaVisitor<LookupCodeGenerator
js.append("this.");
js.appendReferenceTo(context.getChildVariable());
js.append(" = " + LookupClassContext.ELEMENT_NAME + ";\n");
- js.append("return (");
- js.appendClassReference(Environment.class);
- js.append(")((");
+ js.append("return ((");
js.appendClassReference(Visitable.class);
js.append(")" + LookupClassContext.PARENT_NAME + ").accept(this);\n");
js.popIndentation();
diff --git a/examples/org.eclipse.ocl.examples.autogen/src/org/eclipse/ocl/examples/autogen/lookup/LookupCodeGenerator.java b/examples/org.eclipse.ocl.examples.autogen/src/org/eclipse/ocl/examples/autogen/lookup/LookupCodeGenerator.java
index 39ec937f37..b83c08157f 100644
--- a/examples/org.eclipse.ocl.examples.autogen/src/org/eclipse/ocl/examples/autogen/lookup/LookupCodeGenerator.java
+++ b/examples/org.eclipse.ocl.examples.autogen/src/org/eclipse/ocl/examples/autogen/lookup/LookupCodeGenerator.java
@@ -162,6 +162,7 @@ public class LookupCodeGenerator extends AutoCodeGenerator
protected final @NonNull Property asIdResolverProperty;
protected final @NonNull Operation asVisitorEnvOperation;
protected final @NonNull Operation asVisitorParentEnvOperation;
+ protected final @NonNull Type asEnvironmentType;
//
// Important CG elements
//
@@ -189,7 +190,7 @@ public class LookupCodeGenerator extends AutoCodeGenerator
this.asElementEnvOperation = DomainUtil.nonNullState((Operation)asElementTypeServer.getMemberOperation(envOperationId));
OperationId parentEnvOperationId = asElementType.getTypeId().getOperationId(0, LookupClassContext.PARENT_ENV_NAME, emptyParametersId);
this.asElementParentEnvOperation = DomainUtil.nonNullState((Operation)asElementTypeServer.getMemberOperation(parentEnvOperationId));
- Type asEnvironmentType = DomainUtil.nonNullState(asElementParentEnvOperation.getType());
+ this.asEnvironmentType = DomainUtil.nonNullState(asElementParentEnvOperation.getType());
TypeServer asEnvironmentTypeServer = metaModelManager.getTypeServer(asEnvironmentType);
OperationId nestedEnvOperationId = asElementType.getTypeId().getOperationId(0, LookupClassContext.NESTED_ENV_NAME, emptyParametersId);
this.asEnvironmentNestedEnvOperation = DomainUtil.nonNullState((Operation)asEnvironmentTypeServer.getMemberOperation(nestedEnvOperationId));
@@ -282,8 +283,9 @@ public class LookupCodeGenerator extends AutoCodeGenerator
// String superClassName = "AbstractExtending" + visitorClass; // The default Abstract Visitor generated for the language
String superClassName = "AbstractExtendingVisitor"; // The default Abstract Visitor generated for the language
CGClass superClass = getExternalClass(visitorPackage, superClassName, false);
- superClass.getTemplateParameters().add(getExternalClass(Object.class));
- superClass.getTemplateParameters().add(getExternalClass(Environment.class));
+ CGClass cgResultClass = getExternalClass(getVisitorResultClass());
+ superClass.getTemplateParameters().add(cgResultClass);
+ superClass.getTemplateParameters().add(cgResultClass);
cgClass.getSuperTypes().add(superClass);
}
}
@@ -443,6 +445,11 @@ public class LookupCodeGenerator extends AutoCodeGenerator
public @NonNull Class<?> getVisitableClass() {
return Visitable.class;
}
+
+ @Override
+ public @NonNull Class<?> getVisitorResultClass() {
+ return Environment.class;
+ }
@Override
protected @NonNull String getVisitorPackageName(@NonNull String visitorsPackageName) {
@@ -546,7 +553,7 @@ public class LookupCodeGenerator extends AutoCodeGenerator
}
/**
- * Copy all the visitXXX operation bodies from the _emv bodies replacing references to redefined parameters.
+ * Copy all the visitXXX operation bodies from the _env bodies replacing references to redefined parameters.
*/
protected void rewriteVisitOperationBodies(@NonNull Map<Element, Element> reDefinitions, @NonNull Map<Operation, Operation> envOperation2asOperation) {
for (@SuppressWarnings("null")@NonNull Operation envOperation : envOperation2asOperation.keySet()) {
@@ -556,6 +563,7 @@ public class LookupCodeGenerator extends AutoCodeGenerator
OCLExpression asExpression = RereferencingCopier.copy(DomainUtil.nonNullState(envExpressionInOCL.getBodyExpression()), reDefinitions);
ExpressionInOCL asExpressionInOCL = PivotUtil.createExpressionInOCL(null, asExpression, asElement);
PivotUtil.initOperation(asOperation, asExpressionInOCL);
+ asOperation.setType(asEnvironmentType);
asOperation.setIsRequired(false);
}
}
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGClassImpl.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGClassImpl.java
index d12c70fdcf..e325770019 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGClassImpl.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGClassImpl.java
@@ -266,12 +266,19 @@ public class CGClassImpl extends CGNamedElementImpl implements CGClass {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT FIXME workaround BUG 89325
*/
+ @SuppressWarnings("serial")
@Override
public List<CGClass> getTemplateParameters() {
if (templateParameters == null) {
- templateParameters = new EObjectEList<CGClass>(CGClass.class, this, CGModelPackage.CG_CLASS__TEMPLATE_PARAMETERS);
+ templateParameters = new EObjectEList<CGClass>(CGClass.class, this, CGModelPackage.CG_CLASS__TEMPLATE_PARAMETERS)
+ {
+ @Override
+ protected boolean isUnique() {
+ return false;
+ }
+ };
}
return templateParameters;
}
diff --git a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelPackageImpl.java b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelPackageImpl.java
index 0674ec62fa..4265a8da9d 100644
--- a/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelPackageImpl.java
+++ b/examples/org.eclipse.ocl.examples.codegen/emf-gen/org/eclipse/ocl/examples/codegen/cgmodel/impl/CGModelPackageImpl.java
@@ -3269,7 +3269,7 @@ public class CGModelPackageImpl extends EPackageImpl implements CGModelPackage {
initEReference(getCGClass_Invariants(), this.getCGConstraint(), null, "invariants", null, 0, -1, CGClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
initEReference(getCGClass_SuperTypes(), this.getCGClass(), null, "superTypes", null, 0, -1, CGClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getCGClass_Interface(), ecorePackage.getEBoolean(), "interface", "false", 1, 1, CGClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
- initEReference(getCGClass_TemplateParameters(), this.getCGClass(), null, "templateParameters", null, 0, -1, CGClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCGClass_TemplateParameters(), this.getCGClass(), null, "templateParameters", null, 0, -1, CGClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(cgCollectionExpEClass, CGCollectionExp.class, "CGCollectionExp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getCGCollectionExp_Parts(), this.getCGCollectionPart(), this.getCGCollectionPart_CollectionExp(), "parts", null, 0, -1, CGCollectionExp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.ecore b/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.ecore
index 5ec48adef0..3b8f33122b 100644
--- a/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.ecore
+++ b/examples/org.eclipse.ocl.examples.codegen/model/cgmodel.ecore
@@ -110,8 +110,8 @@
<details key="documentation" value="the boolean value"/>
</eAnnotations>
</eStructuralFeatures>
- <eStructuralFeatures xsi:type="ecore:EReference" name="templateParameters" upperBound="-1"
- eType="#//CGClass" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templateParameters" unique="false"
+ upperBound="-1" eType="#//CGClass" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CGCollectionExp" eSuperTypes="#//CGValuedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="parts" upperBound="-1"
diff --git a/examples/org.eclipse.ocl.examples.pivot/emf-gen/org/eclipse/ocl/examples/pivot/lookup/AutoPivotLookupVisitor.java b/examples/org.eclipse.ocl.examples.pivot/emf-gen/org/eclipse/ocl/examples/pivot/lookup/AutoPivotLookupVisitor.java
index b85dd62584..609f833761 100644
--- a/examples/org.eclipse.ocl.examples.pivot/emf-gen/org/eclipse/ocl/examples/pivot/lookup/AutoPivotLookupVisitor.java
+++ b/examples/org.eclipse.ocl.examples.pivot/emf-gen/org/eclipse/ocl/examples/pivot/lookup/AutoPivotLookupVisitor.java
@@ -61,7 +61,7 @@ import org.eclipse.ocl.examples.pivot.util.AbstractExtendingVisitor;
import org.eclipse.ocl.examples.pivot.util.Visitable;
public class AutoPivotLookupVisitor
- extends AbstractExtendingVisitor<Object, Environment>
+ extends AbstractExtendingVisitor<Environment, Environment>
{
public static final @NonNull /*@NonInvalid*/ RootPackageId PACKid_$metamodel$ = IdManager.getRootPackageId("$metamodel$");
public static final @NonNull /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_example_org_s_examples_s_env_ecore = IdManager.getNsURIPackageId("http://www.example.org/examples/env.ecore", null, null);
@@ -121,7 +121,7 @@ public class AutoPivotLookupVisitor
*/
public @Nullable Environment envForChild(@NonNull Element element, @Nullable Element child) {
this.child = element;
- return (Environment)element.accept(this);
+ return element.accept(this);
}
/**
@@ -131,14 +131,14 @@ public class AutoPivotLookupVisitor
EObject parent = element.eContainer();
if (parent instanceof Visitable) {
this.child = element;
- return (Environment)((Visitable)parent).accept(this);
+ return ((Visitable)parent).accept(this);
}
else {
return null;
}
}
- public @Nullable Object visiting(@NonNull Visitable visitable) {
+ public @Nullable Environment visiting(@NonNull Visitable visitable) {
throw new UnsupportedOperationException("AutoPivotLookupVisitor is not supported by \"" + getClass().getName() + "\"");
}
@@ -688,12 +688,12 @@ public class AutoPivotLookupVisitor
}
/**
- * visitMetaclass(element : Metaclass) : OclVoid[?]
+ * visitMetaclass(element : Metaclass) : env::Environment[?]
*
* null
*/
@Override
- public @Nullable /*@NonInvalid*/ Object visitMetaclass(final @NonNull /*@NonInvalid*/ Metaclass<?> element_8) {
+ public @Nullable /*@NonInvalid*/ Environment visitMetaclass(final @NonNull /*@NonInvalid*/ Metaclass<?> element_8) {
return null;
}

Back to the top