From ed5dd54ac9d062b078b3040a5ebae3cf36c36185 Mon Sep 17 00:00:00 2001 From: Lorenzo Bettini Date: Tue, 5 May 2020 15:41:43 +0200 Subject: [PATCH 1/5] 148: Remove AbstractEdelta.createEAttribute Task-Url: http://github.com/LorenzoBettini/edelta/issues/148 --- .../src/edelta/lib/tests/EdeltaTest.java | 30 ----------------- .../src/edelta/lib/AbstractEdelta.java | 8 ----- .../edelta/tests/EdeltaInterpreterTest.xtend | 20 ------------ .../tests/additional/MyCustomEdelta.java | 3 +- .../additional/MyCustomStatefulEdelta.java | 5 ++- .../edelta/tests/EdeltaInterpreterTest.java | 32 ------------------- 6 files changed, 3 insertions(+), 95 deletions(-) diff --git a/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java b/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java index 2aaf6f127..25a757147 100644 --- a/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java +++ b/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java @@ -374,36 +374,6 @@ public void testChangeEClassLaterInitialization() { assertSame(newClass3, cl1.getESuperTypes().get(1)); } - @Test - public void testCreateEAttribute() { - loadTestEcore(MY_ECORE); - EPackage ePackage = edelta.getEPackage(MYPACKAGE); - EClass eClass = (EClass) ePackage.getEClassifier(MY_CLASS); - assertNull(eClass.getEStructuralFeature("newAttribute")); - EAttribute createEAttribute = edelta.createEAttribute(eClass, "newAttribute", null); - assertSame(createEAttribute, eClass.getEStructuralFeature("newAttribute")); - } - - @Test - public void testCreateEAttributeLaterInitialization() { - loadTestEcore(MY_ECORE); - EPackage ePackage = edelta.getEPackage(MYPACKAGE); - EClass eClass = (EClass) ePackage.getEClassifier(MY_CLASS); - EAttribute createEAttribute1 = edelta.createEAttribute(eClass, "newAttribute", - edelta.createList( - a -> a.setName("newAttribute1"), - a -> edelta.getEAttribute(MYPACKAGE, MY_CLASS, "newAttribute2").setName("changed") - ) - ); - EAttribute createEAttribute2 = edelta.createEAttribute(eClass, "newAttribute2", null); - edelta.runInitializers(); - // make sure the initializers have been called - // the second attribute must have a different name, changed - assertSame(createEAttribute2, edelta.getEAttribute(MYPACKAGE, MY_CLASS, "changed")); - // the same for the first attribute - assertSame(createEAttribute1, edelta.getEAttribute(MYPACKAGE, MY_CLASS, "newAttribute1")); - } - @Test public void testRemoveEClassifier() { loadTestEcore(MY_ECORE); diff --git a/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java b/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java index d34a4493a..74f14bad9 100644 --- a/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java +++ b/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java @@ -317,14 +317,6 @@ private void safeAddInitializer(List list, final T element, final ); } - public EAttribute createEAttribute(EClass eClass, String attributeName, final List> initializers) { - EAttribute newAttribute = lib.newEAttribute(attributeName); - eClass.getEStructuralFeatures().add(newAttribute); - if (initializers != null) - initializers.forEach(i -> safeAddInitializer(eStructuralFeaturesInitializers, newAttribute, i)); - return newAttribute; - } - public void removeEClassifier(String packageName, String name) { EdeltaEcoreUtil.removeEClassifier(getEClassifier(packageName, name)); } diff --git a/edelta.parent/edelta.tests/src/edelta/tests/EdeltaInterpreterTest.xtend b/edelta.parent/edelta.tests/src/edelta/tests/EdeltaInterpreterTest.xtend index 0b5bdd318..22fdd398e 100644 --- a/edelta.parent/edelta.tests/src/edelta/tests/EdeltaInterpreterTest.xtend +++ b/edelta.parent/edelta.tests/src/edelta/tests/EdeltaInterpreterTest.xtend @@ -67,26 +67,6 @@ class EdeltaInterpreterTest extends EdeltaAbstractTest { ] } - @Test - def void testCreateEClassAndCallJvmOperationFromSuperclass() { - ''' - metamodel "foo" - - modifyEcore aTest epackage foo { - addNewEClass("NewClass") [ - // call method from superclass AbstractEdelta - EStructuralFeatures += ^createEAttribute(it, "aNewAttr", null) - ] - } - '''.assertAfterInterpretationOfEdeltaModifyEcoreOperation[ePackage | - val derivedEClass = ePackage.lastEClass - assertEquals("NewClass", derivedEClass.name) - assertEquals(1, derivedEClass.EStructuralFeatures.size) - val attr = derivedEClass.EStructuralFeatures.head - assertEquals("aNewAttr", attr.name) - ] - } - @Test def void testCreateEClassAndCallOperationThatThrows() { assertThatThrownBy[''' diff --git a/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomEdelta.java b/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomEdelta.java index 8d67106ed..edec43a18 100644 --- a/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomEdelta.java +++ b/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomEdelta.java @@ -32,8 +32,7 @@ public EClass createANewEClass() { } public void createANewEAttribute(EClass c) { - EAttribute a = createEAttribute(c, "aNewAttr", null); - a.setEType(EcorePackage.eINSTANCE.getEString()); + lib.addNewEAttribute(c, "aNewAttr", EcorePackage.eINSTANCE.getEString()); } public void setAttributeBounds(EAttribute a, int low, int upper) { diff --git a/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomStatefulEdelta.java b/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomStatefulEdelta.java index ac92dceeb..264acbf6c 100644 --- a/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomStatefulEdelta.java +++ b/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomStatefulEdelta.java @@ -1,6 +1,5 @@ package edelta.tests.additional; -import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EcorePackage; @@ -30,8 +29,8 @@ public EClass createANewEClass() { } public void createANewEAttribute(EClass c) { - EAttribute a = createEAttribute(c, "aNewAttr" + (++counter), null); - a.setEType(EcorePackage.eINSTANCE.getEString()); + lib.addNewEAttribute(c, "aNewAttr" + (++counter), + EcorePackage.eINSTANCE.getEString()); } } diff --git a/edelta.parent/edelta.tests/xtend-gen/edelta/tests/EdeltaInterpreterTest.java b/edelta.parent/edelta.tests/xtend-gen/edelta/tests/EdeltaInterpreterTest.java index 22806846e..0380bcaa7 100644 --- a/edelta.parent/edelta.tests/xtend-gen/edelta/tests/EdeltaInterpreterTest.java +++ b/edelta.parent/edelta.tests/xtend-gen/edelta/tests/EdeltaInterpreterTest.java @@ -89,38 +89,6 @@ public void testCreateEClassAndCallLibMethod() { this.assertAfterInterpretationOfEdeltaModifyEcoreOperation(_builder, _function); } - @Test - public void testCreateEClassAndCallJvmOperationFromSuperclass() { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("metamodel \"foo\""); - _builder.newLine(); - _builder.newLine(); - _builder.append("modifyEcore aTest epackage foo {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("addNewEClass(\"NewClass\") ["); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("// call method from superclass AbstractEdelta"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("EStructuralFeatures += ^createEAttribute(it, \"aNewAttr\", null)"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("]"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - final Procedure1 _function = (EPackage ePackage) -> { - final EClass derivedEClass = this.getLastEClass(ePackage); - Assert.assertEquals("NewClass", derivedEClass.getName()); - Assert.assertEquals(1, derivedEClass.getEStructuralFeatures().size()); - final EStructuralFeature attr = IterableExtensions.head(derivedEClass.getEStructuralFeatures()); - Assert.assertEquals("aNewAttr", attr.getName()); - }; - this.assertAfterInterpretationOfEdeltaModifyEcoreOperation(_builder, _function); - } - @Test public void testCreateEClassAndCallOperationThatThrows() { final ThrowableAssert.ThrowingCallable _function = () -> { From eac137d5e9df63dcfb1acd893586abb98969863a Mon Sep 17 00:00:00 2001 From: Lorenzo Bettini Date: Tue, 5 May 2020 15:51:08 +0200 Subject: [PATCH 2/5] 148: Remove changeEClass Task-Url: http://github.com/LorenzoBettini/edelta/issues/148 --- .../src/edelta/lib/tests/EdeltaTest.java | 27 ------------------- .../src/edelta/lib/AbstractEdelta.java | 7 ----- 2 files changed, 34 deletions(-) diff --git a/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java b/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java index 25a757147..5107d4c86 100644 --- a/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java +++ b/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java @@ -347,33 +347,6 @@ public void testCreateEClassLaterInitialization() { assertSame(newClass3, newClass1.getESuperTypes().get(1)); } - @Test - public void testChangeEClass() { - loadTestEcore(MY_ECORE); - EPackage ePackage = edelta.getEPackage(MYPACKAGE); - assertNotNull(ePackage.getEClassifier(MY_CLASS)); - EClass cl = edelta.changeEClass(MYPACKAGE, MY_CLASS, null); - assertSame(cl, ePackage.getEClassifier(MY_CLASS)); - } - - @Test - public void testChangeEClassLaterInitialization() { - loadTestEcore(MY_ECORE); - // refers to an EClass that is created later - EClass cl1 = edelta.changeEClass(MYPACKAGE, MY_CLASS, - edelta.createList( - c -> c.getESuperTypes().add(edelta.getEClass(MYPACKAGE, "NewClass2")), - c -> c.getESuperTypes().add(edelta.getEClass(MYPACKAGE, "NewClass3")) - ) - ); - EClass newClass2 = edelta.createEClass(MYPACKAGE, "NewClass2", - edelta.createList(edelta::fooConsumer)); - EClass newClass3 = edelta.createEClass(MYPACKAGE, "NewClass3", null); - edelta.runInitializers(); - assertSame(newClass2, cl1.getESuperTypes().get(0)); - assertSame(newClass3, cl1.getESuperTypes().get(1)); - } - @Test public void testRemoveEClassifier() { loadTestEcore(MY_ECORE); diff --git a/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java b/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java index 74f14bad9..e857727dc 100644 --- a/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java +++ b/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java @@ -296,13 +296,6 @@ public EClass createEClass(String packageName, String name, final List> initializers) { - final EClass changedEClass = getEClass(packageName, name); - if (initializers != null) - initializers.forEach(i -> safeAddInitializer(eClassifierInitializers, changedEClass, i)); - return changedEClass; - } - protected List createList(E e) { return ImmutableList.of(e); } From 0d7526d4d3976a24a63aa3ec35a0cc05fc1cf464 Mon Sep 17 00:00:00 2001 From: Lorenzo Bettini Date: Tue, 5 May 2020 16:35:17 +0200 Subject: [PATCH 3/5] 148: Remove createEClass Task-Url: http://github.com/LorenzoBettini/edelta/issues/148 --- .../src/edelta/lib/tests/EdeltaTest.java | 27 ------------------- .../src/edelta/lib/AbstractEdelta.java | 15 ----------- .../tests/additional/MyCustomEdelta.java | 2 +- .../additional/MyCustomStatefulEdelta.java | 2 +- 4 files changed, 2 insertions(+), 44 deletions(-) diff --git a/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java b/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java index 5107d4c86..240357f2f 100644 --- a/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java +++ b/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java @@ -320,33 +320,6 @@ public void testSaveModifiedEcoresAfterRemovingBaseClass2() throws IOException { MODIFIED+"/"+MY_ECORE); } - @Test - public void testCreateEClass() { - loadTestEcore(MY_ECORE); - EPackage ePackage = edelta.getEPackage(MYPACKAGE); - assertNull(ePackage.getEClassifier("NewClass")); - EClass createEClass = edelta.createEClass(MYPACKAGE, "NewClass", null); - assertSame(createEClass, ePackage.getEClassifier("NewClass")); - } - - @Test - public void testCreateEClassLaterInitialization() { - loadTestEcore(MY_ECORE); - // refers to an EClass that is created later - EClass newClass1 = edelta.createEClass(MYPACKAGE, "NewClass1", - edelta.createList( - c -> c.getESuperTypes().add(edelta.getEClass(MYPACKAGE, "NewClass2")), - c -> c.getESuperTypes().add(edelta.getEClass(MYPACKAGE, "NewClass3")) - ) - ); - EClass newClass2 = edelta.createEClass(MYPACKAGE, "NewClass2", - edelta.createList(edelta::fooConsumer)); - EClass newClass3 = edelta.createEClass(MYPACKAGE, "NewClass3", null); - edelta.runInitializers(); - assertSame(newClass2, newClass1.getESuperTypes().get(0)); - assertSame(newClass3, newClass1.getESuperTypes().get(1)); - } - @Test public void testRemoveEClassifier() { loadTestEcore(MY_ECORE); diff --git a/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java b/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java index e857727dc..9608066ca 100644 --- a/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java +++ b/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java @@ -11,7 +11,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map.Entry; -import java.util.function.Consumer; import java.util.function.Supplier; import org.apache.log4j.Level; @@ -288,14 +287,6 @@ public EEnumLiteral getEEnumLiteral(String packageName, String enumName, String return eenum.getEEnumLiteral(enumLiteralName); } - public EClass createEClass(String packageName, String name, final List> initializers) { - final EClass newEClass = lib.newEClass(name); - getEPackage(packageName).getEClassifiers().add(newEClass); - if (initializers != null) - initializers.forEach(i -> safeAddInitializer(eClassifierInitializers, newEClass, i)); - return newEClass; - } - protected List createList(E e) { return ImmutableList.of(e); } @@ -304,12 +295,6 @@ protected List createList(E e1, E e2) { return ImmutableList.of(e1, e2); } - private void safeAddInitializer(List list, final T element, final Consumer initializer) { - list.add( - () -> initializer.accept(element) - ); - } - public void removeEClassifier(String packageName, String name) { EdeltaEcoreUtil.removeEClassifier(getEClassifier(packageName, name)); } diff --git a/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomEdelta.java b/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomEdelta.java index edec43a18..bef1fbf83 100644 --- a/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomEdelta.java +++ b/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomEdelta.java @@ -28,7 +28,7 @@ public EStructuralFeature myMethod() { } public EClass createANewEClass() { - return createEClass("foo", "ANewClass", null); + return lib.addNewEClass(getEPackage("foo"), "ANewClass"); } public void createANewEAttribute(EClass c) { diff --git a/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomStatefulEdelta.java b/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomStatefulEdelta.java index 264acbf6c..fa80e0ab4 100644 --- a/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomStatefulEdelta.java +++ b/edelta.parent/edelta.tests/src/edelta/tests/additional/MyCustomStatefulEdelta.java @@ -25,7 +25,7 @@ public MyCustomStatefulEdelta(AbstractEdelta other) { } public EClass createANewEClass() { - return createEClass("foo", "ANewClass" + (++counter), null); + return lib.addNewEClass(getEPackage("foo"), "ANewClass" + (++counter)); } public void createANewEAttribute(EClass c) { From c2ac3ba08150c13d901a666d86fb1eb5be995866 Mon Sep 17 00:00:00 2001 From: Lorenzo Bettini Date: Tue, 5 May 2020 16:37:07 +0200 Subject: [PATCH 4/5] 148: Remove createList Task-Url: http://github.com/LorenzoBettini/edelta/issues/148 --- .../src/edelta/lib/tests/EdeltaTest.java | 10 ---------- .../edelta.lib/src/edelta/lib/AbstractEdelta.java | 13 ------------- 2 files changed, 23 deletions(-) diff --git a/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java b/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java index 240357f2f..525dd8366 100644 --- a/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java +++ b/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java @@ -82,16 +82,6 @@ public void runInitializers() { super.runInitializers(); } - @Override - public List createList(E e) { - return super.createList(e); - } - - @Override - public List createList(E e1, E e2) { - return super.createList(e1, e2); - } - public void fooConsumer(EClass e) { } diff --git a/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java b/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java index 9608066ca..6f553b9d5 100644 --- a/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java +++ b/edelta.parent/edelta.lib/src/edelta/lib/AbstractEdelta.java @@ -1,6 +1,3 @@ -/** - * - */ package edelta.lib; import java.io.File; @@ -27,8 +24,6 @@ import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.xtext.xbase.lib.Extension; -import com.google.common.collect.ImmutableList; - import edelta.lib.exception.EdeltaPackageNotLoadedException; /** @@ -287,14 +282,6 @@ public EEnumLiteral getEEnumLiteral(String packageName, String enumName, String return eenum.getEEnumLiteral(enumLiteralName); } - protected List createList(E e) { - return ImmutableList.of(e); - } - - protected List createList(E e1, E e2) { - return ImmutableList.of(e1, e2); - } - public void removeEClassifier(String packageName, String name) { EdeltaEcoreUtil.removeEClassifier(getEClassifier(packageName, name)); } From c4a7719d3d6e0be1339c07eb9ed203796aa1b2a1 Mon Sep 17 00:00:00 2001 From: Lorenzo Bettini Date: Tue, 5 May 2020 16:40:00 +0200 Subject: [PATCH 5/5] 148: Remove useless method in tests Task-Url: http://github.com/LorenzoBettini/edelta/issues/148 --- .../edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java b/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java index 525dd8366..e4d56d242 100644 --- a/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java +++ b/edelta.parent/edelta.lib.tests/src/edelta/lib/tests/EdeltaTest.java @@ -82,9 +82,6 @@ public void runInitializers() { super.runInitializers(); } - public void fooConsumer(EClass e) { - - } } protected TestableEdelta edelta;