Fixed service resolution for EOperation with EObject parameter.
Change-Id: I00a6d5647a0aceae5c8f75cd23bc5f9b3a93328f
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/ServiceUtils.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/ServiceUtils.java
index 606d0f0..3f6c9ab 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/ServiceUtils.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/ServiceUtils.java
@@ -24,6 +24,7 @@
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
/**
* Utility for {@link IService}.
@@ -255,10 +256,26 @@
final Set<IService> result = new LinkedHashSet<IService>();
for (EOperation eOperation : eCls.getEAllOperations()) {
- result.add(new EOperationService(eOperation));
+ if (isServiceEOperation(eOperation)) {
+ result.add(new EOperationService(eOperation));
+ }
}
return result;
}
+ /**
+ * Tells if the given {@link EOperation} is considered as a {@link IService}.
+ * {@link org.eclipse.emf.ecore.EObject EObject} {@link EOperation} are not considered as {@link IService}
+ * .
+ *
+ * @param eOperation
+ * the {@link EOperation} to test
+ * @return <code>true</code> if the given {@link EOperation} is considered as a {@link IService},
+ * <code>false</code> otherwise
+ */
+ public static boolean isServiceEOperation(EOperation eOperation) {
+ return eOperation.getEContainingClass() != EcorePackage.eINSTANCE.getEObject();
+ }
+
}
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/validation/type/EClassifierType.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/validation/type/EClassifierType.java
index 317c14c..75a6a57 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/validation/type/EClassifierType.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/validation/type/EClassifierType.java
@@ -13,6 +13,7 @@
import org.eclipse.acceleo.query.runtime.IReadOnlyQueryEnvironment;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EcorePackage;
/**
* {@link EClassifier} validation type.
@@ -67,6 +68,7 @@
result = false;
} else if (getType() instanceof EClass && otherType.getType() instanceof EClass) {
result = getType() == otherType.getType()
+ || getType() == EcorePackage.eINSTANCE.getEObject()
|| queryEnvironment.getEPackageProvider().getAllSubTypes((EClass)getType()).contains(
otherType.getType());
} else {
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl.edit/src-gen/org/eclipse/acceleo/query/tests/anydsl/provider/EStringToRecipeMapItemProvider.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl.edit/src-gen/org/eclipse/acceleo/query/tests/anydsl/provider/EStringToRecipeMapItemProvider.java
index c5512f3..9b541f5 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl.edit/src-gen/org/eclipse/acceleo/query/tests/anydsl/provider/EStringToRecipeMapItemProvider.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl.edit/src-gen/org/eclipse/acceleo/query/tests/anydsl/provider/EStringToRecipeMapItemProvider.java
@@ -16,12 +16,9 @@
import java.util.Map;
import org.eclipse.acceleo.query.tests.anydsl.AnydslPackage;
-
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl.editor/src-gen/org/eclipse/acceleo/query/tests/anydsl/presentation/AnydslEditor.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl.editor/src-gen/org/eclipse/acceleo/query/tests/anydsl/presentation/AnydslEditor.java
index 6c19905..f44652d 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl.editor/src-gen/org/eclipse/acceleo/query/tests/anydsl/presentation/AnydslEditor.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl.editor/src-gen/org/eclipse/acceleo/query/tests/anydsl/presentation/AnydslEditor.java
@@ -1379,6 +1379,7 @@
final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED,
Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+ saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
// Do the work within an operation because this is a long running activity that modifies the
// workbench.
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/model/anydsl.ecore b/query/tests/org.eclipse.acceleo.query.tests.anydsl/model/anydsl.ecore
index 38a667c..3a8a549 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/model/anydsl.ecore
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/model/anydsl.ecore
@@ -79,6 +79,9 @@
<eOperations name="preferredLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
<eParameters name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eOperations>
+ <eOperations name="identity" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eParameters name="eObject" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ </eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="color" upperBound="-1"
eType="#//Color"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="caliber" eType="#//Caliber"/>
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/model/anydsl.genmodel b/query/tests/org.eclipse.acceleo.query.tests.anydsl/model/anydsl.genmodel
index 650107d..2083d96 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/model/anydsl.genmodel
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/model/anydsl.genmodel
@@ -134,6 +134,9 @@
<genOperations ecoreOperation="anydsl.ecore#//Food/preferredLabel">
<genParameters ecoreParameter="anydsl.ecore#//Food/preferredLabel/text"/>
</genOperations>
+ <genOperations ecoreOperation="anydsl.ecore#//Food/identity">
+ <genParameters ecoreParameter="anydsl.ecore#//Food/identity/eObject"/>
+ </genOperations>
</genClasses>
<genClasses image="false" ecoreClass="anydsl.ecore#//Source">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference anydsl.ecore#//Source/foods"/>
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/AnydslPackage.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/AnydslPackage.java
index 786f483..8ac3f3e 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/AnydslPackage.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/AnydslPackage.java
@@ -744,12 +744,20 @@
int FOOD___PREFERRED_LABEL__STRING = NAMED_ELEMENT_OPERATION_COUNT + 7;
/**
+ * The operation id for the '<em>Identity</em>' operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOOD___IDENTITY__EOBJECT = NAMED_ELEMENT_OPERATION_COUNT + 8;
+
+ /**
* The number of operations of the '<em>Food</em>' class. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
* @ordered
*/
- int FOOD_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 8;
+ int FOOD_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 9;
/**
* The meta object id for the '{@link org.eclipse.acceleo.query.tests.anydsl.Source <em>Source</em>}'
@@ -1562,6 +1570,17 @@
EOperation getFood__PreferredLabel__String();
/**
+ * Returns the meta object for the '
+ * {@link org.eclipse.acceleo.query.tests.anydsl.Food#identity(org.eclipse.emf.ecore.EObject)
+ * <em>Identity</em>}' operation. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the '<em>Identity</em>' operation.
+ * @see org.eclipse.acceleo.query.tests.anydsl.Food#identity(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ EOperation getFood__Identity__EObject();
+
+ /**
* Returns the meta object for class '{@link org.eclipse.acceleo.query.tests.anydsl.Source
* <em>Source</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
*
@@ -2161,6 +2180,14 @@
EOperation FOOD___PREFERRED_LABEL__STRING = eINSTANCE.getFood__PreferredLabel__String();
/**
+ * The meta object literal for the '<em><b>Identity</b></em>' operation. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ EOperation FOOD___IDENTITY__EOBJECT = eINSTANCE.getFood__Identity__EObject();
+
+ /**
* The meta object literal for the '{@link org.eclipse.acceleo.query.tests.anydsl.Source
* <em>Source</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
*
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/Food.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/Food.java
index 9dd6998..3469226 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/Food.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/Food.java
@@ -11,6 +11,7 @@
package org.eclipse.acceleo.query.tests.anydsl;
import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
/**
* <!-- begin-user-doc --> A representation of the model object '<em><b>Food</b></em>'. <!-- end-user-doc -->
@@ -265,4 +266,12 @@
*/
String preferredLabel(String text);
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @model
+ * @generated
+ */
+ EObject identity(EObject eObject);
+
} // Food
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/AnydslFactoryImpl.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/AnydslFactoryImpl.java
index 8f70677..f7562a2 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/AnydslFactoryImpl.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/AnydslFactoryImpl.java
@@ -11,6 +11,7 @@
package org.eclipse.acceleo.query.tests.anydsl.impl;
import java.util.Map;
+
import org.eclipse.acceleo.query.tests.anydsl.Adress;
import org.eclipse.acceleo.query.tests.anydsl.Animal;
import org.eclipse.acceleo.query.tests.anydsl.AnydslFactory;
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/AnydslPackageImpl.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/AnydslPackageImpl.java
index fa18602..c803291 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/AnydslPackageImpl.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/AnydslPackageImpl.java
@@ -11,6 +11,7 @@
package org.eclipse.acceleo.query.tests.anydsl.impl;
import java.util.Map;
+
import org.eclipse.acceleo.query.tests.anydsl.Adress;
import org.eclipse.acceleo.query.tests.anydsl.Animal;
import org.eclipse.acceleo.query.tests.anydsl.AnydslFactory;
@@ -682,6 +683,15 @@
*
* @generated
*/
+ public EOperation getFood__Identity__EObject() {
+ return foodEClass.getEOperations().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
public EClass getSource() {
return sourceEClass;
}
@@ -922,6 +932,7 @@
createEOperation(foodEClass, FOOD___ACCEPTED_CALIBER__CALIBER);
createEOperation(foodEClass, FOOD___LABEL__STRING);
createEOperation(foodEClass, FOOD___PREFERRED_LABEL__STRING);
+ createEOperation(foodEClass, FOOD___IDENTITY__EOBJECT);
sourceEClass = createEClass(SOURCE);
createEReference(sourceEClass, SOURCE__FOODS);
@@ -1126,6 +1137,10 @@
0, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, ecorePackage.getEString(), "text", 0, 1, IS_UNIQUE, IS_ORDERED);
+ op = initEOperation(getFood__Identity__EObject(), ecorePackage.getEObject(), "identity", 0, 1,
+ IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEObject(), "eObject", 0, 1, IS_UNIQUE, IS_ORDERED);
+
initEClass(sourceEClass, Source.class, "Source", IS_ABSTRACT, IS_INTERFACE,
IS_GENERATED_INSTANCE_CLASS);
initEReference(getSource_Foods(), this.getFood(), this.getFood_Source(), "foods", null, 0, -1,
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/EStringToRecipeMapImpl.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/EStringToRecipeMapImpl.java
index 7391a4d..df0b48f 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/EStringToRecipeMapImpl.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/EStringToRecipeMapImpl.java
@@ -13,16 +13,12 @@
import org.eclipse.acceleo.query.tests.anydsl.AnydslPackage;
import org.eclipse.acceleo.query.tests.anydsl.Recipe;
-
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.BasicEMap;
import org.eclipse.emf.common.util.EMap;
-
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.InternalEObject;
-
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/FoodImpl.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/FoodImpl.java
index b51efc8..850f929 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/FoodImpl.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/FoodImpl.java
@@ -24,6 +24,7 @@
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
@@ -470,6 +471,15 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
+ * @generated NOT
+ */
+ public EObject identity(EObject eObject) {
+ return eObject;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@SuppressWarnings("unchecked")
@@ -666,6 +676,8 @@
return null;
case AnydslPackage.FOOD___PREFERRED_LABEL__STRING:
return preferredLabel((String)arguments.get(0));
+ case AnydslPackage.FOOD___IDENTITY__EOBJECT:
+ return identity((EObject)arguments.get(0));
}
return super.eInvoke(operationID, arguments);
}
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/RestaurantImpl.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/RestaurantImpl.java
index 7c81059..aaaa125 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/RestaurantImpl.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/impl/RestaurantImpl.java
@@ -11,6 +11,7 @@
package org.eclipse.acceleo.query.tests.anydsl.impl;
import java.util.Collection;
+
import org.eclipse.acceleo.query.tests.anydsl.Adress;
import org.eclipse.acceleo.query.tests.anydsl.AnydslPackage;
import org.eclipse.acceleo.query.tests.anydsl.Chef;
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/util/AnydslAdapterFactory.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/util/AnydslAdapterFactory.java
index 30bf50c..dce1938 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/util/AnydslAdapterFactory.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/util/AnydslAdapterFactory.java
@@ -11,6 +11,7 @@
package org.eclipse.acceleo.query.tests.anydsl.util;
import java.util.Map;
+
import org.eclipse.acceleo.query.tests.anydsl.Adress;
import org.eclipse.acceleo.query.tests.anydsl.Animal;
import org.eclipse.acceleo.query.tests.anydsl.AnydslPackage;
diff --git a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/util/AnydslSwitch.java b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/util/AnydslSwitch.java
index 8bcaa6c..6a9efaf 100644
--- a/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/util/AnydslSwitch.java
+++ b/query/tests/org.eclipse.acceleo.query.tests.anydsl/src-gen/org/eclipse/acceleo/query/tests/anydsl/util/AnydslSwitch.java
@@ -11,6 +11,7 @@
package org.eclipse.acceleo.query.tests.anydsl.util;
import java.util.Map;
+
import org.eclipse.acceleo.query.tests.anydsl.Adress;
import org.eclipse.acceleo.query.tests.anydsl.Animal;
import org.eclipse.acceleo.query.tests.anydsl.AnydslPackage;
diff --git a/query/tests/org.eclipse.acceleo.query.tests/model/nooperationreflection.ecore b/query/tests/org.eclipse.acceleo.query.tests/model/nooperationreflection.ecore
index 9dcc9df..82bf5d9 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/model/nooperationreflection.ecore
+++ b/query/tests/org.eclipse.acceleo.query.tests/model/nooperationreflection.ecore
@@ -12,5 +12,8 @@
<eOperations name="eOperationNoReflectionListParameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
<eParameters name="classifiers" lowerBound="1" upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClassifier"/>
</eOperations>
+ <eOperations name="identity" lowerBound="1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+ <eParameters name="eObject" lowerBound="1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ </eOperations>
</eClassifiers>
</ecore:EPackage>
diff --git a/query/tests/org.eclipse.acceleo.query.tests/model/nooperationreflection.genmodel b/query/tests/org.eclipse.acceleo.query.tests/model/nooperationreflection.genmodel
index 7a8ce55..057a166 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/model/nooperationreflection.genmodel
+++ b/query/tests/org.eclipse.acceleo.query.tests/model/nooperationreflection.genmodel
@@ -16,6 +16,9 @@
<genOperations ecoreOperation="nooperationreflection.ecore#//NoOperationReflection/eOperationNoReflectionListParameter">
<genParameters ecoreParameter="nooperationreflection.ecore#//NoOperationReflection/eOperationNoReflectionListParameter/classifiers"/>
</genOperations>
+ <genOperations ecoreOperation="nooperationreflection.ecore#//NoOperationReflection/identity">
+ <genParameters ecoreParameter="nooperationreflection.ecore#//NoOperationReflection/identity/eObject"/>
+ </genOperations>
</genClasses>
</genPackages>
</genmodel:GenModel>
diff --git a/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/NoOperationReflection.java b/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/NoOperationReflection.java
index 69ce6a4..841f73a 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/NoOperationReflection.java
+++ b/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/NoOperationReflection.java
@@ -41,4 +41,12 @@
*/
String eOperationNoReflectionListParameter(EList<EClassifier> classifiers);
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" eObjectRequired="true"
+ * @generated
+ */
+ EObject identity(EObject eObject);
+
} // NoOperationReflection
diff --git a/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/impl/NoOperationReflectionImpl.java b/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/impl/NoOperationReflectionImpl.java
index 19ea8f1..769de57 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/impl/NoOperationReflectionImpl.java
+++ b/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/impl/NoOperationReflectionImpl.java
@@ -5,6 +5,7 @@
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
import nooperationreflection.NoOperationReflection;
@@ -70,4 +71,13 @@
return result.toString();
}
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public EObject identity(EObject eObject) {
+ return eObject;
+ }
} // NoOperationReflectionImpl
diff --git a/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/impl/NooperationreflectionPackageImpl.java b/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/impl/NooperationreflectionPackageImpl.java
index 9fe8dcd..37f343a 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/impl/NooperationreflectionPackageImpl.java
+++ b/query/tests/org.eclipse.acceleo.query.tests/src-gen-nooperationreflection/nooperationreflection/impl/NooperationreflectionPackageImpl.java
@@ -168,6 +168,9 @@
op = addEOperation(noOperationReflectionEClass, ecorePackage.getEString(), "eOperationNoReflectionListParameter", 0, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, ecorePackage.getEClassifier(), "classifiers", 1, -1, IS_UNIQUE, IS_ORDERED);
+ op = addEOperation(noOperationReflectionEClass, ecorePackage.getEObject(), "identity", 1, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEObject(), "eObject", 1, 1, IS_UNIQUE, IS_ORDERED);
+
// Create resource
createResource(eNS_URI);
}
diff --git a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/parser/tests/EvaluationTest.java b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/parser/tests/EvaluationTest.java
index 4dbbc8c..aead393 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/parser/tests/EvaluationTest.java
+++ b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/parser/tests/EvaluationTest.java
@@ -313,6 +313,18 @@
}
@Test
+ public void eOperationEObjectParameterTest() {
+ Map<String, Object> variables = Maps.newHashMap();
+ final Food self = AnydslPackage.eINSTANCE.getAnydslFactory().createFood();
+ self.setName("self berry");
+ final Food other = AnydslPackage.eINSTANCE.getAnydslFactory().createFood();
+ other.setName("other berry");
+ variables.put("self", self);
+ variables.put("other", other);
+ assertOKResultEquals(true, engine.eval(builder.build("self.identity(other) == other"), variables));
+ }
+
+ @Test
public void eOperationNoReflectionTest() {
Map<String, Object> variables = Maps.newHashMap();
final NoOperationReflection self = NooperationreflectionPackage.eINSTANCE
@@ -346,6 +358,18 @@
}
@Test
+ public void eOperationNoReflectionEObjectParameterTest() {
+ Map<String, Object> variables = Maps.newHashMap();
+ final NoOperationReflection self = NooperationreflectionPackage.eINSTANCE
+ .getNooperationreflectionFactory().createNoOperationReflection();
+ final NoOperationReflection other = NooperationreflectionPackage.eINSTANCE
+ .getNooperationreflectionFactory().createNoOperationReflection();
+ variables.put("self", self);
+ variables.put("other", other);
+ assertOKResultEquals(true, engine.eval(builder.build("self.identity(other) == other"), variables));
+ }
+
+ @Test
public void serviceNullParameterTest() {
Map<String, Object> variables = Maps.newHashMap();
variables.put("self", EcorePackage.eINSTANCE.getEClass());