diff options
author | Adolfo SBH | 2015-03-03 12:40:42 +0000 |
---|---|---|
committer | Ed Willink | 2015-03-07 12:16:36 +0000 |
commit | e496d761d82c18672c1d372e39293262333dc29c (patch) | |
tree | a4947c491403eb9410d25aa35977a9adb61b51a7 | |
parent | d85108e20d9c942238a22c33a8dfbf50c6b4c2cb (diff) | |
download | org.eclipse.qvtd-e496d761d82c18672c1d372e39293262333dc29c.tar.gz org.eclipse.qvtd-e496d761d82c18672c1d372e39293262333dc29c.tar.xz org.eclipse.qvtd-e496d761d82c18672c1d372e39293262333dc29c.zip |
[ocl2qvti] - Introducing Visitble interface in the example2 classes
meta-model
10 files changed, 158 insertions, 37 deletions
diff --git a/tests/org.eclipse.qvtd.build.cs2as.tests/src/org/eclipse/qvtd/build/cs2as/tests/models/example2/Classes.ecore b/tests/org.eclipse.qvtd.build.cs2as.tests/src/org/eclipse/qvtd/build/cs2as/tests/models/example2/Classes.ecore index bb713b1b5..f31e41dc7 100644 --- a/tests/org.eclipse.qvtd.build.cs2as.tests/src/org/eclipse/qvtd/build/cs2as/tests/models/example2/Classes.ecore +++ b/tests/org.eclipse.qvtd.build.cs2as.tests/src/org/eclipse/qvtd/build/cs2as/tests/models/example2/Classes.ecore @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="classes" nsURI="http://cs2as/tests/example2/classes/1.0" nsPrefix="classes"> - <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true"/> + <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true" eSuperTypes="#//Visitable"/> <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//Element"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> </eClassifiers> @@ -19,4 +19,6 @@ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedPackages" upperBound="-1" eType="#//Package" containment="true"/> </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Visitable" instanceClassName="example2.classes.util.Visitable" + abstract="true" interface="true"/> </ecore:EPackage> diff --git a/tests/org.eclipse.qvtd.build.cs2as.tests/src/org/eclipse/qvtd/build/cs2as/tests/models/example2/ClassesContainmentTree.xmi b/tests/org.eclipse.qvtd.build.cs2as.tests/src/org/eclipse/qvtd/build/cs2as/tests/models/example2/ClassesContainmentTree.xmi index 64ffd8b1d..5a8caa386 100644 --- a/tests/org.eclipse.qvtd.build.cs2as.tests/src/org/eclipse/qvtd/build/cs2as/tests/models/example2/ClassesContainmentTree.xmi +++ b/tests/org.eclipse.qvtd.build.cs2as.tests/src/org/eclipse/qvtd/build/cs2as/tests/models/example2/ClassesContainmentTree.xmi @@ -1,22 +1,25 @@ <?xml version="1.0" encoding="UTF-8"?> <xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:eCoreContainemntTree="http://www.eclipse.org/qvt/examples/0.1/ECoreContainemntTree" xsi:schemaLocation="http://www.eclipse.org/qvt/examples/0.1/ECoreContainemntTree ../../../../../../../../../../org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore"> - <eCoreContainemntTree:Node name="Element" subTypes="/1 /2 /3 /5 /4"> + <eCoreContainemntTree:Node name="Element" subTypes="/1 /2 /3 /5 /4" superTypes="/6"> <element href="Classes.ecore#//Element"/> </eCoreContainemntTree:Node> - <eCoreContainemntTree:Node name="NamedElement" subTypes="/3 /4" superTypes="/0"> + <eCoreContainemntTree:Node name="NamedElement" subTypes="/3 /4" superTypes="/0 /6"> <element href="Classes.ecore#//NamedElement"/> </eCoreContainemntTree:Node> - <eCoreContainemntTree:Node name="Namespace" subTypes="/3" superTypes="/0"> + <eCoreContainemntTree:Node name="Namespace" subTypes="/3" superTypes="/0 /6"> <element href="Classes.ecore#//Namespace"/> </eCoreContainemntTree:Node> - <eCoreContainemntTree:Node name="Package" parent="/3 /5" children="/3 /4" superTypes="/1 /0 /2"> + <eCoreContainemntTree:Node name="Package" parent="/3 /5" children="/3 /4" superTypes="/1 /0 /6 /2"> <element href="Classes.ecore#//Package"/> </eCoreContainemntTree:Node> - <eCoreContainemntTree:Node name="Class" parent="/3" superTypes="/1 /0"> + <eCoreContainemntTree:Node name="Class" parent="/3" superTypes="/1 /0 /6"> <element href="Classes.ecore#//Class"/> </eCoreContainemntTree:Node> - <eCoreContainemntTree:Node name="Root" children="/3" superTypes="/0"> + <eCoreContainemntTree:Node name="Root" children="/3" superTypes="/0 /6"> <element href="Classes.ecore#//Root"/> </eCoreContainemntTree:Node> + <eCoreContainemntTree:Node name="Visitable" subTypes="/0 /1 /2 /3 /5 /4"> + <element href="Classes.ecore#//Visitable"/> + </eCoreContainemntTree:Node> </xmi:XMI> diff --git a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/cg/Source2Target_qvtp_qvtias.java b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/cg/Source2Target_qvtp_qvtias.java index 8394406f3..e92edba0a 100644 --- a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/cg/Source2Target_qvtp_qvtias.java +++ b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/cg/Source2Target_qvtp_qvtias.java @@ -9,9 +9,28 @@ package cg; +import example1.env.Environment; +import example1.env.EnvironmentPackage; +import example1.source.SRoot; +import example1.source.SourcePackage; +import example1.source.X; +import example1.source.Y; +import example1.source.Y1; +import example1.source.Y2; +import example1.source.Z; +import example1.target.A; +import example1.target.A1; +import example1.target.A2; +import example1.target.A3; +import example1.target.B; +import example1.target.C; +import example1.target.D; +import example1.target.NamedElement; +import example1.target.TRoot; +import example1.target.TargetFactory; +import example1.target.TargetPackage; import java.util.Iterator; import java.util.List; - import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.jdt.annotation.NonNull; @@ -47,27 +66,6 @@ import org.eclipse.ocl.pivot.values.SequenceValue; import org.eclipse.ocl.pivot.values.SetValue; import org.eclipse.qvtd.pivot.qvtbase.evaluation.AbstractTransformationExecutor; -import example1.env.Environment; -import example1.env.EnvironmentPackage; -import example1.source.SRoot; -import example1.source.SourcePackage; -import example1.source.X; -import example1.source.Y; -import example1.source.Y1; -import example1.source.Y2; -import example1.source.Z; -import example1.target.A; -import example1.target.A1; -import example1.target.A2; -import example1.target.A3; -import example1.target.B; -import example1.target.C; -import example1.target.D; -import example1.target.NamedElement; -import example1.target.TRoot; -import example1.target.TargetFactory; -import example1.target.TargetPackage; - /** * The Source2Target_qvtp_qvtias transformation: * <p> diff --git a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/ClassesPackage.java b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/ClassesPackage.java index fe392d71c..110102af0 100644 --- a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/ClassesPackage.java +++ b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/ClassesPackage.java @@ -57,6 +57,34 @@ public interface ClassesPackage extends EPackage { ClassesPackage eINSTANCE = example2.classes.impl.ClassesPackageImpl.init(); /** + * The meta object id for the '{@link example2.classes.util.Visitable <em>Visitable</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see example2.classes.util.Visitable + * @see example2.classes.impl.ClassesPackageImpl#getVisitable() + * @generated + */ + int VISITABLE = 6; + + /** + * The number of structural features of the '<em>Visitable</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int VISITABLE_FEATURE_COUNT = 0; + + /** + * The number of operations of the '<em>Visitable</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int VISITABLE_OPERATION_COUNT = 0; + + /** * The meta object id for the '{@link example2.classes.impl.ElementImpl <em>Element</em>}' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -73,7 +101,7 @@ public interface ClassesPackage extends EPackage { * @generated * @ordered */ - int ELEMENT_FEATURE_COUNT = 0; + int ELEMENT_FEATURE_COUNT = VISITABLE_FEATURE_COUNT + 0; /** * The number of operations of the '<em>Element</em>' class. @@ -82,7 +110,7 @@ public interface ClassesPackage extends EPackage { * @generated * @ordered */ - int ELEMENT_OPERATION_COUNT = 0; + int ELEMENT_OPERATION_COUNT = VISITABLE_OPERATION_COUNT + 0; /** * The meta object id for the '{@link example2.classes.impl.NamedElementImpl <em>Named Element</em>}' class. @@ -404,6 +432,17 @@ public interface ClassesPackage extends EPackage { EReference getRoot_OwnedPackages(); /** + * Returns the meta object for class '{@link example2.classes.util.Visitable <em>Visitable</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Visitable</em>'. + * @see example2.classes.util.Visitable + * @model instanceClass="example2.classes.util.Visitable" + * @generated + */ + EClass getVisitable(); + + /** * Returns the factory that creates the instances of the model. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -526,6 +565,16 @@ public interface ClassesPackage extends EPackage { */ EReference ROOT__OWNED_PACKAGES = eINSTANCE.getRoot_OwnedPackages(); + /** + * The meta object literal for the '{@link example2.classes.util.Visitable <em>Visitable</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see example2.classes.util.Visitable + * @see example2.classes.impl.ClassesPackageImpl#getVisitable() + * @generated + */ + EClass VISITABLE = eINSTANCE.getVisitable(); + } } //ClassesPackage diff --git a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/Element.java b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/Element.java index 990591a93..c1c0ba3f4 100644 --- a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/Element.java +++ b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/Element.java @@ -4,6 +4,7 @@ package example2.classes; import org.eclipse.emf.ecore.EObject; +import example2.classes.util.Visitable; import example2.classes.util.Visitor; /** @@ -13,10 +14,10 @@ import example2.classes.util.Visitor; * * * @see example2.classes.ClassesPackage#getElement() - * @model abstract="true" + * @model abstract="true" superTypes="example2.classes.Visitable" * @generated */ -public interface Element extends EObject { +public interface Element extends EObject, Visitable { /** * Accept a visit from a visitor and return the result of a call to the derived type-specific visitXXX in the visitor. diff --git a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/impl/ClassesPackageImpl.java b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/impl/ClassesPackageImpl.java index fa81d7a19..62b7993b2 100644 --- a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/impl/ClassesPackageImpl.java +++ b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/impl/ClassesPackageImpl.java @@ -2,6 +2,8 @@ */ package example2.classes.impl; +import static example2.classes.ClassesPackage.CLASS; + import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EPackage; @@ -65,6 +67,13 @@ public class ClassesPackageImpl extends EPackageImpl implements ClassesPackage { private EClass rootEClass = null; /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass visitableEClass = null; + + /** * Creates an instance of the model <b>Package</b>, registered with * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package * package URI value. @@ -229,6 +238,15 @@ public class ClassesPackageImpl extends EPackageImpl implements ClassesPackage { * <!-- end-user-doc --> * @generated */ + public EClass getVisitable() { + return visitableEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ public ClassesFactory getClassesFactory() { return (ClassesFactory)getEFactoryInstance(); } @@ -268,6 +286,8 @@ public class ClassesPackageImpl extends EPackageImpl implements ClassesPackage { rootEClass = createEClass(ROOT); createEReference(rootEClass, ROOT__OWNED_PACKAGES); + + visitableEClass = createEClass(VISITABLE); } /** @@ -298,6 +318,7 @@ public class ClassesPackageImpl extends EPackageImpl implements ClassesPackage { // Set bounds for type parameters // Add supertypes to classes + elementEClass.getESuperTypes().add(this.getVisitable()); namedElementEClass.getESuperTypes().add(this.getElement()); namespaceEClass.getESuperTypes().add(this.getElement()); packageEClass.getESuperTypes().add(this.getNamedElement()); @@ -323,6 +344,8 @@ public class ClassesPackageImpl extends EPackageImpl implements ClassesPackage { initEClass(rootEClass, Root.class, "Root", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getRoot_OwnedPackages(), this.getPackage(), null, "ownedPackages", null, 0, -1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEClass(visitableEClass, example2.classes.util.Visitable.class, "Visitable", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS); + // Create resource createResource(eNS_URI); } diff --git a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/AbstractExtendingVisitor.java b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/AbstractExtendingVisitor.java index 49c80eeff..470dd7b8b 100644 --- a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/AbstractExtendingVisitor.java +++ b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/AbstractExtendingVisitor.java @@ -40,7 +40,7 @@ public abstract class AbstractExtendingVisitor<R, C> @Override public @Nullable R visitElement(@NonNull example2.classes.Element object) { - return null; + return visiting(object); } @Override diff --git a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/AbstractWrappingVisitor.java b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/AbstractWrappingVisitor.java index 53617f66d..54cc1ad5b 100644 --- a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/AbstractWrappingVisitor.java +++ b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/AbstractWrappingVisitor.java @@ -34,7 +34,7 @@ public abstract class AbstractWrappingVisitor<R, C, D extends Visitor<R>, P> * * @return a rethrown RuntimeException or a RuntimeException-wrapped non-RuntimeException. */ - protected @Nullable R badVisit(@NonNull example2.classes.Element visitable, @Nullable P prologue, @NonNull Throwable e) throws RuntimeException { + protected @Nullable R badVisit(@NonNull example2.classes.util.Visitable visitable, @Nullable P prologue, @NonNull Throwable e) throws RuntimeException { if (e instanceof Exception) { throw (RuntimeException)e; } @@ -59,7 +59,7 @@ public abstract class AbstractWrappingVisitor<R, C, D extends Visitor<R>, P> * * @return the epilogue result, which defaults to the delegated result. */ - protected @Nullable R postVisit(@NonNull example2.classes.Element visitable, @Nullable P prologue, @Nullable R result) { + protected @Nullable R postVisit(@NonNull example2.classes.util.Visitable visitable, @Nullable P prologue, @Nullable R result) { return result; } @@ -68,7 +68,7 @@ public abstract class AbstractWrappingVisitor<R, C, D extends Visitor<R>, P> * * @return the prologue result, which defauilts to null. */ - protected @Nullable P preVisit(@NonNull example2.classes.Element visitable) { + protected @Nullable P preVisit(@NonNull example2.classes.util.Visitable visitable) { return null; } diff --git a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/ClassesAdapterFactory.java b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/ClassesAdapterFactory.java index 75aaf3fc6..f9d390ce2 100644 --- a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/ClassesAdapterFactory.java +++ b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/ClassesAdapterFactory.java @@ -94,6 +94,10 @@ public class ClassesAdapterFactory extends AdapterFactoryImpl { return createRootAdapter(); } @Override + public Adapter caseVisitable(example2.classes.util.Visitable object) { + return createVisitableAdapter(); + } + @Override public Adapter defaultCase(EObject object) { return createEObjectAdapter(); } @@ -198,6 +202,20 @@ public class ClassesAdapterFactory extends AdapterFactoryImpl { } /** + * Creates a new adapter for an object of class '{@link example2.classes.util.Visitable <em>Visitable</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see example2.classes.util.Visitable + * @generated + */ + public Adapter createVisitableAdapter() { + return null; + } + + /** * Creates a new adapter for the default case. * <!-- begin-user-doc --> * This default implementation returns null. diff --git a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/ClassesSwitch.java b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/ClassesSwitch.java index fb17da25e..2407ec821 100644 --- a/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/ClassesSwitch.java +++ b/tests/org.eclipse.qvtd.build.cs2as.tests/tests-gen/example2/classes/util/ClassesSwitch.java @@ -72,6 +72,7 @@ public class ClassesSwitch<T> extends Switch<T> { case ClassesPackage.ELEMENT: { Element element = (Element)theEObject; T result = caseElement(element); + if (result == null) result = caseVisitable(element); if (result == null) result = defaultCase(theEObject); return result; } @@ -79,6 +80,7 @@ public class ClassesSwitch<T> extends Switch<T> { NamedElement namedElement = (NamedElement)theEObject; T result = caseNamedElement(namedElement); if (result == null) result = caseElement(namedElement); + if (result == null) result = caseVisitable(namedElement); if (result == null) result = defaultCase(theEObject); return result; } @@ -86,6 +88,7 @@ public class ClassesSwitch<T> extends Switch<T> { Namespace namespace = (Namespace)theEObject; T result = caseNamespace(namespace); if (result == null) result = caseElement(namespace); + if (result == null) result = caseVisitable(namespace); if (result == null) result = defaultCase(theEObject); return result; } @@ -95,6 +98,7 @@ public class ClassesSwitch<T> extends Switch<T> { if (result == null) result = caseNamedElement(package_); if (result == null) result = caseNamespace(package_); if (result == null) result = caseElement(package_); + if (result == null) result = caseVisitable(package_); if (result == null) result = defaultCase(theEObject); return result; } @@ -103,6 +107,7 @@ public class ClassesSwitch<T> extends Switch<T> { T result = caseClass(class_); if (result == null) result = caseNamedElement(class_); if (result == null) result = caseElement(class_); + if (result == null) result = caseVisitable(class_); if (result == null) result = defaultCase(theEObject); return result; } @@ -110,6 +115,13 @@ public class ClassesSwitch<T> extends Switch<T> { Root root = (Root)theEObject; T result = caseRoot(root); if (result == null) result = caseElement(root); + if (result == null) result = caseVisitable(root); + if (result == null) result = defaultCase(theEObject); + return result; + } + case ClassesPackage.VISITABLE: { + example2.classes.util.Visitable visitable = (example2.classes.util.Visitable)theEObject; + T result = caseVisitable(visitable); if (result == null) result = defaultCase(theEObject); return result; } @@ -208,6 +220,21 @@ public class ClassesSwitch<T> extends Switch<T> { } /** + * Returns the result of interpreting the object as an instance of '<em>Visitable</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Visitable</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVisitable(example2.classes.util.Visitable object) { + return null; + } + + /** * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. * <!-- begin-user-doc --> * This implementation returns null; |