diff --git a/BenchmarkMetamodelsGenerator/tmp/lapin.ecore b/BenchmarkMetamodelsGenerator/tmp/lapin.ecore new file mode 100644 index 0000000000000000000000000000000000000000..9d11c118f9e7f2e9c933e3677e88467b7d847fed --- /dev/null +++ b/BenchmarkMetamodelsGenerator/tmp/lapin.ecore @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/External Plug-in Libraries/.classpath b/External Plug-in Libraries/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..794c5e0a2ea635144191a956b6df0df0fd883e56 --- /dev/null +++ b/External Plug-in Libraries/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/External Plug-in Libraries/.project b/External Plug-in Libraries/.project new file mode 100644 index 0000000000000000000000000000000000000000..630a80fd4564e03c1339b639956259eef8603dca --- /dev/null +++ b/External Plug-in Libraries/.project @@ -0,0 +1,17 @@ + + + External Plug-in Libraries + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/External Plug-in Libraries/.searchable b/External Plug-in Libraries/.searchable new file mode 100644 index 0000000000000000000000000000000000000000..29e23570470c1df05244bf2e75941772458f7838 --- /dev/null +++ b/External Plug-in Libraries/.searchable @@ -0,0 +1,3 @@ +# +#Mon Mar 03 19:11:35 CET 2014 +searchablePlugins=org.eclipse.emf.importer,org.eclipse.emf.importer.ecore,org.eclipse.pde.ui diff --git a/SomeManipulations/.classpath b/SomeManipulations/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..3bc247511f0f2d8c7cda0c9514a4e1d2c7ab5e23 --- /dev/null +++ b/SomeManipulations/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SomeManipulations/.project b/SomeManipulations/.project new file mode 100644 index 0000000000000000000000000000000000000000..1ac52966fc1260c90d1d9ad127f346bcc81bfe38 --- /dev/null +++ b/SomeManipulations/.project @@ -0,0 +1,28 @@ + + + SomeManipulations + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/SomeManipulations/META-INF/MANIFEST.MF b/SomeManipulations/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..063e89d82cff9fd2ff0d1f9d57af3329cdf76ed7 --- /dev/null +++ b/SomeManipulations/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: SomeManipulations;singleton:=true +Bundle-Version: 0.1.0.qualifier +Bundle-ClassPath: . +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.xmi;bundle-version="2.9.1", + org.eclipse.emf.common, + FancyEMFCloning;bundle-version="0.1.0", + SomeMetamodel;bundle-version="1.0.0" +Bundle-ActivationPolicy: lazy diff --git a/SomeManipulations/bin/main/MainShowNoShare.class b/SomeManipulations/bin/main/MainShowNoShare.class new file mode 100644 index 0000000000000000000000000000000000000000..f9aaa0443563960664c9ccaaa12fa508c071a545 Binary files /dev/null and b/SomeManipulations/bin/main/MainShowNoShare.class differ diff --git a/SomeManipulations/bin/main/MainTestChangeResource.class b/SomeManipulations/bin/main/MainTestChangeResource.class new file mode 100644 index 0000000000000000000000000000000000000000..ed41d47f8631cec239909c2da28cdb90225a5774 Binary files /dev/null and b/SomeManipulations/bin/main/MainTestChangeResource.class differ diff --git a/SomeManipulations/bin/main/MainTestCloning.class b/SomeManipulations/bin/main/MainTestCloning.class new file mode 100644 index 0000000000000000000000000000000000000000..e2b10fd8a6ba54c9ef7f6ab8f5df6c48ad752bef Binary files /dev/null and b/SomeManipulations/bin/main/MainTestCloning.class differ diff --git a/SomeManipulations/bin/main/MainTestCompositions.class b/SomeManipulations/bin/main/MainTestCompositions.class new file mode 100644 index 0000000000000000000000000000000000000000..e5d8b8402cc116fb0415fcccce82275b2ec5a368 Binary files /dev/null and b/SomeManipulations/bin/main/MainTestCompositions.class differ diff --git a/SomeManipulations/bin/main/MainTestLooseResource.class b/SomeManipulations/bin/main/MainTestLooseResource.class new file mode 100644 index 0000000000000000000000000000000000000000..fc9a6f3baf6d11ea7b9de841eda4cccaed3545e9 Binary files /dev/null and b/SomeManipulations/bin/main/MainTestLooseResource.class differ diff --git a/SomeManipulations/bin/main/MainTestMultipleCompositions.class b/SomeManipulations/bin/main/MainTestMultipleCompositions.class new file mode 100644 index 0000000000000000000000000000000000000000..22643e2040c79b950363fe95185108fb5285ea42 Binary files /dev/null and b/SomeManipulations/bin/main/MainTestMultipleCompositions.class differ diff --git a/SomeManipulations/bin/main/MainTestMultipleCompositionsOnlyLoose.class b/SomeManipulations/bin/main/MainTestMultipleCompositionsOnlyLoose.class new file mode 100644 index 0000000000000000000000000000000000000000..8845912edd337bc339ece663c9db1329dce6c0a0 Binary files /dev/null and b/SomeManipulations/bin/main/MainTestMultipleCompositionsOnlyLoose.class differ diff --git a/SomeManipulations/bin/main/MainTestNullResource.class b/SomeManipulations/bin/main/MainTestNullResource.class new file mode 100644 index 0000000000000000000000000000000000000000..46366e012e0e80888407f7f0bcf3260f0b715150 Binary files /dev/null and b/SomeManipulations/bin/main/MainTestNullResource.class differ diff --git a/SomeManipulations/bin/main/MainTestResources.class b/SomeManipulations/bin/main/MainTestResources.class new file mode 100644 index 0000000000000000000000000000000000000000..2bf975c0e4597f5acff09bfcd4c41179796bd646 Binary files /dev/null and b/SomeManipulations/bin/main/MainTestResources.class differ diff --git a/SomeManipulations/bin/main/MainTruc.class b/SomeManipulations/bin/main/MainTruc.class new file mode 100644 index 0000000000000000000000000000000000000000..e68d21c346deae91f529e02bd81faf6fa56c0573 Binary files /dev/null and b/SomeManipulations/bin/main/MainTruc.class differ diff --git a/SomeManipulations/bin/main/Truc.class b/SomeManipulations/bin/main/Truc.class new file mode 100644 index 0000000000000000000000000000000000000000..5b76d2320c2fd74519c1409f5784779e46b53e53 Binary files /dev/null and b/SomeManipulations/bin/main/Truc.class differ diff --git a/SomeManipulations/bin/main/Truc2.class b/SomeManipulations/bin/main/Truc2.class new file mode 100644 index 0000000000000000000000000000000000000000..90f79985c9ddaba8eb20e9ec0472ed9e378af0bf Binary files /dev/null and b/SomeManipulations/bin/main/Truc2.class differ diff --git a/SomeManipulations/bin/util/HeapDump.class b/SomeManipulations/bin/util/HeapDump.class new file mode 100644 index 0000000000000000000000000000000000000000..63983bfd438cc31e61e99ab628760c0cfa34c6b3 Binary files /dev/null and b/SomeManipulations/bin/util/HeapDump.class differ diff --git a/SomeManipulations/build.properties b/SomeManipulations/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..aa060dce6f6c6daa0d781bb9e93ed70aa3e8cd3c --- /dev/null +++ b/SomeManipulations/build.properties @@ -0,0 +1,9 @@ +# + +bin.includes = .,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/SomeManipulations/file/tmp/deepClone/submodel1.xmi b/SomeManipulations/file/tmp/deepClone/submodel1.xmi new file mode 100644 index 0000000000000000000000000000000000000000..1bb69a76f8dd02c86fff4a15f2e23de190cf19b9 --- /dev/null +++ b/SomeManipulations/file/tmp/deepClone/submodel1.xmi @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SomeManipulations/file/tmp/deepClone/submodel2.xmi b/SomeManipulations/file/tmp/deepClone/submodel2.xmi new file mode 100644 index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88 --- /dev/null +++ b/SomeManipulations/file/tmp/deepClone/submodel2.xmi @@ -0,0 +1,5 @@ + + + + + diff --git a/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel1.xmi b/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel1.xmi new file mode 100644 index 0000000000000000000000000000000000000000..8aed717df56e9beb5a914e590f2d402b69d4de74 --- /dev/null +++ b/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel1.xmi @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel2.xmi b/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel2.xmi new file mode 100644 index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88 --- /dev/null +++ b/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel2.xmi @@ -0,0 +1,5 @@ + + + + + diff --git a/SomeManipulations/file/tmp/submodel1.xmi b/SomeManipulations/file/tmp/submodel1.xmi new file mode 100644 index 0000000000000000000000000000000000000000..2c40cc710ad506b43ed22585236663786a9a8c07 --- /dev/null +++ b/SomeManipulations/file/tmp/submodel1.xmi @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SomeManipulations/file/tmp/submodel2.xmi b/SomeManipulations/file/tmp/submodel2.xmi new file mode 100644 index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88 --- /dev/null +++ b/SomeManipulations/file/tmp/submodel2.xmi @@ -0,0 +1,5 @@ + + + + + diff --git a/SomeManipulations/models/deepClone/submodel1.xmi b/SomeManipulations/models/deepClone/submodel1.xmi new file mode 100644 index 0000000000000000000000000000000000000000..52f15b8a3d0304c756118286c6af990741f3a895 --- /dev/null +++ b/SomeManipulations/models/deepClone/submodel1.xmi @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SomeManipulations/models/deepClone/submodel2.xmi b/SomeManipulations/models/deepClone/submodel2.xmi new file mode 100644 index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88 --- /dev/null +++ b/SomeManipulations/models/deepClone/submodel2.xmi @@ -0,0 +1,5 @@ + + + + + diff --git a/SomeManipulations/models/lightDeepClone/submodel1.xmi b/SomeManipulations/models/lightDeepClone/submodel1.xmi new file mode 100644 index 0000000000000000000000000000000000000000..52f15b8a3d0304c756118286c6af990741f3a895 --- /dev/null +++ b/SomeManipulations/models/lightDeepClone/submodel1.xmi @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SomeManipulations/models/lightDeepClone/submodel2.xmi b/SomeManipulations/models/lightDeepClone/submodel2.xmi new file mode 100644 index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88 --- /dev/null +++ b/SomeManipulations/models/lightDeepClone/submodel2.xmi @@ -0,0 +1,5 @@ + + + + + diff --git a/SomeManipulations/models/lightMutableOnlyClone/submodel1.xmi b/SomeManipulations/models/lightMutableOnlyClone/submodel1.xmi new file mode 100644 index 0000000000000000000000000000000000000000..52f15b8a3d0304c756118286c6af990741f3a895 --- /dev/null +++ b/SomeManipulations/models/lightMutableOnlyClone/submodel1.xmi @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SomeManipulations/models/lightMutableOnlyClone/submodel2.xmi b/SomeManipulations/models/lightMutableOnlyClone/submodel2.xmi new file mode 100644 index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88 --- /dev/null +++ b/SomeManipulations/models/lightMutableOnlyClone/submodel2.xmi @@ -0,0 +1,5 @@ + + + + + diff --git a/SomeManipulations/models/mutableOnlyClone/submodel1.xmi b/SomeManipulations/models/mutableOnlyClone/submodel1.xmi new file mode 100644 index 0000000000000000000000000000000000000000..52f15b8a3d0304c756118286c6af990741f3a895 --- /dev/null +++ b/SomeManipulations/models/mutableOnlyClone/submodel1.xmi @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SomeManipulations/models/mutableOnlyClone/submodel2.xmi b/SomeManipulations/models/mutableOnlyClone/submodel2.xmi new file mode 100644 index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88 --- /dev/null +++ b/SomeManipulations/models/mutableOnlyClone/submodel2.xmi @@ -0,0 +1,5 @@ + + + + + diff --git a/SomeManipulations/models/submodel1.xmi b/SomeManipulations/models/submodel1.xmi new file mode 100644 index 0000000000000000000000000000000000000000..52f15b8a3d0304c756118286c6af990741f3a895 --- /dev/null +++ b/SomeManipulations/models/submodel1.xmi @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SomeManipulations/models/submodel2.xmi b/SomeManipulations/models/submodel2.xmi new file mode 100644 index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88 --- /dev/null +++ b/SomeManipulations/models/submodel2.xmi @@ -0,0 +1,5 @@ + + + + + diff --git a/SomeManipulations/plugin.properties b/SomeManipulations/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..d5c652b39a3d613db681d8f6a574d555d7cd3490 --- /dev/null +++ b/SomeManipulations/plugin.properties @@ -0,0 +1,4 @@ +# + +pluginName = SomeMetamodel Model +providerName = www.example.org diff --git a/SomeManipulations/plugin.xml b/SomeManipulations/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..b09da2819bc5aa9e9e75d5b1958c3d6ad6dde9d2 --- /dev/null +++ b/SomeManipulations/plugin.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + diff --git a/SomeManipulations/src/main/MainShowNoShare.java b/SomeManipulations/src/main/MainShowNoShare.java new file mode 100644 index 0000000000000000000000000000000000000000..663d1d6947f4dacd73fc2c5c790cc8c74dcffbf1 --- /dev/null +++ b/SomeManipulations/src/main/MainShowNoShare.java @@ -0,0 +1,66 @@ +package main; + +import java.io.IOException; +import java.util.Collections; +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +import somemetamodel.A; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.SomemetamodelFactory; + + +public class MainShowNoShare { + + public static void main(String[] args) { + + // Creating some objects from our metamodel + SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE; + A a1 = factory.createA(); + B b1 = factory.createB(); + A a2 = factory.createA(); + B b2 = factory.createB(); + C cShared = factory.createC(); + + // Preparing serialization + Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + Map m = reg.getExtensionToFactoryMap(); + m.put("xmi", new XMIResourceFactoryImpl()); + + // Creating the resources (= models) set + ResourceSet resSet = new ResourceSetImpl(); + + // Creating a first model in the set + Resource model1 = resSet.createResource(URI.createURI("models/model1.xmi")); + model1.getContents().add(a1); + model1.getContents().add(b1); + model1.getContents().add(cShared); + + // Creating a second model in the set + Resource model2 = resSet.createResource(URI.createURI("models/model2.xmi")); + model2.getContents().add(a2); + model2.getContents().add(b2); + model2.getContents().add(cShared); //TODO /!\ here C is removed from model1 and added to model2 + + + // model2 = clone(model1) + + + // Saving the models into files + try { + model1.save(Collections.EMPTY_MAP); + model2.save(Collections.EMPTY_MAP); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + +} diff --git a/SomeManipulations/src/main/MainTestChangeResource.java b/SomeManipulations/src/main/MainTestChangeResource.java new file mode 100644 index 0000000000000000000000000000000000000000..f6a6fb51dd0f826705e5d0ff2a6fa824cafaa12c --- /dev/null +++ b/SomeManipulations/src/main/MainTestChangeResource.java @@ -0,0 +1,55 @@ +package main; + +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +import somemetamodel.A; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.SomemetamodelFactory; + + +public class MainTestChangeResource { + + public static void main(String[] args) { + + // Creating some objects from our metamodel + SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE; + A a = factory.createA(); + B b1 = factory.createB(); + B b2 = factory.createB(); + C c = factory.createC(); + + // Preparing serialization + Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + Map m = reg.getExtensionToFactoryMap(); + m.put("xmi", new XMIResourceFactoryImpl()); + + // Creating the resource sets (= models) + ResourceSet model1 = new ResourceSetImpl(); + ResourceSet model2 = new ResourceSetImpl(); + + // Creating the first model + Resource submodel1 = model1.createResource(URI.createURI("models/submodel1.xmi")); + submodel1.getContents().add(a); + submodel1.getContents().add(b1); + + + // Creating the second model + Resource submodel2 = model2.createResource(URI.createURI("models/submodel2.xmi")); + submodel2.getContents().add(b2); + submodel2.getContents().add(c); + + a.setB(b1); + a.setB(b2); + a.setC(c); + + + } + +} diff --git a/SomeManipulations/src/main/MainTestCloning.java b/SomeManipulations/src/main/MainTestCloning.java new file mode 100644 index 0000000000000000000000000000000000000000..d0cad2f6e0a393111ff5158ab9ccadd06d46e5b9 --- /dev/null +++ b/SomeManipulations/src/main/MainTestCloning.java @@ -0,0 +1,123 @@ +package main; + +import java.io.File; +import java.io.IOException; +import java.util.Collections; +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.impl.EPackageRegistryImpl; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +import someMMMutClassOnly.SomeMMMutClassOnlyTags; +import somemetamodel.A; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.SomemetamodelFactory; +import somemetamodelextension.SomemetamodelextensionFactory; +import somemetamodelextension.X; +import util.HeapDump; +import fancyemfcloning.cloner.Cloner; +import fancyemfcloning.cloner.impl.ClonerImpl; +import fancyemfcloning.emfextension.LooseCopier; + +public class MainTestCloning { + + public static void main(String[] args) { + + // Preparing factories + SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE; + SomemetamodelextensionFactory factory2 = SomemetamodelextensionFactory.eINSTANCE; + + // Creating some objects from our metamodel + A a = factory.createA(); + B b = factory.createB(); + C c = factory.createC(); + X x = factory2.createX(); + a.setC(c); + a.setX(x); + + // Preparing serialization + Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + Map m = reg.getExtensionToFactoryMap(); + m.put("xmi", new XMIResourceFactoryImpl()); + + // Creating the model + ResourceSet model = new ResourceSetImpl(); + + model.setPackageRegistry(new EPackageRegistryImpl()); + + // Creating submodels + Resource submodel1 = model.createResource(URI.createURI("file://home/ebousse/Dev/modelCloning/emf/SomeManipulations/models/submodel1.xmi")); + submodel1.getContents().add(a); + submodel1.getContents().add(b); + Resource submodel2 = model.createResource(URI.createURI("file://home/ebousse/Dev/modelCloning/emf/SomeManipulations/models/submodel2.xmi")); + submodel2.getContents().add(c); + submodel2.getContents().add(x); + + // Deep cloning the model + /* + Cloner dc = new ClonerImpl(new SomeMMDeepTags(), new LooseCopier()); + ResourceSet deepClone = dc.clone(model, "deepClone"); + + Cloner lightdc = new ClonerImpl(new SomeMMDeepTags(), new SomeMMDeepLightCopier()); + ResourceSet lightDeepClone = lightdc.clone(model, "lightDeepClone"); + */ + Cloner mc = new ClonerImpl(new SomeMMMutClassOnlyTags(), new LooseCopier()); + @SuppressWarnings("unused") + ResourceSet mcClone = mc.clone(model, "mutableOnlyClone"); + /* + Cloner lightmc = new ClonerImpl(new SomeMMMutClassOnlyTags(), new SomeMMMutClassOnlyLightCopier()); + ResourceSet lightmcClone = lightmc.clone(model, "lightMutableOnlyClone"); + + + try { + Thread.sleep(60000); + } catch (InterruptedException e1) { + // TODO Bloc catch généré automatiquement + e1.printStackTrace(); + }*/ + File outputDump = new File("/tmp/yay.bin"); + if (outputDump.exists()) + outputDump.delete(); + HeapDump.dumpHeap(outputDump.getAbsolutePath(), true); + + + // MutClassesOnly cloning the model + //ResourceSet mutableClassesOnlyClone = new MutClassesOnlyCloner().clone(model, "mutableClassesOnlyClone"); + /* + // WeakMutClassesOnly cloning the model + Set metamodel = new HashSet(); + for (Object o : EPackage.Registry.INSTANCE.values()) { + EPackage p = (EPackage) o; + if (p.getNsURI() != "http://www.eclipse.org/emf/2002/Ecore") + metamodel.add(p.eResource()); + } + //ResourceSet weakMutableClassesOnlyClone = new WeakMutClassesOnlyCloner(metamodel).clone(model, "mutableClassesOnlyClone"); + */ + // Saving the models into files + try { + //mutableClassesOnlyClone.getResources().get(0).save(Collections.EMPTY_MAP); + //mutableClassesOnlyClone.getResources().get(1).save(Collections.EMPTY_MAP); + submodel1.save(Collections.EMPTY_MAP); + submodel2.save(Collections.EMPTY_MAP); + /*deepClone.getResources().get(0).save(Collections.EMPTY_MAP); + deepClone.getResources().get(1).save(Collections.EMPTY_MAP); + lightDeepClone.getResources().get(0).save(Collections.EMPTY_MAP); + lightDeepClone.getResources().get(1).save(Collections.EMPTY_MAP); + mcClone.getResources().get(0).save(Collections.EMPTY_MAP); + mcClone.getResources().get(1).save(Collections.EMPTY_MAP); + lightmcClone.getResources().get(0).save(Collections.EMPTY_MAP); + lightmcClone.getResources().get(1).save(Collections.EMPTY_MAP);*/ + } catch (IOException e) { + // TODO Auto-generated catch block + System.err.println("An error occured during the saving:"); + e.printStackTrace(); + } + } + + +} diff --git a/SomeManipulations/src/main/MainTestCompositions.java b/SomeManipulations/src/main/MainTestCompositions.java new file mode 100644 index 0000000000000000000000000000000000000000..690f056b71e7c1ce5e33526a78140218f794b9ca --- /dev/null +++ b/SomeManipulations/src/main/MainTestCompositions.java @@ -0,0 +1,22 @@ +package main; + +import somemetamodel.A; +import somemetamodel.B; +import somemetamodel.SomemetamodelFactory; + +public class MainTestCompositions { + + public static void main(String[] args) { + + // Creating some objects from our metamodel + SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE; + A a1 = factory.createA(); + A a2 = factory.createA(); + B b = factory.createB(); + a1.setB(b); + a2.setB(b); + System.out.println(a1); + + } + +} diff --git a/SomeManipulations/src/main/MainTestLooseResource.java b/SomeManipulations/src/main/MainTestLooseResource.java new file mode 100644 index 0000000000000000000000000000000000000000..6643b181626de16d126818c0cf87d62e9272cc32 --- /dev/null +++ b/SomeManipulations/src/main/MainTestLooseResource.java @@ -0,0 +1,65 @@ +package main; + +import java.io.IOException; +import java.util.Collections; +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +import someMMDeep.SomeMMDeepTags; +import somemetamodel.A; +import somemetamodel.E; +import somemetamodel.SomemetamodelFactory; +import fancyemfcloning.emfextension.LooseResource; + +public class MainTestLooseResource { + + public static void main(String[] args) { + + // Creating some objects from our metamodel + SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE; + A a = factory.createA(); + E e = factory.createE(); + + + // Preparing serialization + Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + Map m = reg.getExtensionToFactoryMap(); + m.put("xmi", new XMIResourceFactoryImpl()); + + // Creating the resource sets (= models) + ResourceSet model1 = new ResourceSetImpl(); + ResourceSet model2 = new ResourceSetImpl(); + + // Creating the first submodel, with a + Resource submodel1 = model1.createResource(URI.createURI("models/submodel1.xmi")); + submodel1.getContents().add(a); + submodel1.getContents().add(e); + + // Creating the second submodel, with e + Resource submodel2 = new LooseResource(new SomeMMDeepTags()); + submodel2.setURI(URI.createURI("models/submodel2.xmi")); + model2.getResources().add(submodel2); + submodel2.getContents().add(a); + + // Trying to put e in a + //a.setE(e); + + // Saving the models into files + try { + submodel1.save(Collections.EMPTY_MAP); + submodel2.save(Collections.EMPTY_MAP); + } catch (IOException e2) { + // TODO Auto-generated catch block + e2.printStackTrace(); + } + + + + } + +} diff --git a/SomeManipulations/src/main/MainTestMultipleCompositions.java b/SomeManipulations/src/main/MainTestMultipleCompositions.java new file mode 100644 index 0000000000000000000000000000000000000000..0679934090d5b2831ff87624688be899518e9f66 --- /dev/null +++ b/SomeManipulations/src/main/MainTestMultipleCompositions.java @@ -0,0 +1,68 @@ +package main; + +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +import somemetamodel.A; +import somemetamodel.B; +import somemetamodel.SomemetamodelFactory; + + +public class MainTestMultipleCompositions { + + public static void main(String[] args) { + + // Creating some objects from our metamodel + SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE; + A a11 = factory.createA(); + A a12 = factory.createA(); + A a21 = factory.createA(); + A a22 = factory.createA(); + B bShared = factory.createB();//new BReadonlyImpl(); + + // Preparing serialization + Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + Map m = reg.getExtensionToFactoryMap(); + m.put("xmi", new XMIResourceFactoryImpl()); + + // Creating the resource sets (= models) + ResourceSet model1 = new ResourceSetImpl(); + ResourceSet model2 = new ResourceSetImpl(); + + // Creating the first model + Resource submodel1 = model1.createResource(URI.createURI("models/submodel1.xmi")); + submodel1.getContents().add(a11); + submodel1.getContents().add(a12); + submodel1.getContents().add(bShared); + + // Creating the second model + //Resource submodel2 = new LooseResource();// + Resource submodel2 = model2.createResource(URI.createURI("models/submodel1.xmi")); + model2.getResources().add(submodel2); + submodel2.getContents().add(a21); + submodel2.getContents().add(a22); + + // Putting bshared into a11 + a11.setB(bShared); + + // Then putting it into a21 + a21.setB(bShared); + + // Then putting it into a12 + a12.setB(bShared); + + // Then putting it into a22 + a22.setB(bShared); + + System.out.println(a11); + + + + } + +} diff --git a/SomeManipulations/src/main/MainTestMultipleCompositionsOnlyLoose.java b/SomeManipulations/src/main/MainTestMultipleCompositionsOnlyLoose.java new file mode 100644 index 0000000000000000000000000000000000000000..5e017a61ea86c31b66dc0d578185f24d1b96357b --- /dev/null +++ b/SomeManipulations/src/main/MainTestMultipleCompositionsOnlyLoose.java @@ -0,0 +1,77 @@ +package main; + +import java.util.Map; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +import someMMDeep.SomeMMDeepTags; +import somemetamodel.A; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.SomemetamodelFactory; +import fancyemfcloning.emfextension.LooseResource; + + +public class MainTestMultipleCompositionsOnlyLoose { + + public static void main(String[] args) { + + // Creating some objects from our metamodel + SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE; + A a11 = factory.createA(); + A a12 = factory.createA(); + A a21 = factory.createA(); + A a22 = factory.createA(); + B bShared = factory.createB();//new BReadonlyImpl(); + C cShared = factory.createC();//new BReadonlyImpl(); + + // Preparing serialization + Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + Map m = reg.getExtensionToFactoryMap(); + m.put("xmi", new XMIResourceFactoryImpl()); + + // Creating the resource sets (= models) + ResourceSet model1 = new ResourceSetImpl(); + ResourceSet model2 = new ResourceSetImpl(); + + // Creating the first model + Resource submodel1 = new LooseResource(new SomeMMDeepTags()); + model1.getResources().add(submodel1); + submodel1.getContents().add(a11); + submodel1.getContents().add(a12); + submodel1.getContents().add(bShared); + submodel1.getContents().add(cShared); + + // Creating the second model + Resource submodel2 = new LooseResource(new SomeMMDeepTags()); + model2.getResources().add(submodel2); + submodel2.getContents().add(a21); + submodel2.getContents().add(a22); + submodel2.getContents().add(cShared); + + // Setting links to c + a11.setC(cShared); + a21.setC(cShared); + + // Putting bshared into a11 + a11.setB(bShared); + + // Then putting it into a21 + a21.setB(bShared); + + // Then putting it into a12 + a12.setB(bShared); + + // Then putting it into a22 + a22.setB(bShared); + + System.out.println(a11); + + + + } + +} diff --git a/SomeManipulations/src/main/MainTestNullResource.java b/SomeManipulations/src/main/MainTestNullResource.java new file mode 100644 index 0000000000000000000000000000000000000000..42596e0cb82239127cd7e57798eb378e64e87353 --- /dev/null +++ b/SomeManipulations/src/main/MainTestNullResource.java @@ -0,0 +1,43 @@ +package main; + +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +import somemetamodel.A; +import somemetamodel.E; +import somemetamodel.SomemetamodelFactory; + + +public class MainTestNullResource { + + public static void main(String[] args) { + + // Creating some objects from our metamodel + SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE; + A a = factory.createA(); + E e = factory.createE(); + + // Preparing serialization + Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + Map m = reg.getExtensionToFactoryMap(); + m.put("xmi", new XMIResourceFactoryImpl()); + + // Creating the resource set (= model) + ResourceSet model = new ResourceSetImpl(); + Resource submodel1 = model.createResource(URI.createURI("models/submodel1.xmi")); + Resource submodel2 = model.createResource(URI.createURI("models/submodel2.xmi")); + + a.getE().add(e); + submodel1.getContents().add(e); + submodel2.getContents().add(a); + submodel1.getContents().add(a); + + + } + +} diff --git a/SomeManipulations/src/main/MainTestResources.java b/SomeManipulations/src/main/MainTestResources.java new file mode 100644 index 0000000000000000000000000000000000000000..758570ced5e518327544cda5236eed588b19fcf2 --- /dev/null +++ b/SomeManipulations/src/main/MainTestResources.java @@ -0,0 +1,64 @@ +package main; + +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +import somemetamodel.A; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.E; +import somemetamodel.SomemetamodelFactory; + +public class MainTestResources { + + public static void main(String[] args) { + + // Creating some objects from our metamodel + SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE; + A a = factory.createA(); + B b = factory.createB(); + C c = factory.createC(); + E e = factory.createE(); + + + // Preparing serialization + Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + Map m = reg.getExtensionToFactoryMap(); + m.put("xmi", new XMIResourceFactoryImpl()); + + // Creating the resource set (= model) + ResourceSet model = new ResourceSetImpl(); + + // Creating the first submodel, with a + Resource submodel1 = model.createResource(URI.createURI("models/submodel1.xmi")); + submodel1.getContents().add(a); + + System.out.println(e.eResource()); + a.getE().add(e); + System.out.println(e.eResource()); + + // Creating the second submodel, with b and c + Resource submodel2 = model.createResource(URI.createURI("models/submodel2.xmi")); + submodel2.getContents().add(c); + + // Trying to put b in a + a.setB(b); // b will leave the resource submodel2 + + System.out.println(b.eResource()); + + // Trying to put c in a + a.setC(c); // + + System.out.println(a); + + + + + } + +} diff --git a/SomeManipulations/src/main/MainTruc.java b/SomeManipulations/src/main/MainTruc.java new file mode 100644 index 0000000000000000000000000000000000000000..81dba7e4873ffc9c99a074c61b86f756e4e4c3db --- /dev/null +++ b/SomeManipulations/src/main/MainTruc.java @@ -0,0 +1,12 @@ +package main; + +public class MainTruc { + + public static void main(String[] args) { + Object o = new Truc2(); + + ((Truc)o).doStuff(); + + } + +} diff --git a/SomeManipulations/src/main/Truc.java b/SomeManipulations/src/main/Truc.java new file mode 100644 index 0000000000000000000000000000000000000000..ab380fd00fb069099c7e314e6de9294664113487 --- /dev/null +++ b/SomeManipulations/src/main/Truc.java @@ -0,0 +1,9 @@ +package main; + +public class Truc { + + public void doStuff() { + System.out.println("Truc do stuff"); + } + +} diff --git a/SomeManipulations/src/main/Truc2.java b/SomeManipulations/src/main/Truc2.java new file mode 100644 index 0000000000000000000000000000000000000000..d6d46bd07a00cf445df99e00463d07903da3befd --- /dev/null +++ b/SomeManipulations/src/main/Truc2.java @@ -0,0 +1,9 @@ +package main; + +public class Truc2 extends Truc { + + public void doStuff() { + System.out.println("Truc2 do stuff"); + } + +} diff --git a/SomeManipulations/src/util/HeapDump.java b/SomeManipulations/src/util/HeapDump.java new file mode 100644 index 0000000000000000000000000000000000000000..418579ecf83d1e0dd3185c39155890e306c9759a --- /dev/null +++ b/SomeManipulations/src/util/HeapDump.java @@ -0,0 +1,84 @@ +package util; + +import javax.management.MBeanServer; +import java.lang.management.ManagementFactory; +import java.lang.reflect.Method; + + +//@SuppressWarnings("restriction") +public class HeapDump { + // This is the name of the HotSpot Diagnostic MBean + private static final String HOTSPOT_BEAN_NAME = + "com.sun.management:type=HotSpotDiagnostic"; + + // field to store the hotspot diagnostic MBean + private static volatile Object hotspotMBean; + + /** + * Call this method from your application whenever you + * want to dump the heap snapshot into a file. + * + * @param fileName name of the heap dump file + * @param live flag that tells whether to dump + * only the live objects + */ + public static void dumpHeap(String fileName, boolean live) { + // initialize hotspot diagnostic MBean + initHotspotMBean(); + try { + Class clazz = Class.forName("com.sun.management.HotSpotDiagnosticMXBean"); + Method m = clazz.getMethod("dumpHeap", String.class, boolean.class); + m.invoke( hotspotMBean , fileName, live); + } catch (RuntimeException re) { + throw re; + } catch (Exception exp) { + throw new RuntimeException(exp); + } + } + + // initialize the hotspot diagnostic MBean field + private static void initHotspotMBean() { + if (hotspotMBean == null) { + synchronized (HeapDump.class) { + if (hotspotMBean == null) { + hotspotMBean = getHotspotMBean(); + } + } + } + } + + // get the hotspot diagnostic MBean from the + // platform MBean server + private static Object getHotspotMBean() { + try { + Class clazz = Class.forName("com.sun.management.HotSpotDiagnosticMXBean"); + MBeanServer server = ManagementFactory.getPlatformMBeanServer(); + Object bean = + ManagementFactory.newPlatformMXBeanProxy(server, + HOTSPOT_BEAN_NAME, clazz); + return bean; + } catch (RuntimeException re) { + throw re; + } catch (Exception exp) { + throw new RuntimeException(exp); + } + } + + public static void main(String[] args) { + // default heap dump file name + String fileName = "/tmp/heap.bin"; + // by default dump only the live objects + boolean live = true; + + // simple command line options + switch (args.length) { + case 2: + live = args[1].equals("true"); + case 1: + fileName = args[0]; + } + + // dump the heap + dumpHeap(fileName, live); + } +} \ No newline at end of file diff --git a/SomeMetamodel/.classpath b/SomeMetamodel/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..3bc247511f0f2d8c7cda0c9514a4e1d2c7ab5e23 --- /dev/null +++ b/SomeMetamodel/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SomeMetamodel/.project b/SomeMetamodel/.project new file mode 100644 index 0000000000000000000000000000000000000000..e93fbbaadc8ca9a2f7ebabbc73aa1ccb561d99f0 --- /dev/null +++ b/SomeMetamodel/.project @@ -0,0 +1,33 @@ + + + SomeMetamodel + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.pde.ds.core.builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/SomeMetamodel/.settings/org.eclipse.core.resources.prefs b/SomeMetamodel/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..b96e5eb5490127609820880724f8d1d44b8ce128 --- /dev/null +++ b/SomeMetamodel/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding//model/SomeMetamodel.ecorediag=UTF-8 diff --git a/SomeMetamodel/.settings/org.eclipse.jdt.core.prefs b/SomeMetamodel/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..7341ab1683c4f1bd2f33bbd3d102ebf032569b57 --- /dev/null +++ b/SomeMetamodel/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/SomeMetamodel/META-INF/MANIFEST.MF b/SomeMetamodel/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..68061bcd1ecfa4594f21f003f4d926d867fbfc32 --- /dev/null +++ b/SomeMetamodel/META-INF/MANIFEST.MF @@ -0,0 +1,24 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: SomeMetamodel;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Export-Package: somemetamodel, + somemetamodel.impl, + somemetamodel.util, + somemetamodelextension, + somemetamodelextension.hidden, + somemetamodelextension.hidden.impl, + somemetamodelextension.hidden.util, + somemetamodelextension.impl, + somemetamodelextension.util +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.emf.ecore;visibility:=reexport, + fr.inria.diverse.cloning.cloner;bundle-version="0.1.0", + fr.inria.diverse.cloning.benchmark.common +Bundle-ActivationPolicy: lazy +Service-Component: component.xml diff --git a/SomeMetamodel/bin/somemetamodel/A.class b/SomeMetamodel/bin/somemetamodel/A.class new file mode 100644 index 0000000000000000000000000000000000000000..d8076ba5c4b6a8a057411d813473aedce8477565 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/A.class differ diff --git a/SomeMetamodel/bin/somemetamodel/B.class b/SomeMetamodel/bin/somemetamodel/B.class new file mode 100644 index 0000000000000000000000000000000000000000..df70a2559d8e467b5db4ad2c62ac1b615790a88c Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/B.class differ diff --git a/SomeMetamodel/bin/somemetamodel/C.class b/SomeMetamodel/bin/somemetamodel/C.class new file mode 100644 index 0000000000000000000000000000000000000000..e1e5223043ff2b7ff4d07ebfb9089455877b47be Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/C.class differ diff --git a/SomeMetamodel/bin/somemetamodel/D.class b/SomeMetamodel/bin/somemetamodel/D.class new file mode 100644 index 0000000000000000000000000000000000000000..ba2ed8a49bddfad3c51316cedd2f07ebf53c66fd Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/D.class differ diff --git a/SomeMetamodel/bin/somemetamodel/E.class b/SomeMetamodel/bin/somemetamodel/E.class new file mode 100644 index 0000000000000000000000000000000000000000..59c42d650e29f8c6067a9e65b7a0891f83e33dcc Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/E.class differ diff --git a/SomeMetamodel/bin/somemetamodel/SomemetamodelFactory.class b/SomeMetamodel/bin/somemetamodel/SomemetamodelFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..d8e27e3bc70e36a84dd4cc345526686f008a561b Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/SomemetamodelFactory.class differ diff --git a/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage$Literals.class b/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage$Literals.class new file mode 100644 index 0000000000000000000000000000000000000000..98a7ed6dffcf3e0e4f7ea3363b5fd53b8a181c1d Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage$Literals.class differ diff --git a/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage.class b/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage.class new file mode 100644 index 0000000000000000000000000000000000000000..87470cc14c8c2914dc5f9b90e453830704efa10a Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage.class differ diff --git a/SomeMetamodel/bin/somemetamodel/impl/AImpl.class b/SomeMetamodel/bin/somemetamodel/impl/AImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..76739ad0ab0023222f40cdfba40d81045a7dde87 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/AImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodel/impl/BImpl.class b/SomeMetamodel/bin/somemetamodel/impl/BImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..705f6fcfc2142d7a6431459ddf63e011c87a3ae6 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/BImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodel/impl/CImpl.class b/SomeMetamodel/bin/somemetamodel/impl/CImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..46b1059741bf30b4517db53bef3e440153e29d8e Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/CImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodel/impl/DImpl.class b/SomeMetamodel/bin/somemetamodel/impl/DImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..4ce6233d4c138166ca03de2b3a2a8e80e3225b3f Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/DImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodel/impl/EImpl.class b/SomeMetamodel/bin/somemetamodel/impl/EImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..edaabf21dfcfa8a54bf83265d942eaee986ae965 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/EImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelFactoryImpl.class b/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..beca39b81701b7b117c961f8129b7270b18d0612 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelFactoryImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelPackageImpl.class b/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelPackageImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..81d68692e4853feea37535e81f188ae0180e9c1d Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelPackageImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory$1.class b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b0bf3f90e81586799d43445973b6b3edc8cb0adc Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory$1.class differ diff --git a/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory.class b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..b54b3b0c5d69389ab0bbcd09f621f3552a3b136b Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory.class differ diff --git a/SomeMetamodel/bin/somemetamodel/util/SomemetamodelSwitch.class b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelSwitch.class new file mode 100644 index 0000000000000000000000000000000000000000..682a6bc4cad28114b7ce1361b3cdd6466cd7071e Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelSwitch.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/R.class b/SomeMetamodel/bin/somemetamodelextension/R.class new file mode 100644 index 0000000000000000000000000000000000000000..249ec049e6cc7df389d57644fbc34b85ab0f3a00 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/R.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionFactory.class b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..cbb9e4677513d32c2ab000a7b2edaea9290f241b Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionFactory.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage$Literals.class b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage$Literals.class new file mode 100644 index 0000000000000000000000000000000000000000..7365e9cbf3a7107d09072bf6fbf037f8633ea16d Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage$Literals.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage.class b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage.class new file mode 100644 index 0000000000000000000000000000000000000000..051c6ec1ad1d4fefc0af1e7a37d34b46c44a9a94 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/X.class b/SomeMetamodel/bin/somemetamodelextension/X.class new file mode 100644 index 0000000000000000000000000000000000000000..ca575370f60ffe5b7fc1b8b329f35e18be2d8693 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/X.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenFactory.class b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..5e953025cbd8ee4d9e664a9fe1c6e7d886b1c9a8 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenFactory.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage$Literals.class b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage$Literals.class new file mode 100644 index 0000000000000000000000000000000000000000..b3576b8695fea924602673991b67794344961c84 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage$Literals.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage.class b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage.class new file mode 100644 index 0000000000000000000000000000000000000000..0a23efef7297ec8834f1ba7367aacb4a1208c75d Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/Y.class b/SomeMetamodel/bin/somemetamodelextension/hidden/Y.class new file mode 100644 index 0000000000000000000000000000000000000000..fdb8d86930dcf2455a3ec2413a5dad18f87d1586 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/Y.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/Z.class b/SomeMetamodel/bin/somemetamodelextension/hidden/Z.class new file mode 100644 index 0000000000000000000000000000000000000000..7508e7b6a7fa7e2b08cac3c1c56f3322eed99609 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/Z.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenFactoryImpl.class b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..528cf89eef458a740863216f859ff49ecbbead1d Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenFactoryImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenPackageImpl.class b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenPackageImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..a85b9ae79ca15553a3c899afc861094e5890600a Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenPackageImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/impl/YImpl.class b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/YImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..3fe4aadcb8d70e47bfe347f74b49908cf1be8874 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/YImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/impl/ZImpl.class b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/ZImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..53ca967df5252aed3049fdfbb92136161fc789fd Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/ZImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory$1.class b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..0a915a1f8e64a5c1c07e5b107454927bc354df43 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory$1.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory.class b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..19d630fe0b9c3fa79af8dabdc2a80b31a737f0d0 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenSwitch.class b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenSwitch.class new file mode 100644 index 0000000000000000000000000000000000000000..6db0f685caf2e0bbfd571d98cc5cfc8f0ced68df Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenSwitch.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/impl/RImpl.class b/SomeMetamodel/bin/somemetamodelextension/impl/RImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..2433a8f161d5b46e6536e41d9a26cc938ac11d38 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/impl/RImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.class b/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..9fec172eacf90db62e9c4f198573ad7c0243377d Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.class b/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..f448681bd2e705a6321b56f728fd35ce6f2abc0c Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/impl/XImpl.class b/SomeMetamodel/bin/somemetamodelextension/impl/XImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..6f25b233573605a664a44e15ca3264093800ea3d Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/impl/XImpl.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory$1.class b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a1a1ad9e3467218c7ce05514b949d62d8771ca5f Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory$1.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.class b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..853f3032109175bff6f48c13dc83374444f84105 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.class differ diff --git a/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionSwitch.class b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionSwitch.class new file mode 100644 index 0000000000000000000000000000000000000000..d3085e7487e29c83a726b81024cd9c3a54202221 Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionSwitch.class differ diff --git a/SomeMetamodel/bin/somemmdeep/BDeepPImpl.class b/SomeMetamodel/bin/somemmdeep/BDeepPImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..9aef463a734c4e97f54fc8a36dbb0e096fb852a9 Binary files /dev/null and b/SomeMetamodel/bin/somemmdeep/BDeepPImpl.class differ diff --git a/SomeMetamodel/bin/somemmdeep/RDeepPImpl.class b/SomeMetamodel/bin/somemmdeep/RDeepPImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..5261be22236c3533717058c9b0dc4b8b7ea2fbf5 Binary files /dev/null and b/SomeMetamodel/bin/somemmdeep/RDeepPImpl.class differ diff --git a/SomeMetamodel/bin/somemmdeep/SomeMMDeepCloningMaterial.class b/SomeMetamodel/bin/somemmdeep/SomeMMDeepCloningMaterial.class new file mode 100644 index 0000000000000000000000000000000000000000..ce6a40299e2fdebb411abc36723071ba81443bcd Binary files /dev/null and b/SomeMetamodel/bin/somemmdeep/SomeMMDeepCloningMaterial.class differ diff --git a/SomeMetamodel/bin/somemmdeep/SomeMMDeepLightCopier.class b/SomeMetamodel/bin/somemmdeep/SomeMMDeepLightCopier.class new file mode 100644 index 0000000000000000000000000000000000000000..be3bd52602f8119c49feb24973c21ae8d76d49b4 Binary files /dev/null and b/SomeMetamodel/bin/somemmdeep/SomeMMDeepLightCopier.class differ diff --git a/SomeMetamodel/bin/somemmdeep/SomeMMDeepTags.class b/SomeMetamodel/bin/somemmdeep/SomeMMDeepTags.class new file mode 100644 index 0000000000000000000000000000000000000000..f23b7ddefe90141e5354a6a2f10dbae489490bfe Binary files /dev/null and b/SomeMetamodel/bin/somemmdeep/SomeMMDeepTags.class differ diff --git a/SomeMetamodel/bin/somemmmutclassonly/AMutClassOnlyPImpl.class b/SomeMetamodel/bin/somemmmutclassonly/AMutClassOnlyPImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..aa672ed47774c0251e470956b333cbcceae13b72 Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/AMutClassOnlyPImpl.class differ diff --git a/SomeMetamodel/bin/somemmmutclassonly/BMutClassOnlyPImpl.class b/SomeMetamodel/bin/somemmmutclassonly/BMutClassOnlyPImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..974044c20e78083b27917508098021ff326fff0c Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/BMutClassOnlyPImpl.class differ diff --git a/SomeMetamodel/bin/somemmmutclassonly/RMutClassOnlyPImpl.class b/SomeMetamodel/bin/somemmmutclassonly/RMutClassOnlyPImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..9434a2fdd93244d5a47d6a681684e12fcf141983 Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/RMutClassOnlyPImpl.class differ diff --git a/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.class b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.class new file mode 100644 index 0000000000000000000000000000000000000000..af92f9055c2f17e32484d8e7a658dcf67bae2f36 Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.class differ diff --git a/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.class b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.class new file mode 100644 index 0000000000000000000000000000000000000000..20ea8b74b6da98be3fb4327f0b86a9b4724d82b0 Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.class differ diff --git a/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyTags.class b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyTags.class new file mode 100644 index 0000000000000000000000000000000000000000..e1c4cc28d1e4a8b2ddd941a8fb87af848a24e3ed Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyTags.class differ diff --git a/SomeMetamodel/build.properties b/SomeMetamodel/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..a701a0fd203170d2570e94b0c56e80bbee2fe3d2 --- /dev/null +++ b/SomeMetamodel/build.properties @@ -0,0 +1,10 @@ +bin.includes = .,\ + model/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties,\ + component.xml +output.. = bin/ +jars.compile.order = . +source.. = src/ +jre.compilation.profile = J2SE-1.5 diff --git a/SomeMetamodel/model/SomeMetamodel.ecore b/SomeMetamodel/model/SomeMetamodel.ecore new file mode 100644 index 0000000000000000000000000000000000000000..59c70928cd52cc385a95029e61f05f5fa1afb759 --- /dev/null +++ b/SomeMetamodel/model/SomeMetamodel.ecore @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/SomeMetamodel/model/SomeMetamodel.ecorediag b/SomeMetamodel/model/SomeMetamodel.ecorediag new file mode 100644 index 0000000000000000000000000000000000000000..f0c415e1094d1a3c8c00d50478ab88099f3cbf89 --- /dev/null +++ b/SomeMetamodel/model/SomeMetamodel.ecorediag @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SomeMetamodel/model/SomeMetamodel.genmodel b/SomeMetamodel/model/SomeMetamodel.genmodel new file mode 100644 index 0000000000000000000000000000000000000000..b20c7ff54b7b09fabf115aec945e4c1eb618a0c6 --- /dev/null +++ b/SomeMetamodel/model/SomeMetamodel.genmodel @@ -0,0 +1,49 @@ + + + SomeMetamodel.ecore + SomeMetamodelExtension.ecore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SomeMetamodel/model/SomeMetamodelExtension.ecore b/SomeMetamodel/model/SomeMetamodelExtension.ecore new file mode 100644 index 0000000000000000000000000000000000000000..718f86481a2fb9984f3eeb5e51115a20d1e9d15a --- /dev/null +++ b/SomeMetamodel/model/SomeMetamodelExtension.ecore @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/SomeMetamodel/plugin.properties b/SomeMetamodel/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..d5c652b39a3d613db681d8f6a574d555d7cd3490 --- /dev/null +++ b/SomeMetamodel/plugin.properties @@ -0,0 +1,4 @@ +# + +pluginName = SomeMetamodel Model +providerName = www.example.org diff --git a/SomeMetamodel/plugin.xml b/SomeMetamodel/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..365aea097d0b6091efdb06f071b3a85d6e0ffe4d --- /dev/null +++ b/SomeMetamodel/plugin.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SomeMetamodel/src/somemetamodel/A.java b/SomeMetamodel/src/somemetamodel/A.java new file mode 100644 index 0000000000000000000000000000000000000000..de4dd4b0d137ea6495ceb32a2ff13debc30a563a --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/A.java @@ -0,0 +1,155 @@ +/** + */ +package somemetamodel; + +import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject; + +import org.eclipse.emf.common.util.EList; + +import somemetamodelextension.X; + +/** + * + * A representation of the model object 'A'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link somemetamodel.A#getB B}
  • + *
  • {@link somemetamodel.A#getC C}
  • + *
  • {@link somemetamodel.A#getD D}
  • + *
  • {@link somemetamodel.A#getE E}
  • + *
  • {@link somemetamodel.A#getX X}
  • + *
+ *

+ * + * @see somemetamodel.SomemetamodelPackage#getA() + * @model + * @extends ShareableEObject + * @generated + */ +public interface A extends ShareableEObject { + /** + * Returns the value of the 'B' containment reference. + * + *

+ * If the meaning of the 'B' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'B' containment reference. + * @see #setB(B) + * @see somemetamodel.SomemetamodelPackage#getA_B() + * @model containment="true" + * @generated + */ + B getB(); + + /** + * Sets the value of the '{@link somemetamodel.A#getB B}' containment reference. + * + * + * @param value the new value of the 'B' containment reference. + * @see #getB() + * @generated + */ + void setB(B value); + + /** + * Returns the value of the 'C' reference. + * + *

+ * If the meaning of the 'C' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'C' reference. + * @see #setC(C) + * @see somemetamodel.SomemetamodelPackage#getA_C() + * @model + * @generated + */ + C getC(); + + /** + * Sets the value of the '{@link somemetamodel.A#getC C}' reference. + * + * + * @param value the new value of the 'C' reference. + * @see #getC() + * @generated + */ + void setC(C value); + + /** + * Returns the value of the 'D' reference. + * It is bidirectional and its opposite is '{@link somemetamodel.D#getA A}'. + * + *

+ * If the meaning of the 'D' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'D' reference. + * @see #setD(D) + * @see somemetamodel.SomemetamodelPackage#getA_D() + * @see somemetamodel.D#getA + * @model opposite="a" + * @generated + */ + D getD(); + + /** + * Sets the value of the '{@link somemetamodel.A#getD D}' reference. + * + * + * @param value the new value of the 'D' reference. + * @see #getD() + * @generated + */ + void setD(D value); + + /** + * Returns the value of the 'E' containment reference list. + * The list contents are of type {@link somemetamodel.E}. + * + *

+ * If the meaning of the 'E' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'E' containment reference list. + * @see somemetamodel.SomemetamodelPackage#getA_E() + * @model containment="true" + * @generated + */ + EList getE(); + + /** + * Returns the value of the 'X' reference. + * + *

+ * If the meaning of the 'X' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'X' reference. + * @see #setX(X) + * @see somemetamodel.SomemetamodelPackage#getA_X() + * @model + * @generated + */ + X getX(); + + /** + * Sets the value of the '{@link somemetamodel.A#getX X}' reference. + * + * + * @param value the new value of the 'X' reference. + * @see #getX() + * @generated + */ + void setX(X value); + +} // A diff --git a/SomeMetamodel/src/somemetamodel/B.java b/SomeMetamodel/src/somemetamodel/B.java new file mode 100644 index 0000000000000000000000000000000000000000..d09a661ffa3c03ebcd7b111a95fddffd7e1986cd --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/B.java @@ -0,0 +1,78 @@ +/** + */ +package somemetamodel; + +import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject; + +/** + * + * A representation of the model object 'B'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link somemetamodel.B#getN1_m N1 m}
  • + *
  • {@link somemetamodel.B#getN2 N2}
  • + *
+ *

+ * + * @see somemetamodel.SomemetamodelPackage#getB() + * @model + * @extends ShareableEObject + * @generated + */ +public interface B extends ShareableEObject { + /** + * Returns the value of the 'N1 m' attribute. + * + *

+ * If the meaning of the 'N1 m' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'N1 m' attribute. + * @see #setN1_m(int) + * @see somemetamodel.SomemetamodelPackage#getB_N1_m() + * @model + * @generated + */ + int getN1_m(); + + /** + * Sets the value of the '{@link somemetamodel.B#getN1_m N1 m}' attribute. + * + * + * @param value the new value of the 'N1 m' attribute. + * @see #getN1_m() + * @generated + */ + void setN1_m(int value); + + /** + * Returns the value of the 'N2' attribute. + * + *

+ * If the meaning of the 'N2' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'N2' attribute. + * @see #setN2(byte) + * @see somemetamodel.SomemetamodelPackage#getB_N2() + * @model + * @generated + */ + byte getN2(); + + /** + * Sets the value of the '{@link somemetamodel.B#getN2 N2}' attribute. + * + * + * @param value the new value of the 'N2' attribute. + * @see #getN2() + * @generated + */ + void setN2(byte value); + +} // B diff --git a/SomeMetamodel/src/somemetamodel/C.java b/SomeMetamodel/src/somemetamodel/C.java new file mode 100644 index 0000000000000000000000000000000000000000..8929e264100922b4148c62771eb7bcb69205e1bf --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/C.java @@ -0,0 +1,51 @@ +/** + */ +package somemetamodel; + +import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject; + +/** + * + * A representation of the model object 'C'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link somemetamodel.C#getYay_m Yay m}
  • + *
+ *

+ * + * @see somemetamodel.SomemetamodelPackage#getC() + * @model + * @extends ShareableEObject + * @generated + */ +public interface C extends ShareableEObject { + /** + * Returns the value of the 'Yay m' attribute. + * + *

+ * If the meaning of the 'Yay m' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Yay m' attribute. + * @see #setYay_m(int) + * @see somemetamodel.SomemetamodelPackage#getC_Yay_m() + * @model + * @generated + */ + int getYay_m(); + + /** + * Sets the value of the '{@link somemetamodel.C#getYay_m Yay m}' attribute. + * + * + * @param value the new value of the 'Yay m' attribute. + * @see #getYay_m() + * @generated + */ + void setYay_m(int value); + +} // C diff --git a/SomeMetamodel/src/somemetamodel/D.java b/SomeMetamodel/src/somemetamodel/D.java new file mode 100644 index 0000000000000000000000000000000000000000..001c92a68107024e3a22ccb8a0a1cf35fb903095 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/D.java @@ -0,0 +1,53 @@ +/** + */ +package somemetamodel; + +import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject; + +/** + * + * A representation of the model object 'D'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link somemetamodel.D#getA A}
  • + *
+ *

+ * + * @see somemetamodel.SomemetamodelPackage#getD() + * @model + * @extends ShareableEObject + * @generated + */ +public interface D extends ShareableEObject { + /** + * Returns the value of the 'A' reference. + * It is bidirectional and its opposite is '{@link somemetamodel.A#getD D}'. + * + *

+ * If the meaning of the 'A' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'A' reference. + * @see #setA(A) + * @see somemetamodel.SomemetamodelPackage#getD_A() + * @see somemetamodel.A#getD + * @model opposite="d" + * @generated + */ + A getA(); + + /** + * Sets the value of the '{@link somemetamodel.D#getA A}' reference. + * + * + * @param value the new value of the 'A' reference. + * @see #getA() + * @generated + */ + void setA(A value); + +} // D diff --git a/SomeMetamodel/src/somemetamodel/E.java b/SomeMetamodel/src/somemetamodel/E.java new file mode 100644 index 0000000000000000000000000000000000000000..b4c057ae0561bb75fe96b50fac1ed1b46520245e --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/E.java @@ -0,0 +1,19 @@ +/** + */ +package somemetamodel; + +import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject; + +/** + * + * A representation of the model object 'E'. + * + * + * + * @see somemetamodel.SomemetamodelPackage#getE() + * @model + * @extends ShareableEObject + * @generated + */ +public interface E extends ShareableEObject { +} // E diff --git a/SomeMetamodel/src/somemetamodel/SomemetamodelFactory.java b/SomeMetamodel/src/somemetamodel/SomemetamodelFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..835035a49da9ca3698ca9f2e5824f12a922badbe --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/SomemetamodelFactory.java @@ -0,0 +1,79 @@ +/** + */ +package somemetamodel; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see somemetamodel.SomemetamodelPackage + * @generated + */ +public interface SomemetamodelFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + SomemetamodelFactory eINSTANCE = somemetamodel.impl.SomemetamodelFactoryImpl + .init(); + + /** + * Returns a new object of class 'A'. + * + * + * @return a new object of class 'A'. + * @generated + */ + A createA(); + + /** + * Returns a new object of class 'B'. + * + * + * @return a new object of class 'B'. + * @generated + */ + B createB(); + + /** + * Returns a new object of class 'C'. + * + * + * @return a new object of class 'C'. + * @generated + */ + C createC(); + + /** + * Returns a new object of class 'D'. + * + * + * @return a new object of class 'D'. + * @generated + */ + D createD(); + + /** + * Returns a new object of class 'E'. + * + * + * @return a new object of class 'E'. + * @generated + */ + E createE(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + SomemetamodelPackage getSomemetamodelPackage(); + +} //SomemetamodelFactory diff --git a/SomeMetamodel/src/somemetamodel/SomemetamodelPackage.java b/SomeMetamodel/src/somemetamodel/SomemetamodelPackage.java new file mode 100644 index 0000000000000000000000000000000000000000..52ee333bb27b6d962425e6ea34163277a5f42f5c --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/SomemetamodelPackage.java @@ -0,0 +1,577 @@ +/** + */ +package somemetamodel; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see somemetamodel.SomemetamodelFactory + * @model kind="package" + * @generated + */ +public interface SomemetamodelPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "somemetamodel"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "http://somemetamodel"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "somemetamodel"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + SomemetamodelPackage eINSTANCE = somemetamodel.impl.SomemetamodelPackageImpl + .init(); + + /** + * The meta object id for the '{@link somemetamodel.impl.AImpl A}' class. + * + * + * @see somemetamodel.impl.AImpl + * @see somemetamodel.impl.SomemetamodelPackageImpl#getA() + * @generated + */ + int A = 0; + + /** + * The feature id for the 'B' containment reference. + * + * + * @generated + * @ordered + */ + int A__B = 0; + + /** + * The feature id for the 'C' reference. + * + * + * @generated + * @ordered + */ + int A__C = 1; + + /** + * The feature id for the 'D' reference. + * + * + * @generated + * @ordered + */ + int A__D = 2; + + /** + * The feature id for the 'E' containment reference list. + * + * + * @generated + * @ordered + */ + int A__E = 3; + + /** + * The feature id for the 'X' reference. + * + * + * @generated + * @ordered + */ + int A__X = 4; + + /** + * The number of structural features of the 'A' class. + * + * + * @generated + * @ordered + */ + int A_FEATURE_COUNT = 5; + + /** + * The number of operations of the 'A' class. + * + * + * @generated + * @ordered + */ + int A_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link somemetamodel.impl.BImpl B}' class. + * + * + * @see somemetamodel.impl.BImpl + * @see somemetamodel.impl.SomemetamodelPackageImpl#getB() + * @generated + */ + int B = 1; + + /** + * The feature id for the 'N1 m' attribute. + * + * + * @generated + * @ordered + */ + int B__N1_M = 0; + + /** + * The feature id for the 'N2' attribute. + * + * + * @generated + * @ordered + */ + int B__N2 = 1; + + /** + * The number of structural features of the 'B' class. + * + * + * @generated + * @ordered + */ + int B_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'B' class. + * + * + * @generated + * @ordered + */ + int B_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link somemetamodel.impl.CImpl C}' class. + * + * + * @see somemetamodel.impl.CImpl + * @see somemetamodel.impl.SomemetamodelPackageImpl#getC() + * @generated + */ + int C = 2; + + /** + * The feature id for the 'Yay m' attribute. + * + * + * @generated + * @ordered + */ + int C__YAY_M = 0; + + /** + * The number of structural features of the 'C' class. + * + * + * @generated + * @ordered + */ + int C_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'C' class. + * + * + * @generated + * @ordered + */ + int C_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link somemetamodel.impl.DImpl D}' class. + * + * + * @see somemetamodel.impl.DImpl + * @see somemetamodel.impl.SomemetamodelPackageImpl#getD() + * @generated + */ + int D = 3; + + /** + * The feature id for the 'A' reference. + * + * + * @generated + * @ordered + */ + int D__A = 0; + + /** + * The number of structural features of the 'D' class. + * + * + * @generated + * @ordered + */ + int D_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'D' class. + * + * + * @generated + * @ordered + */ + int D_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link somemetamodel.impl.EImpl E}' class. + * + * + * @see somemetamodel.impl.EImpl + * @see somemetamodel.impl.SomemetamodelPackageImpl#getE() + * @generated + */ + int E = 4; + + /** + * The number of structural features of the 'E' class. + * + * + * @generated + * @ordered + */ + int E_FEATURE_COUNT = 0; + + /** + * The number of operations of the 'E' class. + * + * + * @generated + * @ordered + */ + int E_OPERATION_COUNT = 0; + + /** + * Returns the meta object for class '{@link somemetamodel.A A}'. + * + * + * @return the meta object for class 'A'. + * @see somemetamodel.A + * @generated + */ + EClass getA(); + + /** + * Returns the meta object for the containment reference '{@link somemetamodel.A#getB B}'. + * + * + * @return the meta object for the containment reference 'B'. + * @see somemetamodel.A#getB() + * @see #getA() + * @generated + */ + EReference getA_B(); + + /** + * Returns the meta object for the reference '{@link somemetamodel.A#getC C}'. + * + * + * @return the meta object for the reference 'C'. + * @see somemetamodel.A#getC() + * @see #getA() + * @generated + */ + EReference getA_C(); + + /** + * Returns the meta object for the reference '{@link somemetamodel.A#getD D}'. + * + * + * @return the meta object for the reference 'D'. + * @see somemetamodel.A#getD() + * @see #getA() + * @generated + */ + EReference getA_D(); + + /** + * Returns the meta object for the containment reference list '{@link somemetamodel.A#getE E}'. + * + * + * @return the meta object for the containment reference list 'E'. + * @see somemetamodel.A#getE() + * @see #getA() + * @generated + */ + EReference getA_E(); + + /** + * Returns the meta object for the reference '{@link somemetamodel.A#getX X}'. + * + * + * @return the meta object for the reference 'X'. + * @see somemetamodel.A#getX() + * @see #getA() + * @generated + */ + EReference getA_X(); + + /** + * Returns the meta object for class '{@link somemetamodel.B B}'. + * + * + * @return the meta object for class 'B'. + * @see somemetamodel.B + * @generated + */ + EClass getB(); + + /** + * Returns the meta object for the attribute '{@link somemetamodel.B#getN1_m N1 m}'. + * + * + * @return the meta object for the attribute 'N1 m'. + * @see somemetamodel.B#getN1_m() + * @see #getB() + * @generated + */ + EAttribute getB_N1_m(); + + /** + * Returns the meta object for the attribute '{@link somemetamodel.B#getN2 N2}'. + * + * + * @return the meta object for the attribute 'N2'. + * @see somemetamodel.B#getN2() + * @see #getB() + * @generated + */ + EAttribute getB_N2(); + + /** + * Returns the meta object for class '{@link somemetamodel.C C}'. + * + * + * @return the meta object for class 'C'. + * @see somemetamodel.C + * @generated + */ + EClass getC(); + + /** + * Returns the meta object for the attribute '{@link somemetamodel.C#getYay_m Yay m}'. + * + * + * @return the meta object for the attribute 'Yay m'. + * @see somemetamodel.C#getYay_m() + * @see #getC() + * @generated + */ + EAttribute getC_Yay_m(); + + /** + * Returns the meta object for class '{@link somemetamodel.D D}'. + * + * + * @return the meta object for class 'D'. + * @see somemetamodel.D + * @generated + */ + EClass getD(); + + /** + * Returns the meta object for the reference '{@link somemetamodel.D#getA A}'. + * + * + * @return the meta object for the reference 'A'. + * @see somemetamodel.D#getA() + * @see #getD() + * @generated + */ + EReference getD_A(); + + /** + * Returns the meta object for class '{@link somemetamodel.E E}'. + * + * + * @return the meta object for class 'E'. + * @see somemetamodel.E + * @generated + */ + EClass getE(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + SomemetamodelFactory getSomemetamodelFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link somemetamodel.impl.AImpl A}' class. + * + * + * @see somemetamodel.impl.AImpl + * @see somemetamodel.impl.SomemetamodelPackageImpl#getA() + * @generated + */ + EClass A = eINSTANCE.getA(); + + /** + * The meta object literal for the 'B' containment reference feature. + * + * + * @generated + */ + EReference A__B = eINSTANCE.getA_B(); + + /** + * The meta object literal for the 'C' reference feature. + * + * + * @generated + */ + EReference A__C = eINSTANCE.getA_C(); + + /** + * The meta object literal for the 'D' reference feature. + * + * + * @generated + */ + EReference A__D = eINSTANCE.getA_D(); + + /** + * The meta object literal for the 'E' containment reference list feature. + * + * + * @generated + */ + EReference A__E = eINSTANCE.getA_E(); + + /** + * The meta object literal for the 'X' reference feature. + * + * + * @generated + */ + EReference A__X = eINSTANCE.getA_X(); + + /** + * The meta object literal for the '{@link somemetamodel.impl.BImpl B}' class. + * + * + * @see somemetamodel.impl.BImpl + * @see somemetamodel.impl.SomemetamodelPackageImpl#getB() + * @generated + */ + EClass B = eINSTANCE.getB(); + + /** + * The meta object literal for the 'N1 m' attribute feature. + * + * + * @generated + */ + EAttribute B__N1_M = eINSTANCE.getB_N1_m(); + + /** + * The meta object literal for the 'N2' attribute feature. + * + * + * @generated + */ + EAttribute B__N2 = eINSTANCE.getB_N2(); + + /** + * The meta object literal for the '{@link somemetamodel.impl.CImpl C}' class. + * + * + * @see somemetamodel.impl.CImpl + * @see somemetamodel.impl.SomemetamodelPackageImpl#getC() + * @generated + */ + EClass C = eINSTANCE.getC(); + + /** + * The meta object literal for the 'Yay m' attribute feature. + * + * + * @generated + */ + EAttribute C__YAY_M = eINSTANCE.getC_Yay_m(); + + /** + * The meta object literal for the '{@link somemetamodel.impl.DImpl D}' class. + * + * + * @see somemetamodel.impl.DImpl + * @see somemetamodel.impl.SomemetamodelPackageImpl#getD() + * @generated + */ + EClass D = eINSTANCE.getD(); + + /** + * The meta object literal for the 'A' reference feature. + * + * + * @generated + */ + EReference D__A = eINSTANCE.getD_A(); + + /** + * The meta object literal for the '{@link somemetamodel.impl.EImpl E}' class. + * + * + * @see somemetamodel.impl.EImpl + * @see somemetamodel.impl.SomemetamodelPackageImpl#getE() + * @generated + */ + EClass E = eINSTANCE.getE(); + + } + +} //SomemetamodelPackage diff --git a/SomeMetamodel/src/somemetamodel/impl/AImpl.java b/SomeMetamodel/src/somemetamodel/impl/AImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..e68d1c3b57da8547c1a676b6b2b32df8cc518d5e --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/AImpl.java @@ -0,0 +1,471 @@ +/** + */ +package somemetamodel.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +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.resource.ResourceSet; +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +import somemetamodel.A; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.D; +import somemetamodel.E; +import somemetamodel.SomemetamodelPackage; +import somemetamodelextension.X; + +/** + * + * An implementation of the model object 'A'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodel.impl.AImpl#getB B}
  • + *
  • {@link somemetamodel.impl.AImpl#getC C}
  • + *
  • {@link somemetamodel.impl.AImpl#getD D}
  • + *
  • {@link somemetamodel.impl.AImpl#getE E}
  • + *
  • {@link somemetamodel.impl.AImpl#getX X}
  • + *
+ *

+ * + * @generated + */ +public class AImpl extends AbstractShareableEObject implements A { + /** + * The cached value of the '{@link #getB() B}' containment reference. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected B b; + + /** + * The cached value of the '{@link #getC() C}' reference. + * + * + * @see #getC() + * @generated + * @ordered + */ + protected C c; + + /** + * The cached value of the '{@link #getD() D}' reference. + * + * + * @see #getD() + * @generated + * @ordered + */ + protected D d; + + /** + * The cached value of the '{@link #getE() E}' containment reference list. + * + * + * @see #getE() + * @generated + * @ordered + */ + protected EList e; + + /** + * The cached value of the '{@link #getX() X}' reference. + * + * + * @see #getX() + * @generated + * @ordered + */ + protected X x; + + /** + * + * + * @generated + */ + protected AImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.A; + } + + /** + * + * + * @generated + */ + public B getB() { + return b; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetB(B newB, NotificationChain msgs) { + B oldB = b; + b = newB; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, + Notification.SET, SomemetamodelPackage.A__B, oldB, newB); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setB(B newB) { + if (newB != b) { + NotificationChain msgs = null; + if (b != null) + msgs = ((InternalEObject) b).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - SomemetamodelPackage.A__B, + null, msgs); + if (newB != null) + msgs = ((InternalEObject) newB).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - SomemetamodelPackage.A__B, + null, msgs); + msgs = basicSetB(newB, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__B, newB, newB)); + } + + /** + * + * + * @generated + */ + public C getC() { + if (c != null && ((EObject) c).eIsProxy()) { + InternalEObject oldC = (InternalEObject) c; + c = (C) eResolveProxy(oldC); + if (c != oldC) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.A__C, oldC, c)); + } + } + return c; + } + + /** + * + * + * @generated + */ + public C basicGetC() { + return c; + } + + /** + * + * + * @generated + */ + public void setC(C newC) { + C oldC = c; + c = newC; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__C, oldC, c)); + } + + /** + * + * + * @generated + */ + public D getD() { + if (d != null && ((EObject) d).eIsProxy()) { + InternalEObject oldD = (InternalEObject) d; + d = (D) eResolveProxy(oldD); + if (d != oldD) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.A__D, oldD, d)); + } + } + return d; + } + + /** + * + * + * @generated + */ + public D basicGetD() { + return d; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetD(D newD, NotificationChain msgs) { + D oldD = d; + d = newD; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, + Notification.SET, SomemetamodelPackage.A__D, oldD, newD); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setD(D newD) { + if (newD != d) { + NotificationChain msgs = null; + if (d != null) + msgs = ((InternalEObject) d).eInverseRemove(this, + SomemetamodelPackage.D__A, D.class, msgs); + if (newD != null) + msgs = ((InternalEObject) newD).eInverseAdd(this, + SomemetamodelPackage.D__A, D.class, msgs); + msgs = basicSetD(newD, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__D, newD, newD)); + } + + /** + * + * + * @generated + */ + public EList getE() { + if (e == null) { + e = new EObjectContainmentEList(E.class, this, + SomemetamodelPackage.A__E); + } + return e; + } + + /** + * + * + * @generated + */ + public X getX() { + if (x != null && ((EObject) x).eIsProxy()) { + InternalEObject oldX = (InternalEObject) x; + x = (X) eResolveProxy(oldX); + if (x != oldX) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.A__X, oldX, x)); + } + } + return x; + } + + /** + * + * + * @generated + */ + public X basicGetX() { + return x; + } + + /** + * + * + * @generated + */ + public void setX(X newX) { + X oldX = x; + x = newX; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__X, oldX, x)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.A__D: + if (d != null) + msgs = ((InternalEObject) d).eInverseRemove(this, + SomemetamodelPackage.D__A, D.class, msgs); + return basicSetD((D) otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return basicSetB(null, msgs); + case SomemetamodelPackage.A__D: + return basicSetD(null, msgs); + case SomemetamodelPackage.A__E: + return ((InternalEList) getE()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return getB(); + case SomemetamodelPackage.A__C: + if (resolve) + return getC(); + return basicGetC(); + case SomemetamodelPackage.A__D: + if (resolve) + return getD(); + return basicGetD(); + case SomemetamodelPackage.A__E: + return getE(); + case SomemetamodelPackage.A__X: + if (resolve) + return getX(); + return basicGetX(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.A__B: + setB((B) newValue); + return; + case SomemetamodelPackage.A__C: + setC((C) newValue); + return; + case SomemetamodelPackage.A__D: + setD((D) newValue); + return; + case SomemetamodelPackage.A__E: + getE().clear(); + getE().addAll((Collection) newValue); + return; + case SomemetamodelPackage.A__X: + setX((X) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.A__B: + setB((B) null); + return; + case SomemetamodelPackage.A__C: + setC((C) null); + return; + case SomemetamodelPackage.A__D: + setD((D) null); + return; + case SomemetamodelPackage.A__E: + getE().clear(); + return; + case SomemetamodelPackage.A__X: + setX((X) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return b != null; + case SomemetamodelPackage.A__C: + return c != null; + case SomemetamodelPackage.A__D: + return d != null; + case SomemetamodelPackage.A__E: + return e != null && !e.isEmpty(); + case SomemetamodelPackage.A__X: + return x != null; + } + return super.eIsSet(featureID); + } + +} //AImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/BImpl.java b/SomeMetamodel/src/somemetamodel/impl/BImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..c37c982879f4a23bf937c90358dd38c846df010f --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/BImpl.java @@ -0,0 +1,221 @@ +/** + */ +package somemetamodel.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import somemetamodel.B; +import somemetamodel.SomemetamodelPackage; + +/** + * + * An implementation of the model object 'B'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodel.impl.BImpl#getN1_m N1 m}
  • + *
  • {@link somemetamodel.impl.BImpl#getN2 N2}
  • + *
+ *

+ * + * @generated + */ +public class BImpl extends AbstractShareableEObject implements B { + /** + * The default value of the '{@link #getN1_m() N1 m}' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected static final int N1_M_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getN1_m() N1 m}' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected int n1_m = N1_M_EDEFAULT; + + /** + * The default value of the '{@link #getN2() N2}' attribute. + * + * + * @see #getN2() + * @generated + * @ordered + */ + protected static final byte N2_EDEFAULT = 0x00; + + /** + * The cached value of the '{@link #getN2() N2}' attribute. + * + * + * @see #getN2() + * @generated + * @ordered + */ + protected byte n2 = N2_EDEFAULT; + + /** + * + * + * @generated + */ + protected BImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.B; + } + + /** + * + * + * @generated + */ + public int getN1_m() { + return n1_m; + } + + /** + * + * + * @generated + */ + public void setN1_m(int newN1_m) { + int oldN1_m = n1_m; + n1_m = newN1_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.B__N1_M, oldN1_m, n1_m)); + } + + /** + * + * + * @generated + */ + public byte getN2() { + return n2; + } + + /** + * + * + * @generated + */ + public void setN2(byte newN2) { + byte oldN2 = n2; + n2 = newN2; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.B__N2, oldN2, n2)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return getN1_m(); + case SomemetamodelPackage.B__N2: + return getN2(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m((Integer) newValue); + return; + case SomemetamodelPackage.B__N2: + setN2((Byte) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m(N1_M_EDEFAULT); + return; + case SomemetamodelPackage.B__N2: + setN2(N2_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return n1_m != N1_M_EDEFAULT; + case SomemetamodelPackage.B__N2: + return n2 != N2_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (n1_m: "); + result.append(n1_m); + result.append(", n2: "); + result.append(n2); + result.append(')'); + return result.toString(); + } + +} //BImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/CImpl.java b/SomeMetamodel/src/somemetamodel/impl/CImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..bbb0dd159711ea2f43fafca9be0c367f40fce5c5 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/CImpl.java @@ -0,0 +1,166 @@ +/** + */ +package somemetamodel.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import somemetamodel.C; +import somemetamodel.SomemetamodelPackage; + +/** + * + * An implementation of the model object 'C'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodel.impl.CImpl#getYay_m Yay m}
  • + *
+ *

+ * + * @generated + */ +public class CImpl extends AbstractShareableEObject implements C { + /** + * The default value of the '{@link #getYay_m() Yay m}' attribute. + * + * + * @see #getYay_m() + * @generated + * @ordered + */ + protected static final int YAY_M_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getYay_m() Yay m}' attribute. + * + * + * @see #getYay_m() + * @generated + * @ordered + */ + protected int yay_m = YAY_M_EDEFAULT; + + /** + * + * + * @generated + */ + protected CImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.C; + } + + /** + * + * + * @generated + */ + public int getYay_m() { + return yay_m; + } + + /** + * + * + * @generated + */ + public void setYay_m(int newYay_m) { + int oldYay_m = yay_m; + yay_m = newYay_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.C__YAY_M, oldYay_m, yay_m)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.C__YAY_M: + return getYay_m(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.C__YAY_M: + setYay_m((Integer) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.C__YAY_M: + setYay_m(YAY_M_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.C__YAY_M: + return yay_m != YAY_M_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (yay_m: "); + result.append(yay_m); + result.append(')'); + return result.toString(); + } + +} //CImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/DImpl.java b/SomeMetamodel/src/somemetamodel/impl/DImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..5de980633e054370d9ba75df1f8a036f8b9ae755 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/DImpl.java @@ -0,0 +1,224 @@ +/** + */ +package somemetamodel.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +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 somemetamodel.A; +import somemetamodel.D; +import somemetamodel.SomemetamodelPackage; + +/** + * + * An implementation of the model object 'D'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodel.impl.DImpl#getA A}
  • + *
+ *

+ * + * @generated + */ +public class DImpl extends AbstractShareableEObject implements D { + /** + * The cached value of the '{@link #getA() A}' reference. + * + * + * @see #getA() + * @generated + * @ordered + */ + protected A a; + + /** + * + * + * @generated + */ + protected DImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.D; + } + + /** + * + * + * @generated + */ + public A getA() { + if (a != null && ((EObject) a).eIsProxy()) { + InternalEObject oldA = (InternalEObject) a; + a = (A) eResolveProxy(oldA); + if (a != oldA) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.D__A, oldA, a)); + } + } + return a; + } + + /** + * + * + * @generated + */ + public A basicGetA() { + return a; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetA(A newA, NotificationChain msgs) { + A oldA = a; + a = newA; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, + Notification.SET, SomemetamodelPackage.D__A, oldA, newA); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setA(A newA) { + if (newA != a) { + NotificationChain msgs = null; + if (a != null) + msgs = ((InternalEObject) a).eInverseRemove(this, + SomemetamodelPackage.A__D, A.class, msgs); + if (newA != null) + msgs = ((InternalEObject) newA).eInverseAdd(this, + SomemetamodelPackage.A__D, A.class, msgs); + msgs = basicSetA(newA, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.D__A, newA, newA)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.D__A: + if (a != null) + msgs = ((InternalEObject) a).eInverseRemove(this, + SomemetamodelPackage.A__D, A.class, msgs); + return basicSetA((A) otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.D__A: + return basicSetA(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.D__A: + if (resolve) + return getA(); + return basicGetA(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.D__A: + setA((A) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.D__A: + setA((A) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.D__A: + return a != null; + } + return super.eIsSet(featureID); + } + +} //DImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/EImpl.java b/SomeMetamodel/src/somemetamodel/impl/EImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..cf94113b6cc7ba053634a9801b460f7049645816 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/EImpl.java @@ -0,0 +1,41 @@ +/** + */ +package somemetamodel.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import org.eclipse.emf.ecore.EClass; + +import somemetamodel.E; +import somemetamodel.SomemetamodelPackage; + +/** + * + * An implementation of the model object 'E'. + * + *

+ *

+ * + * @generated + */ +public class EImpl extends AbstractShareableEObject implements E { + /** + * + * + * @generated + */ + protected EImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.E; + } + +} //EImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/SomemetamodelFactoryImpl.java b/SomeMetamodel/src/somemetamodel/impl/SomemetamodelFactoryImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..0f3517f2f3b7c4a77d2945d0a85842d80975ca9d --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/SomemetamodelFactoryImpl.java @@ -0,0 +1,146 @@ +/** + */ +package somemetamodel.impl; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +import somemetamodel.*; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class SomemetamodelFactoryImpl extends EFactoryImpl implements + SomemetamodelFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static SomemetamodelFactory init() { + try { + SomemetamodelFactory theSomemetamodelFactory = (SomemetamodelFactory) EPackage.Registry.INSTANCE + .getEFactory(SomemetamodelPackage.eNS_URI); + if (theSomemetamodelFactory != null) { + return theSomemetamodelFactory; + } + } catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new SomemetamodelFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public SomemetamodelFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case SomemetamodelPackage.A: + return (EObject) createA(); + case SomemetamodelPackage.B: + return (EObject) createB(); + case SomemetamodelPackage.C: + return (EObject) createC(); + case SomemetamodelPackage.D: + return (EObject) createD(); + case SomemetamodelPackage.E: + return (EObject) createE(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public A createA() { + AImpl a = new AImpl(); + return a; + } + + /** + * + * + * @generated + */ + public B createB() { + BImpl b = new BImpl(); + return b; + } + + /** + * + * + * @generated + */ + public C createC() { + CImpl c = new CImpl(); + return c; + } + + /** + * + * + * @generated + */ + public D createD() { + DImpl d = new DImpl(); + return d; + } + + /** + * + * + * @generated + */ + public E createE() { + EImpl e = new EImpl(); + return e; + } + + /** + * + * + * @generated + */ + public SomemetamodelPackage getSomemetamodelPackage() { + return (SomemetamodelPackage) getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static SomemetamodelPackage getPackage() { + return SomemetamodelPackage.eINSTANCE; + } + +} //SomemetamodelFactoryImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/SomemetamodelPackageImpl.java b/SomeMetamodel/src/somemetamodel/impl/SomemetamodelPackageImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..bbba60cd574f031bd2daabd9786b395866809d03 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/SomemetamodelPackageImpl.java @@ -0,0 +1,409 @@ +/** + */ +package somemetamodel.impl; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +import somemetamodel.SomemetamodelFactory; +import somemetamodel.SomemetamodelPackage; + +import somemetamodelextension.SomemetamodelextensionPackage; + +import somemetamodelextension.hidden.HiddenPackage; + +import somemetamodelextension.hidden.impl.HiddenPackageImpl; + +import somemetamodelextension.impl.SomemetamodelextensionPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class SomemetamodelPackageImpl extends EPackageImpl implements + SomemetamodelPackage { + /** + * + * + * @generated + */ + private EClass aEClass = null; + + /** + * + * + * @generated + */ + private EClass bEClass = null; + + /** + * + * + * @generated + */ + private EClass cEClass = null; + + /** + * + * + * @generated + */ + private EClass dEClass = null; + + /** + * + * + * @generated + */ + private EClass eEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see somemetamodel.SomemetamodelPackage#eNS_URI + * @see #init() + * @generated + */ + private SomemetamodelPackageImpl() { + super(eNS_URI, SomemetamodelFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link SomemetamodelPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static SomemetamodelPackage init() { + if (isInited) + return (SomemetamodelPackage) EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelPackage.eNS_URI); + + // Obtain or create and register package + SomemetamodelPackageImpl theSomemetamodelPackage = (SomemetamodelPackageImpl) (EPackage.Registry.INSTANCE + .get(eNS_URI) instanceof SomemetamodelPackageImpl ? EPackage.Registry.INSTANCE + .get(eNS_URI) : new SomemetamodelPackageImpl()); + + isInited = true; + + // Obtain or create and register interdependencies + SomemetamodelextensionPackageImpl theSomemetamodelextensionPackage = (SomemetamodelextensionPackageImpl) (EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelextensionPackage.eNS_URI) instanceof SomemetamodelextensionPackageImpl ? EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelextensionPackage.eNS_URI) + : SomemetamodelextensionPackage.eINSTANCE); + HiddenPackageImpl theHiddenPackage = (HiddenPackageImpl) (EPackage.Registry.INSTANCE + .getEPackage(HiddenPackage.eNS_URI) instanceof HiddenPackageImpl ? EPackage.Registry.INSTANCE + .getEPackage(HiddenPackage.eNS_URI) : HiddenPackage.eINSTANCE); + + // Create package meta-data objects + theSomemetamodelPackage.createPackageContents(); + theSomemetamodelextensionPackage.createPackageContents(); + theHiddenPackage.createPackageContents(); + + // Initialize created meta-data + theSomemetamodelPackage.initializePackageContents(); + theSomemetamodelextensionPackage.initializePackageContents(); + theHiddenPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theSomemetamodelPackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(SomemetamodelPackage.eNS_URI, + theSomemetamodelPackage); + return theSomemetamodelPackage; + } + + /** + * + * + * @generated + */ + public EClass getA() { + return aEClass; + } + + /** + * + * + * @generated + */ + public EReference getA_B() { + return (EReference) aEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getA_C() { + return (EReference) aEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EReference getA_D() { + return (EReference) aEClass.getEStructuralFeatures().get(2); + } + + /** + * + * + * @generated + */ + public EReference getA_E() { + return (EReference) aEClass.getEStructuralFeatures().get(3); + } + + /** + * + * + * @generated + */ + public EReference getA_X() { + return (EReference) aEClass.getEStructuralFeatures().get(4); + } + + /** + * + * + * @generated + */ + public EClass getB() { + return bEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getB_N1_m() { + return (EAttribute) bEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EAttribute getB_N2() { + return (EAttribute) bEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getC() { + return cEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getC_Yay_m() { + return (EAttribute) cEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getD() { + return dEClass; + } + + /** + * + * + * @generated + */ + public EReference getD_A() { + return (EReference) dEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getE() { + return eEClass; + } + + /** + * + * + * @generated + */ + public SomemetamodelFactory getSomemetamodelFactory() { + return (SomemetamodelFactory) getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() { + if (isCreated) + return; + isCreated = true; + + // Create classes and their features + aEClass = createEClass(A); + createEReference(aEClass, A__B); + createEReference(aEClass, A__C); + createEReference(aEClass, A__D); + createEReference(aEClass, A__E); + createEReference(aEClass, A__X); + + bEClass = createEClass(B); + createEAttribute(bEClass, B__N1_M); + createEAttribute(bEClass, B__N2); + + cEClass = createEClass(C); + createEAttribute(cEClass, C__YAY_M); + + dEClass = createEClass(D); + createEReference(dEClass, D__A); + + eEClass = createEClass(E); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() { + if (isInitialized) + return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Obtain other dependent packages + SomemetamodelextensionPackage theSomemetamodelextensionPackage = (SomemetamodelextensionPackage) EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelextensionPackage.eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + + // Initialize classes, features, and operations; add parameters + initEClass(aEClass, somemetamodel.A.class, "A", !IS_ABSTRACT, + !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getA_B(), this.getB(), null, "b", null, 0, 1, + somemetamodel.A.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getA_C(), this.getC(), null, "c", null, 0, 1, + somemetamodel.A.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getA_D(), this.getD(), this.getD_A(), "d", null, 0, 1, + somemetamodel.A.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getA_E(), this.getE(), null, "e", null, 0, -1, + somemetamodel.A.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getA_X(), theSomemetamodelextensionPackage.getX(), null, + "x", null, 0, 1, somemetamodel.A.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(bEClass, somemetamodel.B.class, "B", !IS_ABSTRACT, + !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getB_N1_m(), ecorePackage.getEInt(), "n1_m", null, 0, 1, + somemetamodel.B.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, + IS_ORDERED); + initEAttribute(getB_N2(), ecorePackage.getEByte(), "n2", null, 0, 1, + somemetamodel.B.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, + IS_ORDERED); + + initEClass(cEClass, somemetamodel.C.class, "C", !IS_ABSTRACT, + !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getC_Yay_m(), ecorePackage.getEInt(), "yay_m", null, 0, + 1, somemetamodel.C.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, + IS_ORDERED); + + initEClass(dEClass, somemetamodel.D.class, "D", !IS_ABSTRACT, + !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getD_A(), this.getA(), this.getA_D(), "a", null, 0, 1, + somemetamodel.D.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(eEClass, somemetamodel.E.class, "E", !IS_ABSTRACT, + !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + // Create resource + createResource(eNS_URI); + } + +} //SomemetamodelPackageImpl diff --git a/SomeMetamodel/src/somemetamodel/util/SomemetamodelAdapterFactory.java b/SomeMetamodel/src/somemetamodel/util/SomemetamodelAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..964e3c09bdcd402c545abe1632212f5595788730 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/util/SomemetamodelAdapterFactory.java @@ -0,0 +1,195 @@ +/** + */ +package somemetamodel.util; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +import somemetamodel.*; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see somemetamodel.SomemetamodelPackage + * @generated + */ +public class SomemetamodelAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static SomemetamodelPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public SomemetamodelAdapterFactory() { + if (modelPackage == null) { + modelPackage = SomemetamodelPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject) object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected SomemetamodelSwitch modelSwitch = new SomemetamodelSwitch() { + @Override + public Adapter caseA(A object) { + return createAAdapter(); + } + + @Override + public Adapter caseB(B object) { + return createBAdapter(); + } + + @Override + public Adapter caseC(C object) { + return createCAdapter(); + } + + @Override + public Adapter caseD(D object) { + return createDAdapter(); + } + + @Override + public Adapter caseE(E object) { + return createEAdapter(); + } + + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject) target); + } + + /** + * Creates a new adapter for an object of class '{@link somemetamodel.A A}'. + * + * 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. + * + * @return the new adapter. + * @see somemetamodel.A + * @generated + */ + public Adapter createAAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link somemetamodel.B B}'. + * + * 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. + * + * @return the new adapter. + * @see somemetamodel.B + * @generated + */ + public Adapter createBAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link somemetamodel.C C}'. + * + * 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. + * + * @return the new adapter. + * @see somemetamodel.C + * @generated + */ + public Adapter createCAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link somemetamodel.D D}'. + * + * 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. + * + * @return the new adapter. + * @see somemetamodel.D + * @generated + */ + public Adapter createDAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link somemetamodel.E E}'. + * + * 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. + * + * @return the new adapter. + * @see somemetamodel.E + * @generated + */ + public Adapter createEAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //SomemetamodelAdapterFactory diff --git a/SomeMetamodel/src/somemetamodel/util/SomemetamodelSwitch.java b/SomeMetamodel/src/somemetamodel/util/SomemetamodelSwitch.java new file mode 100644 index 0000000000000000000000000000000000000000..04bda1ce07da50e98eb766760c15108090eb98e8 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/util/SomemetamodelSwitch.java @@ -0,0 +1,200 @@ +/** + */ +package somemetamodel.util; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +import somemetamodel.*; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see somemetamodel.SomemetamodelPackage + * @generated + */ +public class SomemetamodelSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static SomemetamodelPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public SomemetamodelSwitch() { + if (modelPackage == null) { + modelPackage = SomemetamodelPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @parameter ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case SomemetamodelPackage.A: { + A a = (A) theEObject; + T result = caseA(a); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case SomemetamodelPackage.B: { + B b = (B) theEObject; + T result = caseB(b); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case SomemetamodelPackage.C: { + C c = (C) theEObject; + T result = caseC(c); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case SomemetamodelPackage.D: { + D d = (D) theEObject; + T result = caseD(d); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case SomemetamodelPackage.E: { + E e = (E) theEObject; + T result = caseE(e); + if (result == null) + result = defaultCase(theEObject); + return result; + } + default: + return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'A'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'A'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseA(A object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'B'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'B'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseB(B object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'C'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'C'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseC(C object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'D'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'D'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseD(D object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'E'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'E'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseE(E object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //SomemetamodelSwitch diff --git a/SomeMetamodel/src/somemetamodelextension/R.java b/SomeMetamodel/src/somemetamodelextension/R.java new file mode 100644 index 0000000000000000000000000000000000000000..87e8b2dfe7606e023c901b6ace717ef5a148f594 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/R.java @@ -0,0 +1,78 @@ +/** + */ +package somemetamodelextension; + +import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject; + +/** + * + * A representation of the model object 'R'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link somemetamodelextension.R#getA_m Am}
  • + *
  • {@link somemetamodelextension.R#getB B}
  • + *
+ *

+ * + * @see somemetamodelextension.SomemetamodelextensionPackage#getR() + * @model + * @extends ShareableEObject + * @generated + */ +public interface R extends ShareableEObject { + /** + * Returns the value of the 'Am' attribute. + * + *

+ * If the meaning of the 'Am' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Am' attribute. + * @see #setA_m(int) + * @see somemetamodelextension.SomemetamodelextensionPackage#getR_A_m() + * @model + * @generated + */ + int getA_m(); + + /** + * Sets the value of the '{@link somemetamodelextension.R#getA_m Am}' attribute. + * + * + * @param value the new value of the 'Am' attribute. + * @see #getA_m() + * @generated + */ + void setA_m(int value); + + /** + * Returns the value of the 'B' attribute. + * + *

+ * If the meaning of the 'B' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'B' attribute. + * @see #setB(int) + * @see somemetamodelextension.SomemetamodelextensionPackage#getR_B() + * @model + * @generated + */ + int getB(); + + /** + * Sets the value of the '{@link somemetamodelextension.R#getB B}' attribute. + * + * + * @param value the new value of the 'B' attribute. + * @see #getB() + * @generated + */ + void setB(int value); + +} // R diff --git a/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionFactory.java b/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..f655d23704be5ccf640e751ca483a23c3266258e --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionFactory.java @@ -0,0 +1,52 @@ +/** + */ +package somemetamodelextension; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see somemetamodelextension.SomemetamodelextensionPackage + * @generated + */ +public interface SomemetamodelextensionFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + SomemetamodelextensionFactory eINSTANCE = somemetamodelextension.impl.SomemetamodelextensionFactoryImpl + .init(); + + /** + * Returns a new object of class 'X'. + * + * + * @return a new object of class 'X'. + * @generated + */ + X createX(); + + /** + * Returns a new object of class 'R'. + * + * + * @return a new object of class 'R'. + * @generated + */ + R createR(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + SomemetamodelextensionPackage getSomemetamodelextensionPackage(); + +} //SomemetamodelextensionFactory diff --git a/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionPackage.java b/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionPackage.java new file mode 100644 index 0000000000000000000000000000000000000000..15d7dc4436536a3abdecb46164d991674c959d9f --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionPackage.java @@ -0,0 +1,236 @@ +/** + */ +package somemetamodelextension; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see somemetamodelextension.SomemetamodelextensionFactory + * @model kind="package" + * @generated + */ +public interface SomemetamodelextensionPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "somemetamodelextension"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "http://somemetamodelextension/1.0"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "somemetamodelextension"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + SomemetamodelextensionPackage eINSTANCE = somemetamodelextension.impl.SomemetamodelextensionPackageImpl + .init(); + + /** + * The meta object id for the '{@link somemetamodelextension.impl.XImpl X}' class. + * + * + * @see somemetamodelextension.impl.XImpl + * @see somemetamodelextension.impl.SomemetamodelextensionPackageImpl#getX() + * @generated + */ + int X = 0; + + /** + * The number of structural features of the 'X' class. + * + * + * @generated + * @ordered + */ + int X_FEATURE_COUNT = 0; + + /** + * The number of operations of the 'X' class. + * + * + * @generated + * @ordered + */ + int X_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link somemetamodelextension.impl.RImpl R}' class. + * + * + * @see somemetamodelextension.impl.RImpl + * @see somemetamodelextension.impl.SomemetamodelextensionPackageImpl#getR() + * @generated + */ + int R = 1; + + /** + * The feature id for the 'Am' attribute. + * + * + * @generated + * @ordered + */ + int R__AM = 0; + + /** + * The feature id for the 'B' attribute. + * + * + * @generated + * @ordered + */ + int R__B = 1; + + /** + * The number of structural features of the 'R' class. + * + * + * @generated + * @ordered + */ + int R_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'R' class. + * + * + * @generated + * @ordered + */ + int R_OPERATION_COUNT = 0; + + /** + * Returns the meta object for class '{@link somemetamodelextension.X X}'. + * + * + * @return the meta object for class 'X'. + * @see somemetamodelextension.X + * @generated + */ + EClass getX(); + + /** + * Returns the meta object for class '{@link somemetamodelextension.R R}'. + * + * + * @return the meta object for class 'R'. + * @see somemetamodelextension.R + * @generated + */ + EClass getR(); + + /** + * Returns the meta object for the attribute '{@link somemetamodelextension.R#getA_m Am}'. + * + * + * @return the meta object for the attribute 'Am'. + * @see somemetamodelextension.R#getA_m() + * @see #getR() + * @generated + */ + EAttribute getR_A_m(); + + /** + * Returns the meta object for the attribute '{@link somemetamodelextension.R#getB B}'. + * + * + * @return the meta object for the attribute 'B'. + * @see somemetamodelextension.R#getB() + * @see #getR() + * @generated + */ + EAttribute getR_B(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + SomemetamodelextensionFactory getSomemetamodelextensionFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link somemetamodelextension.impl.XImpl X}' class. + * + * + * @see somemetamodelextension.impl.XImpl + * @see somemetamodelextension.impl.SomemetamodelextensionPackageImpl#getX() + * @generated + */ + EClass X = eINSTANCE.getX(); + + /** + * The meta object literal for the '{@link somemetamodelextension.impl.RImpl R}' class. + * + * + * @see somemetamodelextension.impl.RImpl + * @see somemetamodelextension.impl.SomemetamodelextensionPackageImpl#getR() + * @generated + */ + EClass R = eINSTANCE.getR(); + + /** + * The meta object literal for the 'Am' attribute feature. + * + * + * @generated + */ + EAttribute R__AM = eINSTANCE.getR_A_m(); + + /** + * The meta object literal for the 'B' attribute feature. + * + * + * @generated + */ + EAttribute R__B = eINSTANCE.getR_B(); + + } + +} //SomemetamodelextensionPackage diff --git a/SomeMetamodel/src/somemetamodelextension/X.java b/SomeMetamodel/src/somemetamodelextension/X.java new file mode 100644 index 0000000000000000000000000000000000000000..4ebaa0f221b532858840debc9fe7b7870c7ad020 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/X.java @@ -0,0 +1,19 @@ +/** + */ +package somemetamodelextension; + +import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject; + +/** + * + * A representation of the model object 'X'. + * + * + * + * @see somemetamodelextension.SomemetamodelextensionPackage#getX() + * @model + * @extends ShareableEObject + * @generated + */ +public interface X extends ShareableEObject { +} // X diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/HiddenFactory.java b/SomeMetamodel/src/somemetamodelextension/hidden/HiddenFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..869326e11e84898c0d909388b30949ff2be0a1c1 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/HiddenFactory.java @@ -0,0 +1,52 @@ +/** + */ +package somemetamodelextension.hidden; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see somemetamodelextension.hidden.HiddenPackage + * @generated + */ +public interface HiddenFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + HiddenFactory eINSTANCE = somemetamodelextension.hidden.impl.HiddenFactoryImpl + .init(); + + /** + * Returns a new object of class 'Y'. + * + * + * @return a new object of class 'Y'. + * @generated + */ + Y createY(); + + /** + * Returns a new object of class 'Z'. + * + * + * @return a new object of class 'Z'. + * @generated + */ + Z createZ(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + HiddenPackage getHiddenPackage(); + +} //HiddenFactory diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/HiddenPackage.java b/SomeMetamodel/src/somemetamodelextension/hidden/HiddenPackage.java new file mode 100644 index 0000000000000000000000000000000000000000..acbb9260bfaa5b046a9b29c32c117c27178d200c --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/HiddenPackage.java @@ -0,0 +1,265 @@ +/** + */ +package somemetamodelextension.hidden; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see somemetamodelextension.hidden.HiddenFactory + * @model kind="package" + * @generated + */ +public interface HiddenPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "hidden"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "http://somemetamodelextension/1.0/hidden"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "hidden"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + HiddenPackage eINSTANCE = somemetamodelextension.hidden.impl.HiddenPackageImpl + .init(); + + /** + * The meta object id for the '{@link somemetamodelextension.hidden.impl.YImpl Y}' class. + * + * + * @see somemetamodelextension.hidden.impl.YImpl + * @see somemetamodelextension.hidden.impl.HiddenPackageImpl#getY() + * @generated + */ + int Y = 0; + + /** + * The feature id for the 'Z' reference. + * + * + * @generated + * @ordered + */ + int Y__Z = 0; + + /** + * The number of structural features of the 'Y' class. + * + * + * @generated + * @ordered + */ + int Y_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Y' class. + * + * + * @generated + * @ordered + */ + int Y_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link somemetamodelextension.hidden.impl.ZImpl Z}' class. + * + * + * @see somemetamodelextension.hidden.impl.ZImpl + * @see somemetamodelextension.hidden.impl.HiddenPackageImpl#getZ() + * @generated + */ + int Z = 1; + + /** + * The feature id for the 'Y' reference. + * + * + * @generated + * @ordered + */ + int Z__Y = 0; + + /** + * The feature id for the 'Im' attribute. + * + * + * @generated + * @ordered + */ + int Z__IM = 1; + + /** + * The number of structural features of the 'Z' class. + * + * + * @generated + * @ordered + */ + int Z_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Z' class. + * + * + * @generated + * @ordered + */ + int Z_OPERATION_COUNT = 0; + + /** + * Returns the meta object for class '{@link somemetamodelextension.hidden.Y Y}'. + * + * + * @return the meta object for class 'Y'. + * @see somemetamodelextension.hidden.Y + * @generated + */ + EClass getY(); + + /** + * Returns the meta object for the reference '{@link somemetamodelextension.hidden.Y#getZ Z}'. + * + * + * @return the meta object for the reference 'Z'. + * @see somemetamodelextension.hidden.Y#getZ() + * @see #getY() + * @generated + */ + EReference getY_Z(); + + /** + * Returns the meta object for class '{@link somemetamodelextension.hidden.Z Z}'. + * + * + * @return the meta object for class 'Z'. + * @see somemetamodelextension.hidden.Z + * @generated + */ + EClass getZ(); + + /** + * Returns the meta object for the reference '{@link somemetamodelextension.hidden.Z#getY Y}'. + * + * + * @return the meta object for the reference 'Y'. + * @see somemetamodelextension.hidden.Z#getY() + * @see #getZ() + * @generated + */ + EReference getZ_Y(); + + /** + * Returns the meta object for the attribute '{@link somemetamodelextension.hidden.Z#getI_m Im}'. + * + * + * @return the meta object for the attribute 'Im'. + * @see somemetamodelextension.hidden.Z#getI_m() + * @see #getZ() + * @generated + */ + EAttribute getZ_I_m(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + HiddenFactory getHiddenFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link somemetamodelextension.hidden.impl.YImpl Y}' class. + * + * + * @see somemetamodelextension.hidden.impl.YImpl + * @see somemetamodelextension.hidden.impl.HiddenPackageImpl#getY() + * @generated + */ + EClass Y = eINSTANCE.getY(); + + /** + * The meta object literal for the 'Z' reference feature. + * + * + * @generated + */ + EReference Y__Z = eINSTANCE.getY_Z(); + + /** + * The meta object literal for the '{@link somemetamodelextension.hidden.impl.ZImpl Z}' class. + * + * + * @see somemetamodelextension.hidden.impl.ZImpl + * @see somemetamodelextension.hidden.impl.HiddenPackageImpl#getZ() + * @generated + */ + EClass Z = eINSTANCE.getZ(); + + /** + * The meta object literal for the 'Y' reference feature. + * + * + * @generated + */ + EReference Z__Y = eINSTANCE.getZ_Y(); + + /** + * The meta object literal for the 'Im' attribute feature. + * + * + * @generated + */ + EAttribute Z__IM = eINSTANCE.getZ_I_m(); + + } + +} //HiddenPackage diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/Y.java b/SomeMetamodel/src/somemetamodelextension/hidden/Y.java new file mode 100644 index 0000000000000000000000000000000000000000..525a028481a58044aa8bd49db11e79f78f7b179d --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/Y.java @@ -0,0 +1,51 @@ +/** + */ +package somemetamodelextension.hidden; + +import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject; + +/** + * + * A representation of the model object 'Y'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link somemetamodelextension.hidden.Y#getZ Z}
  • + *
+ *

+ * + * @see somemetamodelextension.hidden.HiddenPackage#getY() + * @model + * @extends ShareableEObject + * @generated + */ +public interface Y extends ShareableEObject { + /** + * Returns the value of the 'Z' reference. + * + *

+ * If the meaning of the 'Z' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Z' reference. + * @see #setZ(Z) + * @see somemetamodelextension.hidden.HiddenPackage#getY_Z() + * @model + * @generated + */ + Z getZ(); + + /** + * Sets the value of the '{@link somemetamodelextension.hidden.Y#getZ Z}' reference. + * + * + * @param value the new value of the 'Z' reference. + * @see #getZ() + * @generated + */ + void setZ(Z value); + +} // Y diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/Z.java b/SomeMetamodel/src/somemetamodelextension/hidden/Z.java new file mode 100644 index 0000000000000000000000000000000000000000..50a3c04bf4f3b3ae9d5759c07d449a6f4f699a70 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/Z.java @@ -0,0 +1,78 @@ +/** + */ +package somemetamodelextension.hidden; + +import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject; + +/** + * + * A representation of the model object 'Z'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link somemetamodelextension.hidden.Z#getY Y}
  • + *
  • {@link somemetamodelextension.hidden.Z#getI_m Im}
  • + *
+ *

+ * + * @see somemetamodelextension.hidden.HiddenPackage#getZ() + * @model + * @extends ShareableEObject + * @generated + */ +public interface Z extends ShareableEObject { + /** + * Returns the value of the 'Y' reference. + * + *

+ * If the meaning of the 'Y' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Y' reference. + * @see #setY(Y) + * @see somemetamodelextension.hidden.HiddenPackage#getZ_Y() + * @model + * @generated + */ + Y getY(); + + /** + * Sets the value of the '{@link somemetamodelextension.hidden.Z#getY Y}' reference. + * + * + * @param value the new value of the 'Y' reference. + * @see #getY() + * @generated + */ + void setY(Y value); + + /** + * Returns the value of the 'Im' attribute. + * + *

+ * If the meaning of the 'Im' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Im' attribute. + * @see #setI_m(String) + * @see somemetamodelextension.hidden.HiddenPackage#getZ_I_m() + * @model + * @generated + */ + String getI_m(); + + /** + * Sets the value of the '{@link somemetamodelextension.hidden.Z#getI_m Im}' attribute. + * + * + * @param value the new value of the 'Im' attribute. + * @see #getI_m() + * @generated + */ + void setI_m(String value); + +} // Z diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenFactoryImpl.java b/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenFactoryImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..41814cc9d7b8ff3571d8e88914d40918b7ad7ec2 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenFactoryImpl.java @@ -0,0 +1,109 @@ +/** + */ +package somemetamodelextension.hidden.impl; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +import somemetamodelextension.hidden.*; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class HiddenFactoryImpl extends EFactoryImpl implements HiddenFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static HiddenFactory init() { + try { + HiddenFactory theHiddenFactory = (HiddenFactory) EPackage.Registry.INSTANCE + .getEFactory(HiddenPackage.eNS_URI); + if (theHiddenFactory != null) { + return theHiddenFactory; + } + } catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new HiddenFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public HiddenFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case HiddenPackage.Y: + return (EObject) createY(); + case HiddenPackage.Z: + return (EObject) createZ(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public Y createY() { + YImpl y = new YImpl(); + return y; + } + + /** + * + * + * @generated + */ + public Z createZ() { + ZImpl z = new ZImpl(); + return z; + } + + /** + * + * + * @generated + */ + public HiddenPackage getHiddenPackage() { + return (HiddenPackage) getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static HiddenPackage getPackage() { + return HiddenPackage.eINSTANCE; + } + +} //HiddenFactoryImpl diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenPackageImpl.java b/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenPackageImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..780cd2468c1fffe74ac18cf53689e6a90bec1499 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenPackageImpl.java @@ -0,0 +1,254 @@ +/** + */ +package somemetamodelextension.hidden.impl; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +import somemetamodel.SomemetamodelPackage; + +import somemetamodel.impl.SomemetamodelPackageImpl; + +import somemetamodelextension.SomemetamodelextensionPackage; + +import somemetamodelextension.hidden.HiddenFactory; +import somemetamodelextension.hidden.HiddenPackage; + +import somemetamodelextension.impl.SomemetamodelextensionPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class HiddenPackageImpl extends EPackageImpl implements HiddenPackage { + /** + * + * + * @generated + */ + private EClass yEClass = null; + + /** + * + * + * @generated + */ + private EClass zEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see somemetamodelextension.hidden.HiddenPackage#eNS_URI + * @see #init() + * @generated + */ + private HiddenPackageImpl() { + super(eNS_URI, HiddenFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link HiddenPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static HiddenPackage init() { + if (isInited) + return (HiddenPackage) EPackage.Registry.INSTANCE + .getEPackage(HiddenPackage.eNS_URI); + + // Obtain or create and register package + HiddenPackageImpl theHiddenPackage = (HiddenPackageImpl) (EPackage.Registry.INSTANCE + .get(eNS_URI) instanceof HiddenPackageImpl ? EPackage.Registry.INSTANCE + .get(eNS_URI) : new HiddenPackageImpl()); + + isInited = true; + + // Obtain or create and register interdependencies + SomemetamodelPackageImpl theSomemetamodelPackage = (SomemetamodelPackageImpl) (EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelPackage.eNS_URI) instanceof SomemetamodelPackageImpl ? EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelPackage.eNS_URI) + : SomemetamodelPackage.eINSTANCE); + SomemetamodelextensionPackageImpl theSomemetamodelextensionPackage = (SomemetamodelextensionPackageImpl) (EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelextensionPackage.eNS_URI) instanceof SomemetamodelextensionPackageImpl ? EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelextensionPackage.eNS_URI) + : SomemetamodelextensionPackage.eINSTANCE); + + // Create package meta-data objects + theHiddenPackage.createPackageContents(); + theSomemetamodelPackage.createPackageContents(); + theSomemetamodelextensionPackage.createPackageContents(); + + // Initialize created meta-data + theHiddenPackage.initializePackageContents(); + theSomemetamodelPackage.initializePackageContents(); + theSomemetamodelextensionPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theHiddenPackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(HiddenPackage.eNS_URI, theHiddenPackage); + return theHiddenPackage; + } + + /** + * + * + * @generated + */ + public EClass getY() { + return yEClass; + } + + /** + * + * + * @generated + */ + public EReference getY_Z() { + return (EReference) yEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getZ() { + return zEClass; + } + + /** + * + * + * @generated + */ + public EReference getZ_Y() { + return (EReference) zEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EAttribute getZ_I_m() { + return (EAttribute) zEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public HiddenFactory getHiddenFactory() { + return (HiddenFactory) getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() { + if (isCreated) + return; + isCreated = true; + + // Create classes and their features + yEClass = createEClass(Y); + createEReference(yEClass, Y__Z); + + zEClass = createEClass(Z); + createEReference(zEClass, Z__Y); + createEAttribute(zEClass, Z__IM); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() { + if (isInitialized) + return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + + // Initialize classes, features, and operations; add parameters + initEClass(yEClass, somemetamodelextension.hidden.Y.class, "Y", + !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getY_Z(), this.getZ(), null, "z", null, 0, 1, + somemetamodelextension.hidden.Y.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(zEClass, somemetamodelextension.hidden.Z.class, "Z", + !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getZ_Y(), this.getY(), null, "y", null, 0, 1, + somemetamodelextension.hidden.Z.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getZ_I_m(), ecorePackage.getEString(), "i_m", null, 0, + 1, somemetamodelextension.hidden.Z.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, + !IS_DERIVED, IS_ORDERED); + } + +} //HiddenPackageImpl diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/impl/YImpl.java b/SomeMetamodel/src/somemetamodelextension/hidden/impl/YImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..129be3ffc9352434dadd5ca482d6991c3f917e1d --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/impl/YImpl.java @@ -0,0 +1,162 @@ +/** + */ +package somemetamodelextension.hidden.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import org.eclipse.emf.common.notify.Notification; + +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 somemetamodelextension.hidden.HiddenPackage; +import somemetamodelextension.hidden.Y; +import somemetamodelextension.hidden.Z; + +/** + * + * An implementation of the model object 'Y'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodelextension.hidden.impl.YImpl#getZ Z}
  • + *
+ *

+ * + * @generated + */ +public class YImpl extends AbstractShareableEObject implements Y { + /** + * The cached value of the '{@link #getZ() Z}' reference. + * + * + * @see #getZ() + * @generated + * @ordered + */ + protected Z z; + + /** + * + * + * @generated + */ + protected YImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return HiddenPackage.Literals.Y; + } + + /** + * + * + * @generated + */ + public Z getZ() { + if (z != null && ((EObject) z).eIsProxy()) { + InternalEObject oldZ = (InternalEObject) z; + z = (Z) eResolveProxy(oldZ); + if (z != oldZ) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + HiddenPackage.Y__Z, oldZ, z)); + } + } + return z; + } + + /** + * + * + * @generated + */ + public Z basicGetZ() { + return z; + } + + /** + * + * + * @generated + */ + public void setZ(Z newZ) { + Z oldZ = z; + z = newZ; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + HiddenPackage.Y__Z, oldZ, z)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case HiddenPackage.Y__Z: + if (resolve) + return getZ(); + return basicGetZ(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case HiddenPackage.Y__Z: + setZ((Z) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case HiddenPackage.Y__Z: + setZ((Z) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case HiddenPackage.Y__Z: + return z != null; + } + return super.eIsSet(featureID); + } + +} //YImpl diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/impl/ZImpl.java b/SomeMetamodel/src/somemetamodelextension/hidden/impl/ZImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..397e734bc78942d410a866f340fbef831733b1bb --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/impl/ZImpl.java @@ -0,0 +1,232 @@ +/** + */ +package somemetamodelextension.hidden.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import org.eclipse.emf.common.notify.Notification; + +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 somemetamodelextension.hidden.HiddenPackage; +import somemetamodelextension.hidden.Y; +import somemetamodelextension.hidden.Z; + +/** + * + * An implementation of the model object 'Z'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodelextension.hidden.impl.ZImpl#getY Y}
  • + *
  • {@link somemetamodelextension.hidden.impl.ZImpl#getI_m Im}
  • + *
+ *

+ * + * @generated + */ +public class ZImpl extends AbstractShareableEObject implements Z { + /** + * The cached value of the '{@link #getY() Y}' reference. + * + * + * @see #getY() + * @generated + * @ordered + */ + protected Y y; + + /** + * The default value of the '{@link #getI_m() Im}' attribute. + * + * + * @see #getI_m() + * @generated + * @ordered + */ + protected static final String IM_EDEFAULT = null; + + /** + * The cached value of the '{@link #getI_m() Im}' attribute. + * + * + * @see #getI_m() + * @generated + * @ordered + */ + protected String i_m = IM_EDEFAULT; + + /** + * + * + * @generated + */ + protected ZImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return HiddenPackage.Literals.Z; + } + + /** + * + * + * @generated + */ + public Y getY() { + if (y != null && ((EObject) y).eIsProxy()) { + InternalEObject oldY = (InternalEObject) y; + y = (Y) eResolveProxy(oldY); + if (y != oldY) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + HiddenPackage.Z__Y, oldY, y)); + } + } + return y; + } + + /** + * + * + * @generated + */ + public Y basicGetY() { + return y; + } + + /** + * + * + * @generated + */ + public void setY(Y newY) { + Y oldY = y; + y = newY; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + HiddenPackage.Z__Y, oldY, y)); + } + + /** + * + * + * @generated + */ + public String getI_m() { + return i_m; + } + + /** + * + * + * @generated + */ + public void setI_m(String newI_m) { + String oldI_m = i_m; + i_m = newI_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + HiddenPackage.Z__IM, oldI_m, i_m)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case HiddenPackage.Z__Y: + if (resolve) + return getY(); + return basicGetY(); + case HiddenPackage.Z__IM: + return getI_m(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case HiddenPackage.Z__Y: + setY((Y) newValue); + return; + case HiddenPackage.Z__IM: + setI_m((String) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case HiddenPackage.Z__Y: + setY((Y) null); + return; + case HiddenPackage.Z__IM: + setI_m(IM_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case HiddenPackage.Z__Y: + return y != null; + case HiddenPackage.Z__IM: + return IM_EDEFAULT == null ? i_m != null : !IM_EDEFAULT.equals(i_m); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (i_m: "); + result.append(i_m); + result.append(')'); + return result.toString(); + } + +} //ZImpl diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenAdapterFactory.java b/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..fe18accb2acb361f2292f01af8dc2c0855e98cee --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenAdapterFactory.java @@ -0,0 +1,138 @@ +/** + */ +package somemetamodelextension.hidden.util; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +import somemetamodelextension.hidden.*; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see somemetamodelextension.hidden.HiddenPackage + * @generated + */ +public class HiddenAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static HiddenPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public HiddenAdapterFactory() { + if (modelPackage == null) { + modelPackage = HiddenPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject) object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected HiddenSwitch modelSwitch = new HiddenSwitch() { + @Override + public Adapter caseY(Y object) { + return createYAdapter(); + } + + @Override + public Adapter caseZ(Z object) { + return createZAdapter(); + } + + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject) target); + } + + /** + * Creates a new adapter for an object of class '{@link somemetamodelextension.hidden.Y Y}'. + * + * 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. + * + * @return the new adapter. + * @see somemetamodelextension.hidden.Y + * @generated + */ + public Adapter createYAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link somemetamodelextension.hidden.Z Z}'. + * + * 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. + * + * @return the new adapter. + * @see somemetamodelextension.hidden.Z + * @generated + */ + public Adapter createZAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //HiddenAdapterFactory diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenSwitch.java b/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenSwitch.java new file mode 100644 index 0000000000000000000000000000000000000000..df66ba4f26e7ea98b2d5bbb89f53df41d712d0ca --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenSwitch.java @@ -0,0 +1,134 @@ +/** + */ +package somemetamodelextension.hidden.util; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +import somemetamodelextension.hidden.*; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see somemetamodelextension.hidden.HiddenPackage + * @generated + */ +public class HiddenSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static HiddenPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public HiddenSwitch() { + if (modelPackage == null) { + modelPackage = HiddenPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @parameter ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case HiddenPackage.Y: { + Y y = (Y) theEObject; + T result = caseY(y); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case HiddenPackage.Z: { + Z z = (Z) theEObject; + T result = caseZ(z); + if (result == null) + result = defaultCase(theEObject); + return result; + } + default: + return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'Y'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Y'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseY(Y object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Z'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Z'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseZ(Z object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //HiddenSwitch diff --git a/SomeMetamodel/src/somemetamodelextension/impl/RImpl.java b/SomeMetamodel/src/somemetamodelextension/impl/RImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..8649a744e7e731642f68c926fcc651bf2bd878b5 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/impl/RImpl.java @@ -0,0 +1,221 @@ +/** + */ +package somemetamodelextension.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import somemetamodelextension.R; +import somemetamodelextension.SomemetamodelextensionPackage; + +/** + * + * An implementation of the model object 'R'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodelextension.impl.RImpl#getA_m Am}
  • + *
  • {@link somemetamodelextension.impl.RImpl#getB B}
  • + *
+ *

+ * + * @generated + */ +public class RImpl extends AbstractShareableEObject implements R { + /** + * The default value of the '{@link #getA_m() Am}' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected static final int AM_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getA_m() Am}' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected int a_m = AM_EDEFAULT; + + /** + * The default value of the '{@link #getB() B}' attribute. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected static final int B_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getB() B}' attribute. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected int b = B_EDEFAULT; + + /** + * + * + * @generated + */ + protected RImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelextensionPackage.Literals.R; + } + + /** + * + * + * @generated + */ + public int getA_m() { + return a_m; + } + + /** + * + * + * @generated + */ + public void setA_m(int newA_m) { + int oldA_m = a_m; + a_m = newA_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelextensionPackage.R__AM, oldA_m, a_m)); + } + + /** + * + * + * @generated + */ + public int getB() { + return b; + } + + /** + * + * + * @generated + */ + public void setB(int newB) { + int oldB = b; + b = newB; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelextensionPackage.R__B, oldB, b)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return getA_m(); + case SomemetamodelextensionPackage.R__B: + return getB(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m((Integer) newValue); + return; + case SomemetamodelextensionPackage.R__B: + setB((Integer) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m(AM_EDEFAULT); + return; + case SomemetamodelextensionPackage.R__B: + setB(B_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return a_m != AM_EDEFAULT; + case SomemetamodelextensionPackage.R__B: + return b != B_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (a_m: "); + result.append(a_m); + result.append(", b: "); + result.append(b); + result.append(')'); + return result.toString(); + } + +} //RImpl diff --git a/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.java b/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..e629230708f234e8eeae5e1807db03dddc3d712b --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.java @@ -0,0 +1,110 @@ +/** + */ +package somemetamodelextension.impl; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +import somemetamodelextension.*; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class SomemetamodelextensionFactoryImpl extends EFactoryImpl implements + SomemetamodelextensionFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static SomemetamodelextensionFactory init() { + try { + SomemetamodelextensionFactory theSomemetamodelextensionFactory = (SomemetamodelextensionFactory) EPackage.Registry.INSTANCE + .getEFactory(SomemetamodelextensionPackage.eNS_URI); + if (theSomemetamodelextensionFactory != null) { + return theSomemetamodelextensionFactory; + } + } catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new SomemetamodelextensionFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public SomemetamodelextensionFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case SomemetamodelextensionPackage.X: + return (EObject) createX(); + case SomemetamodelextensionPackage.R: + return (EObject) createR(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public X createX() { + XImpl x = new XImpl(); + return x; + } + + /** + * + * + * @generated + */ + public R createR() { + RImpl r = new RImpl(); + return r; + } + + /** + * + * + * @generated + */ + public SomemetamodelextensionPackage getSomemetamodelextensionPackage() { + return (SomemetamodelextensionPackage) getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static SomemetamodelextensionPackage getPackage() { + return SomemetamodelextensionPackage.eINSTANCE; + } + +} //SomemetamodelextensionFactoryImpl diff --git a/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.java b/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..15c2ea0aeadeb2094d5547531550251d9b2f89ae --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.java @@ -0,0 +1,250 @@ +/** + */ +package somemetamodelextension.impl; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +import somemetamodel.SomemetamodelPackage; + +import somemetamodel.impl.SomemetamodelPackageImpl; + +import somemetamodelextension.SomemetamodelextensionFactory; +import somemetamodelextension.SomemetamodelextensionPackage; + +import somemetamodelextension.hidden.HiddenPackage; + +import somemetamodelextension.hidden.impl.HiddenPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class SomemetamodelextensionPackageImpl extends EPackageImpl implements + SomemetamodelextensionPackage { + /** + * + * + * @generated + */ + private EClass xEClass = null; + + /** + * + * + * @generated + */ + private EClass rEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see somemetamodelextension.SomemetamodelextensionPackage#eNS_URI + * @see #init() + * @generated + */ + private SomemetamodelextensionPackageImpl() { + super(eNS_URI, SomemetamodelextensionFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link SomemetamodelextensionPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static SomemetamodelextensionPackage init() { + if (isInited) + return (SomemetamodelextensionPackage) EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelextensionPackage.eNS_URI); + + // Obtain or create and register package + SomemetamodelextensionPackageImpl theSomemetamodelextensionPackage = (SomemetamodelextensionPackageImpl) (EPackage.Registry.INSTANCE + .get(eNS_URI) instanceof SomemetamodelextensionPackageImpl ? EPackage.Registry.INSTANCE + .get(eNS_URI) : new SomemetamodelextensionPackageImpl()); + + isInited = true; + + // Obtain or create and register interdependencies + SomemetamodelPackageImpl theSomemetamodelPackage = (SomemetamodelPackageImpl) (EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelPackage.eNS_URI) instanceof SomemetamodelPackageImpl ? EPackage.Registry.INSTANCE + .getEPackage(SomemetamodelPackage.eNS_URI) + : SomemetamodelPackage.eINSTANCE); + HiddenPackageImpl theHiddenPackage = (HiddenPackageImpl) (EPackage.Registry.INSTANCE + .getEPackage(HiddenPackage.eNS_URI) instanceof HiddenPackageImpl ? EPackage.Registry.INSTANCE + .getEPackage(HiddenPackage.eNS_URI) : HiddenPackage.eINSTANCE); + + // Create package meta-data objects + theSomemetamodelextensionPackage.createPackageContents(); + theSomemetamodelPackage.createPackageContents(); + theHiddenPackage.createPackageContents(); + + // Initialize created meta-data + theSomemetamodelextensionPackage.initializePackageContents(); + theSomemetamodelPackage.initializePackageContents(); + theHiddenPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theSomemetamodelextensionPackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(SomemetamodelextensionPackage.eNS_URI, + theSomemetamodelextensionPackage); + return theSomemetamodelextensionPackage; + } + + /** + * + * + * @generated + */ + public EClass getX() { + return xEClass; + } + + /** + * + * + * @generated + */ + public EClass getR() { + return rEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getR_A_m() { + return (EAttribute) rEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EAttribute getR_B() { + return (EAttribute) rEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public SomemetamodelextensionFactory getSomemetamodelextensionFactory() { + return (SomemetamodelextensionFactory) getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() { + if (isCreated) + return; + isCreated = true; + + // Create classes and their features + xEClass = createEClass(X); + + rEClass = createEClass(R); + createEAttribute(rEClass, R__AM); + createEAttribute(rEClass, R__B); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() { + if (isInitialized) + return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Obtain other dependent packages + HiddenPackage theHiddenPackage = (HiddenPackage) EPackage.Registry.INSTANCE + .getEPackage(HiddenPackage.eNS_URI); + + // Add subpackages + getESubpackages().add(theHiddenPackage); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + + // Initialize classes, features, and operations; add parameters + initEClass(xEClass, somemetamodelextension.X.class, "X", !IS_ABSTRACT, + !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(rEClass, somemetamodelextension.R.class, "R", !IS_ABSTRACT, + !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getR_A_m(), ecorePackage.getEInt(), "a_m", null, 0, 1, + somemetamodelextension.R.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, + IS_ORDERED); + initEAttribute(getR_B(), ecorePackage.getEInt(), "b", null, 0, 1, + somemetamodelextension.R.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, + IS_ORDERED); + + // Create resource + createResource(eNS_URI); + } + +} //SomemetamodelextensionPackageImpl diff --git a/SomeMetamodel/src/somemetamodelextension/impl/XImpl.java b/SomeMetamodel/src/somemetamodelextension/impl/XImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..0234c2ebe3d8df07fdc5736605aba2399aba584b --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/impl/XImpl.java @@ -0,0 +1,41 @@ +/** + */ +package somemetamodelextension.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import org.eclipse.emf.ecore.EClass; + +import somemetamodelextension.SomemetamodelextensionPackage; +import somemetamodelextension.X; + +/** + * + * An implementation of the model object 'X'. + * + *

+ *

+ * + * @generated + */ +public class XImpl extends AbstractShareableEObject implements X { + /** + * + * + * @generated + */ + protected XImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelextensionPackage.Literals.X; + } + +} //XImpl diff --git a/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.java b/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..a1d343c9c0f9c89247ecb1a5e850bfe5b6a2377e --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.java @@ -0,0 +1,138 @@ +/** + */ +package somemetamodelextension.util; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +import somemetamodelextension.*; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see somemetamodelextension.SomemetamodelextensionPackage + * @generated + */ +public class SomemetamodelextensionAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static SomemetamodelextensionPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public SomemetamodelextensionAdapterFactory() { + if (modelPackage == null) { + modelPackage = SomemetamodelextensionPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject) object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected SomemetamodelextensionSwitch modelSwitch = new SomemetamodelextensionSwitch() { + @Override + public Adapter caseX(X object) { + return createXAdapter(); + } + + @Override + public Adapter caseR(R object) { + return createRAdapter(); + } + + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject) target); + } + + /** + * Creates a new adapter for an object of class '{@link somemetamodelextension.X X}'. + * + * 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. + * + * @return the new adapter. + * @see somemetamodelextension.X + * @generated + */ + public Adapter createXAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link somemetamodelextension.R R}'. + * + * 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. + * + * @return the new adapter. + * @see somemetamodelextension.R + * @generated + */ + public Adapter createRAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //SomemetamodelextensionAdapterFactory diff --git a/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionSwitch.java b/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionSwitch.java new file mode 100644 index 0000000000000000000000000000000000000000..e3265455650db3f5bd3d6b11df0899881a2ff8b3 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionSwitch.java @@ -0,0 +1,134 @@ +/** + */ +package somemetamodelextension.util; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +import somemetamodelextension.*; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see somemetamodelextension.SomemetamodelextensionPackage + * @generated + */ +public class SomemetamodelextensionSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static SomemetamodelextensionPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public SomemetamodelextensionSwitch() { + if (modelPackage == null) { + modelPackage = SomemetamodelextensionPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @parameter ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case SomemetamodelextensionPackage.X: { + X x = (X) theEObject; + T result = caseX(x); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case SomemetamodelextensionPackage.R: { + R r = (R) theEObject; + T result = caseR(r); + if (result == null) + result = defaultCase(theEObject); + return result; + } + default: + return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'X'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'X'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseX(X object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'R'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'R'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseR(R object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //SomemetamodelextensionSwitch diff --git a/SomeMetamodel/src/somemmdeep/BDeepPImpl.java b/SomeMetamodel/src/somemmdeep/BDeepPImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..aadf8741d1d96192f65b2b967865bce242d0e603 --- /dev/null +++ b/SomeMetamodel/src/somemmdeep/BDeepPImpl.java @@ -0,0 +1,217 @@ +/** + */ + +package somemmdeep; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import somemetamodel.B; +import somemetamodel.SomemetamodelPackage; + +/** + * + * An implementation of the model object 'B'. + * + *

+ * The following features are implemented: + *

    + *
  • + * { @link somemetamodel.impl.BDeepPImpl#getN1_m N1 m} + *
  • + *
  • + * { @link somemetamodel.impl.BDeepPImpl#getN2 N2} + *
  • + *
+ *

+ * @generated + */ +public class BDeepPImpl extends AbstractShareableEObject implements B { + protected B cloned; + /** + * The default value of the ' + * { @link #getN1_m() N1 m} + * ' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected static final int N1_M_EDEFAULT = 0; + /** + * The cached value of the ' + * { @link #getN1_m() N1 m} + * ' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected int n1_m = N1_M_EDEFAULT; + /** + * The default value of the ' + * { @link #getN2() N2} + * ' attribute. + * + * + * @see #getN2() + * @generated + * @ordered + */ + protected static final byte N2_EDEFAULT = 0x00; + + /** + * + * + * @generated + */ + protected BDeepPImpl(B clonedParam) { + super(); + cloned = clonedParam; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.B; + } + + /** + * + * + * @generated + */ + public int getN1_m() { + return n1_m; + } + + /** + * + * + * @generated + */ + public void setN1_m(int newN1_m) { + int oldN1_m = n1_m; + n1_m = newN1_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.B__N1_M, oldN1_m, n1_m)); + + } + + /** + * + * + * @generated + */ + public byte getN2() { + return cloned.getN2(); + } + + /** + * + * + * @generated + */ + public void setN2(byte newN2) { + System.out + .println("[Info] BDeepPImpl: n2 is readonly and cannot be set."); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return getN1_m(); + case SomemetamodelPackage.B__N2: + return getN2(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m((Integer) newValue); + return; + case SomemetamodelPackage.B__N2: + setN2((Byte) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m(N1_M_EDEFAULT); + return; + case SomemetamodelPackage.B__N2: + setN2(N2_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return n1_m != N1_M_EDEFAULT; + case SomemetamodelPackage.B__N2: + return cloned.getN2() != N2_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (n1_m: "); + result.append(n1_m); + result.append(", n2: "); + result.append(cloned.getN2()); + result.append(')'); + return result.toString(); + } + +} +//BImpl + diff --git a/SomeMetamodel/src/somemmdeep/RDeepPImpl.java b/SomeMetamodel/src/somemmdeep/RDeepPImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..de31f461c7ea712d7ac5e4cf6f89aaa67cca411d --- /dev/null +++ b/SomeMetamodel/src/somemmdeep/RDeepPImpl.java @@ -0,0 +1,217 @@ +/** + */ + +package somemmdeep; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import somemetamodelextension.R; +import somemetamodelextension.SomemetamodelextensionPackage; + +/** + * + * An implementation of the model object 'R'. + * + *

+ * The following features are implemented: + *

    + *
  • + * { @link somemetamodelextension.impl.RDeepPImpl#getA_m Am} + *
  • + *
  • + * { @link somemetamodelextension.impl.RDeepPImpl#getB B} + *
  • + *
+ *

+ * @generated + */ +public class RDeepPImpl extends AbstractShareableEObject implements R { + protected R cloned; + /** + * The default value of the ' + * { @link #getA_m() Am} + * ' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected static final int AM_EDEFAULT = 0; + /** + * The cached value of the ' + * { @link #getA_m() Am} + * ' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected int a_m = AM_EDEFAULT; + /** + * The default value of the ' + * { @link #getB() B} + * ' attribute. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected static final int B_EDEFAULT = 0; + + /** + * + * + * @generated + */ + protected RDeepPImpl(R clonedParam) { + super(); + cloned = clonedParam; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelextensionPackage.Literals.R; + } + + /** + * + * + * @generated + */ + public int getA_m() { + return a_m; + } + + /** + * + * + * @generated + */ + public void setA_m(int newA_m) { + int oldA_m = a_m; + a_m = newA_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelextensionPackage.R__AM, oldA_m, a_m)); + + } + + /** + * + * + * @generated + */ + public int getB() { + return cloned.getB(); + } + + /** + * + * + * @generated + */ + public void setB(int newB) { + System.out + .println("[Info] RDeepPImpl: b is readonly and cannot be set."); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return getA_m(); + case SomemetamodelextensionPackage.R__B: + return getB(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m((Integer) newValue); + return; + case SomemetamodelextensionPackage.R__B: + setB((Integer) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m(AM_EDEFAULT); + return; + case SomemetamodelextensionPackage.R__B: + setB(B_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return a_m != AM_EDEFAULT; + case SomemetamodelextensionPackage.R__B: + return cloned.getB() != B_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (a_m: "); + result.append(a_m); + result.append(", b: "); + result.append(cloned.getB()); + result.append(')'); + return result.toString(); + } + +} +//RImpl + diff --git a/SomeMetamodel/src/somemmdeep/SomeMMDeepCloningMaterial.java b/SomeMetamodel/src/somemmdeep/SomeMMDeepCloningMaterial.java new file mode 100644 index 0000000000000000000000000000000000000000..072e1e2bd69b98fc9a50276da0c5fdd034ca0e43 --- /dev/null +++ b/SomeMetamodel/src/somemmdeep/SomeMMDeepCloningMaterial.java @@ -0,0 +1,28 @@ +package somemmdeep; + +import fr.inria.diverse.cloning.cloner.common.CloningMaterial; +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseCopier; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; + +public class SomeMMDeepCloningMaterial implements CloningMaterial { + private static SomeMMDeepCloningMaterial instance; + private SomeMMDeepTags tags; + + private SomeMMDeepCloningMaterial(SomeMMDeepTags tags) { + this.tags = tags; + }; + + public static SomeMMDeepCloningMaterial getInstance() { + if (instance == null) + instance = new SomeMMDeepCloningMaterial(new SomeMMDeepTags()); + return instance; + } + + public MetamodelTags getTags() { + return tags; + } + + public LooseCopier createLightCopier() { + return new SomeMMDeepLightCopier(); + } +} diff --git a/SomeMetamodel/src/somemmdeep/SomeMMDeepLightCopier.java b/SomeMetamodel/src/somemmdeep/SomeMMDeepLightCopier.java new file mode 100644 index 0000000000000000000000000000000000000000..26816aac423371a53f487a97a2a885dc580e6d5d --- /dev/null +++ b/SomeMetamodel/src/somemmdeep/SomeMMDeepLightCopier.java @@ -0,0 +1,18 @@ +package somemmdeep; + +import org.eclipse.emf.ecore.EObject; +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseCopier; +import somemetamodelextension.R; +import somemetamodel.B; + +@SuppressWarnings("serial") +public class SomeMMDeepLightCopier extends LooseCopier { + protected EObject createCopy(EObject eObject) { + if (eObject instanceof R) + return new RDeepPImpl((R) eObject); + if (eObject instanceof B) + return new BDeepPImpl((B) eObject); + else + return super.createCopy(eObject); + } +} diff --git a/SomeMetamodel/src/somemmdeep/SomeMMDeepTags.java b/SomeMetamodel/src/somemmdeep/SomeMMDeepTags.java new file mode 100644 index 0000000000000000000000000000000000000000..c5f3420ed15ac20b9783f460d89288067522e808 --- /dev/null +++ b/SomeMetamodel/src/somemmdeep/SomeMMDeepTags.java @@ -0,0 +1,106 @@ +package somemmdeep; + +import org.eclipse.emf.ecore.EClass; +import fr.inria.diverse.cloning.cloner.common.ClassTag; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; +import org.eclipse.emf.ecore.EStructuralFeature; +import somemetamodelextension.hidden.Y; +import somemetamodelextension.X; +import somemetamodelextension.R; +import somemetamodelextension.hidden.Z; +import somemetamodel.A; +import somemetamodel.E; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.D; + +public class SomeMMDeepTags implements MetamodelTags { + public ClassTag getTagOf(EClass eClass) { + if (eClass.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getY())) + return ClassTag.NOT_SHAREABLE; + if (eClass + .equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getX())) + return ClassTag.NOT_SHAREABLE; + if (eClass + .equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR())) + return ClassTag.PARTIALLY_SHAREABLE; + if (eClass.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getE())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getB())) + return ClassTag.PARTIALLY_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getC())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getD())) + return ClassTag.NOT_SHAREABLE; + else + return null; + } + + public boolean mayTagClassesShareable() { + return false; + } + + public boolean isPropertyShareable(EStructuralFeature prop) { + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getY_Z())) + return false; + if (prop.equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR_A_m())) + return false; + if (prop.equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR_B())) + return true; + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ_Y())) + return false; + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ_I_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_B())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_C())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_D())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_E())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_X())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE + .getB_N1_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getB_N2())) + return true; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE + .getC_Yay_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getD_A())) + return false; + else + return false; + } + + public double getCompShareableClassesRatio() { + return 0.0; + } + + public double getPartShareableClassesRatio() { + return 0.2222222222222222; + } + + public double getShareablePropertiesInShareableClassesRatio() { + return 0.14285714285714285; + } + + public double getMeanShareablePropertiesInShareableClasses() { + return 1.0; + } +} diff --git a/SomeMetamodel/src/somemmmutclassonly/AMutClassOnlyPImpl.java b/SomeMetamodel/src/somemmmutclassonly/AMutClassOnlyPImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..091e16ff73bb8d8ee8cf982b799cef47c93ed13c --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/AMutClassOnlyPImpl.java @@ -0,0 +1,473 @@ +/** + */ + +package somemmmutclassonly; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; +import java.util.Collection; +import org.eclipse.emf.common.notify.Notification; +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.resource.ResourceSet; +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; +import somemetamodel.A; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.D; +import somemetamodel.E; +import somemetamodel.SomemetamodelPackage; +import somemetamodelextension.X; + +/** + * + * An implementation of the model object 'A'. + * + *

+ * The following features are implemented: + *

    + *
  • + * { @link somemetamodel.impl.AMutClassOnlyPImpl#getB B} + *
  • + *
  • + * { @link somemetamodel.impl.AMutClassOnlyPImpl#getC C} + *
  • + *
  • + * { @link somemetamodel.impl.AMutClassOnlyPImpl#getD D} + *
  • + *
  • + * { @link somemetamodel.impl.AMutClassOnlyPImpl#getE E} + *
  • + *
  • + * { @link somemetamodel.impl.AMutClassOnlyPImpl#getX X} + *
  • + *
+ *

+ * @generated + */ +public class AMutClassOnlyPImpl extends AbstractShareableEObject implements A { + protected A cloned; + /** + * The cached value of the ' + * { @link #getB() B} + * ' containment reference. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected B b; + /** + * The cached value of the ' + * { @link #getC() C} + * ' reference. + * + * + * @see #getC() + * @generated + * @ordered + */ + protected C c; + /** + * The cached value of the ' + * { @link #getD() D} + * ' reference. + * + * + * @see #getD() + * @generated + * @ordered + */ + protected D d; + + /** + * + * + * @generated + */ + protected AMutClassOnlyPImpl(A clonedParam) { + super(); + cloned = clonedParam; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.A; + } + + /** + * + * + * @generated + */ + public B getB() { + return b; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetB(B newB, NotificationChain msgs) { + B oldB = b; + b = newB; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, + Notification.SET, SomemetamodelPackage.A__B, oldB, newB); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + + } + + return msgs; + } + + /** + * + * + * @generated + */ + public void setB(B newB) { + if (newB != b) { + NotificationChain msgs = null; + if (b != null) + msgs = ((InternalEObject) b).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - SomemetamodelPackage.A__B, + null, msgs); + + if (newB != null) + msgs = ((InternalEObject) newB).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - SomemetamodelPackage.A__B, + null, msgs); + + msgs = basicSetB(newB, msgs); + if (msgs != null) + msgs.dispatch(); + + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__B, newB, newB)); + + } + + /** + * + * + * @generated + */ + public C getC() { + if (c != null && ((EObject) c).eIsProxy()) { + InternalEObject oldC = (InternalEObject) c; + c = (C) eResolveProxy(oldC); + if (c != oldC) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.A__C, oldC, c)); + + } + + } + + return c; + } + + /** + * + * + * @generated + */ + public C basicGetC() { + return c; + } + + /** + * + * + * @generated + */ + public void setC(C newC) { + C oldC = c; + c = newC; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__C, oldC, c)); + + } + + /** + * + * + * @generated + */ + public D getD() { + if (d != null && ((EObject) d).eIsProxy()) { + InternalEObject oldD = (InternalEObject) d; + d = (D) eResolveProxy(oldD); + if (d != oldD) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.A__D, oldD, d)); + + } + + } + + return d; + } + + /** + * + * + * @generated + */ + public D basicGetD() { + return d; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetD(D newD, NotificationChain msgs) { + D oldD = d; + d = newD; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, + Notification.SET, SomemetamodelPackage.A__D, oldD, newD); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + + } + + return msgs; + } + + /** + * + * + * @generated + */ + public void setD(D newD) { + if (newD != d) { + NotificationChain msgs = null; + if (d != null) + msgs = ((InternalEObject) d).eInverseRemove(this, + SomemetamodelPackage.D__A, D.class, msgs); + + if (newD != null) + msgs = ((InternalEObject) newD).eInverseAdd(this, + SomemetamodelPackage.D__A, D.class, msgs); + + msgs = basicSetD(newD, msgs); + if (msgs != null) + msgs.dispatch(); + + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__D, newD, newD)); + + } + + /** + * + * + * @generated + */ + public EList getE() { + return cloned.getE(); + } + + /** + * + * + * @generated + */ + public X getX() { + return cloned.getX(); + } + + /** + * + * + * @generated + */ + public X basicGetX() { + return cloned.getX(); + } + + /** + * + * + * @generated + */ + public void setX(X newX) { + System.out + .println("[Info] AMutClassOnlyPImpl: x is readonly and cannot be set."); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.A__D: + if (d != null) + msgs = ((InternalEObject) d).eInverseRemove(this, + SomemetamodelPackage.D__A, D.class, msgs); + + return basicSetD((D) otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return basicSetB(null, msgs); + case SomemetamodelPackage.A__D: + return basicSetD(null, msgs); + case SomemetamodelPackage.A__E: + return ((InternalEList) getE()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return getB(); + case SomemetamodelPackage.A__C: + if (resolve) + return getC(); + + return basicGetC(); + case SomemetamodelPackage.A__D: + if (resolve) + return getD(); + + return basicGetD(); + case SomemetamodelPackage.A__E: + return getE(); + case SomemetamodelPackage.A__X: + if (resolve) + return getX(); + + return basicGetX(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.A__B: + setB((B) newValue); + return; + case SomemetamodelPackage.A__C: + setC((C) newValue); + return; + case SomemetamodelPackage.A__D: + setD((D) newValue); + return; + case SomemetamodelPackage.A__E: + getE().clear(); + getE().addAll((Collection) newValue); + return; + case SomemetamodelPackage.A__X: + setX((X) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.A__B: + setB((B) null); + return; + case SomemetamodelPackage.A__C: + setC((C) null); + return; + case SomemetamodelPackage.A__D: + setD((D) null); + return; + case SomemetamodelPackage.A__E: + getE().clear(); + return; + case SomemetamodelPackage.A__X: + setX((X) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return b != null; + case SomemetamodelPackage.A__C: + return c != null; + case SomemetamodelPackage.A__D: + return d != null; + case SomemetamodelPackage.A__E: + return cloned.getE() != null && !cloned.getE().isEmpty(); + case SomemetamodelPackage.A__X: + return cloned.getX() != null; + } + return super.eIsSet(featureID); + } + +} +//AImpl + diff --git a/SomeMetamodel/src/somemmmutclassonly/BMutClassOnlyPImpl.java b/SomeMetamodel/src/somemmmutclassonly/BMutClassOnlyPImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..af039370f8c7cd06a03b18ea06e3368d43fc9cae --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/BMutClassOnlyPImpl.java @@ -0,0 +1,217 @@ +/** + */ + +package somemmmutclassonly; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import somemetamodel.B; +import somemetamodel.SomemetamodelPackage; + +/** + * + * An implementation of the model object 'B'. + * + *

+ * The following features are implemented: + *

    + *
  • + * { @link somemetamodel.impl.BMutClassOnlyPImpl#getN1_m N1 m} + *
  • + *
  • + * { @link somemetamodel.impl.BMutClassOnlyPImpl#getN2 N2} + *
  • + *
+ *

+ * @generated + */ +public class BMutClassOnlyPImpl extends AbstractShareableEObject implements B { + protected B cloned; + /** + * The default value of the ' + * { @link #getN1_m() N1 m} + * ' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected static final int N1_M_EDEFAULT = 0; + /** + * The cached value of the ' + * { @link #getN1_m() N1 m} + * ' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected int n1_m = N1_M_EDEFAULT; + /** + * The default value of the ' + * { @link #getN2() N2} + * ' attribute. + * + * + * @see #getN2() + * @generated + * @ordered + */ + protected static final byte N2_EDEFAULT = 0x00; + + /** + * + * + * @generated + */ + protected BMutClassOnlyPImpl(B clonedParam) { + super(); + cloned = clonedParam; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.B; + } + + /** + * + * + * @generated + */ + public int getN1_m() { + return n1_m; + } + + /** + * + * + * @generated + */ + public void setN1_m(int newN1_m) { + int oldN1_m = n1_m; + n1_m = newN1_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.B__N1_M, oldN1_m, n1_m)); + + } + + /** + * + * + * @generated + */ + public byte getN2() { + return cloned.getN2(); + } + + /** + * + * + * @generated + */ + public void setN2(byte newN2) { + System.out + .println("[Info] BMutClassOnlyPImpl: n2 is readonly and cannot be set."); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return getN1_m(); + case SomemetamodelPackage.B__N2: + return getN2(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m((Integer) newValue); + return; + case SomemetamodelPackage.B__N2: + setN2((Byte) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m(N1_M_EDEFAULT); + return; + case SomemetamodelPackage.B__N2: + setN2(N2_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return n1_m != N1_M_EDEFAULT; + case SomemetamodelPackage.B__N2: + return cloned.getN2() != N2_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (n1_m: "); + result.append(n1_m); + result.append(", n2: "); + result.append(cloned.getN2()); + result.append(')'); + return result.toString(); + } + +} +//BImpl + diff --git a/SomeMetamodel/src/somemmmutclassonly/RMutClassOnlyPImpl.java b/SomeMetamodel/src/somemmmutclassonly/RMutClassOnlyPImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..15898c0838deeb1fa39911b2d9b4730a7ee89753 --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/RMutClassOnlyPImpl.java @@ -0,0 +1,217 @@ +/** + */ + +package somemmmutclassonly; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import somemetamodelextension.R; +import somemetamodelextension.SomemetamodelextensionPackage; + +/** + * + * An implementation of the model object 'R'. + * + *

+ * The following features are implemented: + *

    + *
  • + * { @link somemetamodelextension.impl.RMutClassOnlyPImpl#getA_m Am} + *
  • + *
  • + * { @link somemetamodelextension.impl.RMutClassOnlyPImpl#getB B} + *
  • + *
+ *

+ * @generated + */ +public class RMutClassOnlyPImpl extends AbstractShareableEObject implements R { + protected R cloned; + /** + * The default value of the ' + * { @link #getA_m() Am} + * ' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected static final int AM_EDEFAULT = 0; + /** + * The cached value of the ' + * { @link #getA_m() Am} + * ' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected int a_m = AM_EDEFAULT; + /** + * The default value of the ' + * { @link #getB() B} + * ' attribute. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected static final int B_EDEFAULT = 0; + + /** + * + * + * @generated + */ + protected RMutClassOnlyPImpl(R clonedParam) { + super(); + cloned = clonedParam; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelextensionPackage.Literals.R; + } + + /** + * + * + * @generated + */ + public int getA_m() { + return a_m; + } + + /** + * + * + * @generated + */ + public void setA_m(int newA_m) { + int oldA_m = a_m; + a_m = newA_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelextensionPackage.R__AM, oldA_m, a_m)); + + } + + /** + * + * + * @generated + */ + public int getB() { + return cloned.getB(); + } + + /** + * + * + * @generated + */ + public void setB(int newB) { + System.out + .println("[Info] RMutClassOnlyPImpl: b is readonly and cannot be set."); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return getA_m(); + case SomemetamodelextensionPackage.R__B: + return getB(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m((Integer) newValue); + return; + case SomemetamodelextensionPackage.R__B: + setB((Integer) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m(AM_EDEFAULT); + return; + case SomemetamodelextensionPackage.R__B: + setB(B_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return a_m != AM_EDEFAULT; + case SomemetamodelextensionPackage.R__B: + return cloned.getB() != B_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (a_m: "); + result.append(a_m); + result.append(", b: "); + result.append(cloned.getB()); + result.append(')'); + return result.toString(); + } + +} +//RImpl + diff --git a/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.java b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.java new file mode 100644 index 0000000000000000000000000000000000000000..051c0a9c1ebbc54400399922127698882abc09c1 --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.java @@ -0,0 +1,29 @@ +package somemmmutclassonly; + +import fr.inria.diverse.cloning.cloner.common.CloningMaterial; +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseCopier; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; + +public class SomeMMMutClassOnlyCloningMaterial implements CloningMaterial { + private static SomeMMMutClassOnlyCloningMaterial instance; + private SomeMMMutClassOnlyTags tags; + + private SomeMMMutClassOnlyCloningMaterial(SomeMMMutClassOnlyTags tags) { + this.tags = tags; + }; + + public static SomeMMMutClassOnlyCloningMaterial getInstance() { + if (instance == null) + instance = new SomeMMMutClassOnlyCloningMaterial( + new SomeMMMutClassOnlyTags()); + return instance; + } + + public MetamodelTags getTags() { + return tags; + } + + public LooseCopier createLightCopier() { + return new SomeMMMutClassOnlyLightCopier(); + } +} diff --git a/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.java b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.java new file mode 100644 index 0000000000000000000000000000000000000000..7de9ce29ec55dba9a9d83265b03b9b98c1ae8e75 --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.java @@ -0,0 +1,21 @@ +package somemmmutclassonly; + +import org.eclipse.emf.ecore.EObject; +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseCopier; +import somemetamodelextension.R; +import somemetamodel.A; +import somemetamodel.B; + +@SuppressWarnings("serial") +public class SomeMMMutClassOnlyLightCopier extends LooseCopier { + protected EObject createCopy(EObject eObject) { + if (eObject instanceof R) + return new RMutClassOnlyPImpl((R) eObject); + if (eObject instanceof A) + return new AMutClassOnlyPImpl((A) eObject); + if (eObject instanceof B) + return new BMutClassOnlyPImpl((B) eObject); + else + return super.createCopy(eObject); + } +} diff --git a/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyTags.java b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyTags.java new file mode 100644 index 0000000000000000000000000000000000000000..cb8b3c3a2af640814fbf882d798907e5d2b3a42e --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyTags.java @@ -0,0 +1,106 @@ +package somemmmutclassonly; + +import org.eclipse.emf.ecore.EClass; +import fr.inria.diverse.cloning.cloner.common.ClassTag; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; +import org.eclipse.emf.ecore.EStructuralFeature; +import somemetamodelextension.hidden.Y; +import somemetamodelextension.X; +import somemetamodelextension.R; +import somemetamodelextension.hidden.Z; +import somemetamodel.A; +import somemetamodel.E; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.D; + +public class SomeMMMutClassOnlyTags implements MetamodelTags { + public ClassTag getTagOf(EClass eClass) { + if (eClass.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getY())) + return ClassTag.NOT_SHAREABLE; + if (eClass + .equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getX())) + return ClassTag.COMPLETELY_SHAREABLE; + if (eClass + .equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR())) + return ClassTag.PARTIALLY_SHAREABLE; + if (eClass.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA())) + return ClassTag.PARTIALLY_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getE())) + return ClassTag.COMPLETELY_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getB())) + return ClassTag.PARTIALLY_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getC())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getD())) + return ClassTag.NOT_SHAREABLE; + else + return null; + } + + public boolean mayTagClassesShareable() { + return true; + } + + public boolean isPropertyShareable(EStructuralFeature prop) { + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getY_Z())) + return false; + if (prop.equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR_A_m())) + return false; + if (prop.equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR_B())) + return true; + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ_Y())) + return false; + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ_I_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_B())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_C())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_D())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_E())) + return true; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_X())) + return true; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE + .getB_N1_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getB_N2())) + return true; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE + .getC_Yay_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getD_A())) + return false; + else + return false; + } + + public double getCompShareableClassesRatio() { + return 0.2222222222222222; + } + + public double getPartShareableClassesRatio() { + return 0.3333333333333333; + } + + public double getShareablePropertiesInShareableClassesRatio() { + return 0.14285714285714285; + } + + public double getMeanShareablePropertiesInShareableClasses() { + return 0.6666666666666666; + } +} diff --git a/TreeMetamodel/.classpath b/TreeMetamodel/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..67e2a52cbdf0b493ebacd271e58e80a1702d8314 --- /dev/null +++ b/TreeMetamodel/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/TreeMetamodel/.project b/TreeMetamodel/.project new file mode 100644 index 0000000000000000000000000000000000000000..7f4e4f5ba7dc0cd06d7d07ccaba01a3c8386c4c1 --- /dev/null +++ b/TreeMetamodel/.project @@ -0,0 +1,28 @@ + + + TreeMetamodel + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/TreeMetamodel/.settings/org.eclipse.core.resources.prefs b/TreeMetamodel/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..8e024c09d6e22b4aef7126ca642f5b706021983a --- /dev/null +++ b/TreeMetamodel/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//model/TreeMetamodel.ecorediag=UTF-8 +encoding//model/TreeMetamodelExtension.ecore=UTF-8 +encoding//model/TreeMetamodelExtension.ecorediag=UTF-8 diff --git a/TreeMetamodel/META-INF/MANIFEST.MF b/TreeMetamodel/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..30e2f1a5f3ff3921a18435a0206feb3e7ae554d5 --- /dev/null +++ b/TreeMetamodel/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: TreeMetamodel;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: treemetamodel, + treemetamodel.impl, + treemetamodel.util, + treemetamodelextension, + treemetamodelextension.impl, + treemetamodelextension.util +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.emf.ecore;visibility:=reexport +Bundle-ActivationPolicy: lazy +Import-Package: fancyemfcloning.common diff --git a/TreeMetamodel/bin/treemetamodel/A.class b/TreeMetamodel/bin/treemetamodel/A.class new file mode 100644 index 0000000000000000000000000000000000000000..8c5d04a1bde8036d3e9f18f2895e98ba3e3f5a23 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/A.class differ diff --git a/TreeMetamodel/bin/treemetamodel/B.class b/TreeMetamodel/bin/treemetamodel/B.class new file mode 100644 index 0000000000000000000000000000000000000000..c09c6e101c8a7995535192c3497bdd0d7ded280f Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/B.class differ diff --git a/TreeMetamodel/bin/treemetamodel/C.class b/TreeMetamodel/bin/treemetamodel/C.class new file mode 100644 index 0000000000000000000000000000000000000000..aa7c78d0f38e2f391bec2d81b863392a260fee4c Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/C.class differ diff --git a/TreeMetamodel/bin/treemetamodel/D.class b/TreeMetamodel/bin/treemetamodel/D.class new file mode 100644 index 0000000000000000000000000000000000000000..d29865606f108206cbf5a9f77aebc08c4feeffde Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/D.class differ diff --git a/TreeMetamodel/bin/treemetamodel/E.class b/TreeMetamodel/bin/treemetamodel/E.class new file mode 100644 index 0000000000000000000000000000000000000000..4a09ce8e11288dd01e87ca1f783246592b1d2884 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/E.class differ diff --git a/TreeMetamodel/bin/treemetamodel/TreemetamodelFactory.class b/TreeMetamodel/bin/treemetamodel/TreemetamodelFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..15a674e17a85a9ae9422afb9933a399347cb6ab5 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/TreemetamodelFactory.class differ diff --git a/TreeMetamodel/bin/treemetamodel/TreemetamodelPackage$Literals.class b/TreeMetamodel/bin/treemetamodel/TreemetamodelPackage$Literals.class new file mode 100644 index 0000000000000000000000000000000000000000..e35b50ae4e9c15f67e0d79ec4dec2637938898a7 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/TreemetamodelPackage$Literals.class differ diff --git a/TreeMetamodel/bin/treemetamodel/TreemetamodelPackage.class b/TreeMetamodel/bin/treemetamodel/TreemetamodelPackage.class new file mode 100644 index 0000000000000000000000000000000000000000..2911af8f90b15143b0b81b901859a10695d9e075 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/TreemetamodelPackage.class differ diff --git a/TreeMetamodel/bin/treemetamodel/impl/AImpl.class b/TreeMetamodel/bin/treemetamodel/impl/AImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..43bf876b4b9451ccf320beb2ce5222543000eb71 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/impl/AImpl.class differ diff --git a/TreeMetamodel/bin/treemetamodel/impl/BImpl.class b/TreeMetamodel/bin/treemetamodel/impl/BImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..e7aad804f00016ab04a0f370b602a4af0303e7e2 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/impl/BImpl.class differ diff --git a/TreeMetamodel/bin/treemetamodel/impl/CImpl.class b/TreeMetamodel/bin/treemetamodel/impl/CImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..aa94fe520ea14e49e980cfa20837f48eaa7801d5 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/impl/CImpl.class differ diff --git a/TreeMetamodel/bin/treemetamodel/impl/DImpl.class b/TreeMetamodel/bin/treemetamodel/impl/DImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..aaac1ba19206a317c27a3538211dc979202b61d8 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/impl/DImpl.class differ diff --git a/TreeMetamodel/bin/treemetamodel/impl/EImpl.class b/TreeMetamodel/bin/treemetamodel/impl/EImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..8b885c984f8bff328a898c91c04d606e5c706a97 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/impl/EImpl.class differ diff --git a/TreeMetamodel/bin/treemetamodel/impl/TreemetamodelFactoryImpl.class b/TreeMetamodel/bin/treemetamodel/impl/TreemetamodelFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..9ff8be4c9e0718523858496af0a183b418275810 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/impl/TreemetamodelFactoryImpl.class differ diff --git a/TreeMetamodel/bin/treemetamodel/impl/TreemetamodelPackageImpl.class b/TreeMetamodel/bin/treemetamodel/impl/TreemetamodelPackageImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..7f9cc81bfb18ad272c6d659b00e543347e9d702e Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/impl/TreemetamodelPackageImpl.class differ diff --git a/TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory$1.class b/TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..94bc7b49d6990a8531fbb0eae80d045f95ccfa4b Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory$1.class differ diff --git a/TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory.class b/TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..79761d99caef50a5d1000b8852b0d5d7b0baf94c Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory.class differ diff --git a/TreeMetamodel/bin/treemetamodel/util/TreemetamodelSwitch.class b/TreeMetamodel/bin/treemetamodel/util/TreemetamodelSwitch.class new file mode 100644 index 0000000000000000000000000000000000000000..b9ae05d4706d42ef7fe37d915ca4adbdc08b1695 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodel/util/TreemetamodelSwitch.class differ diff --git a/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionFactory.class b/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..787f01cb834a17838a01700722377bb3b5a9ec25 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionFactory.class differ diff --git a/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionPackage$Literals.class b/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionPackage$Literals.class new file mode 100644 index 0000000000000000000000000000000000000000..402de72aad76c40c5b73783c8aefbf601191d296 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionPackage$Literals.class differ diff --git a/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionPackage.class b/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionPackage.class new file mode 100644 index 0000000000000000000000000000000000000000..65b1d428c996ee1bfa9d37d66fd1ab84f461f4b9 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionPackage.class differ diff --git a/TreeMetamodel/bin/treemetamodelextension/X.class b/TreeMetamodel/bin/treemetamodelextension/X.class new file mode 100644 index 0000000000000000000000000000000000000000..d12067a7d144d5b711f98d88f85e3fb246e9ecf2 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodelextension/X.class differ diff --git a/TreeMetamodel/bin/treemetamodelextension/impl/TreemetamodelextensionFactoryImpl.class b/TreeMetamodel/bin/treemetamodelextension/impl/TreemetamodelextensionFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..8f3e57efef086c6f9c5749b59df4544bc90397c6 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodelextension/impl/TreemetamodelextensionFactoryImpl.class differ diff --git a/TreeMetamodel/bin/treemetamodelextension/impl/TreemetamodelextensionPackageImpl.class b/TreeMetamodel/bin/treemetamodelextension/impl/TreemetamodelextensionPackageImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..d15feb8a339d69ce3b8f39568de6c32dfff21d21 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodelextension/impl/TreemetamodelextensionPackageImpl.class differ diff --git a/TreeMetamodel/bin/treemetamodelextension/impl/XImpl.class b/TreeMetamodel/bin/treemetamodelextension/impl/XImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..44a62f42c2a05ea9358dbe8b8ebf2a89e86aec51 Binary files /dev/null and b/TreeMetamodel/bin/treemetamodelextension/impl/XImpl.class differ diff --git a/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionAdapterFactory$1.class b/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionAdapterFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..0e508776e9c036382e68f7c80f28788a01dc71da Binary files /dev/null and b/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionAdapterFactory$1.class differ diff --git a/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionAdapterFactory.class b/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionAdapterFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..549484cf32c06efd760b47b5b9539f0377f5b82d Binary files /dev/null and b/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionAdapterFactory.class differ diff --git a/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionSwitch.class b/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionSwitch.class new file mode 100644 index 0000000000000000000000000000000000000000..61ff8bbcc87cee58d71b23a3f11b7eb5ac7a558c Binary files /dev/null and b/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionSwitch.class differ diff --git a/TreeMetamodel/build.properties b/TreeMetamodel/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..4465407fcc2709f7088bd19ac4e379e426843081 --- /dev/null +++ b/TreeMetamodel/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + model/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/TreeMetamodel/model/TreeMetamodel.ecore b/TreeMetamodel/model/TreeMetamodel.ecore new file mode 100644 index 0000000000000000000000000000000000000000..9ff758f2f255793253dc8dd3c584462488c6d5d6 --- /dev/null +++ b/TreeMetamodel/model/TreeMetamodel.ecore @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TreeMetamodel/model/TreeMetamodel.ecorediag b/TreeMetamodel/model/TreeMetamodel.ecorediag new file mode 100644 index 0000000000000000000000000000000000000000..15344f324c6cfc2d1e4d63a206d6723c8e256ba6 --- /dev/null +++ b/TreeMetamodel/model/TreeMetamodel.ecorediag @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TreeMetamodel/model/TreeMetamodel.genmodel b/TreeMetamodel/model/TreeMetamodel.genmodel new file mode 100644 index 0000000000000000000000000000000000000000..1c67c7caca2c02bf8837cf6f6dda9f2d83e1c3aa --- /dev/null +++ b/TreeMetamodel/model/TreeMetamodel.genmodel @@ -0,0 +1,33 @@ + + + TreeMetamodel.ecore + TreeMetamodelExtension.ecore + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TreeMetamodel/model/TreeMetamodelExtension.ecore b/TreeMetamodel/model/TreeMetamodelExtension.ecore new file mode 100644 index 0000000000000000000000000000000000000000..ead530a057c4e85238c93194bfd994516303d926 --- /dev/null +++ b/TreeMetamodel/model/TreeMetamodelExtension.ecore @@ -0,0 +1,6 @@ + + + + diff --git a/TreeMetamodel/model/TreeMetamodelExtension.ecorediag b/TreeMetamodel/model/TreeMetamodelExtension.ecorediag new file mode 100644 index 0000000000000000000000000000000000000000..c9cf60997da395a5f9237b82f8a443e9540ddfee --- /dev/null +++ b/TreeMetamodel/model/TreeMetamodelExtension.ecorediag @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/TreeMetamodel/plugin.properties b/TreeMetamodel/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..1357209eef2b6c37c0a0fa3acd9dd4efc49ee808 --- /dev/null +++ b/TreeMetamodel/plugin.properties @@ -0,0 +1,4 @@ +# + +pluginName = TreeMetamodel Model +providerName = www.example.org diff --git a/TreeMetamodel/plugin.xml b/TreeMetamodel/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..305d2ba69ab98388ffc6f8672cffbcba2300c5e5 --- /dev/null +++ b/TreeMetamodel/plugin.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.common/.classpath b/fr.inria.diverse.cloning.benchmark.common/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..098194ca4b7d8f45177f94e735506ae3a26b5c94 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.common/.project b/fr.inria.diverse.cloning.benchmark.common/.project new file mode 100644 index 0000000000000000000000000000000000000000..13d11c8e09d936c7efc61713fd2f18ea016aceef --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/.project @@ -0,0 +1,28 @@ + + + fr.inria.diverse.cloning.benchmark.common + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/fr.inria.diverse.cloning.benchmark.common/.settings/org.eclipse.jdt.core.prefs b/fr.inria.diverse.cloning.benchmark.common/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..f42de363afaae68bbd968318f1d331877f5514fc --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/fr.inria.diverse.cloning.benchmark.common/META-INF/MANIFEST.MF b/fr.inria.diverse.cloning.benchmark.common/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..8e4a78e52e77327fce7e229dd8533a8da3221a98 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: BenchmarkBase2 +Bundle-SymbolicName: fr.inria.diverse.cloning.benchmark.common +Bundle-Version: 1.0.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Export-Package: fancyemfcloning.benchmark.base +Require-Bundle: org.eclipse.emf.ecore, + fr.inria.diverse.cloning.cloner;bundle-version="0.1.0" +Import-Package: fr.inria.diverse.cloning.cloner.common diff --git a/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/BenchmarkMaterial.class b/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/BenchmarkMaterial.class new file mode 100644 index 0000000000000000000000000000000000000000..59948856d294c23f0d41795b6ad156a90a936488 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/BenchmarkMaterial.class differ diff --git a/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/MetamodelMetrics.class b/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/MetamodelMetrics.class new file mode 100644 index 0000000000000000000000000000000000000000..074a68719240a8deca7c99d190792bae869b6835 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/MetamodelMetrics.class differ diff --git a/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/ModelCreator.class b/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/ModelCreator.class new file mode 100644 index 0000000000000000000000000000000000000000..8af60ea3d647e1963a303712aecff68faff98ccb Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/ModelCreator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.common/build.properties b/fr.inria.diverse.cloning.benchmark.common/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..34d2e4d2dad529ceaeb953bfcdb63c51d69ffed2 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/BenchmarkMaterial.java b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/BenchmarkMaterial.java new file mode 100644 index 0000000000000000000000000000000000000000..60c09df01e3d973f69fa5d66674768e9bbbb55f5 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/BenchmarkMaterial.java @@ -0,0 +1,20 @@ +package fancyemfcloning.benchmark.base; + +import java.util.List; + +import fr.inria.diverse.cloning.cloner.common.CloningMaterial; + +public interface BenchmarkMaterial { + + public List getMetamodelsName(); + + public List getCloningNames(); + + public ModelCreator getModelCreator(String metamodelName); + + public CloningMaterial getCloningMaterial(String metamodelName, String cloningName); + + public MetamodelMetrics getMetrics(String metamodelName); + + +} diff --git a/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/MetamodelMetrics.java b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/MetamodelMetrics.java new file mode 100644 index 0000000000000000000000000000000000000000..d78968fab48e686ef0c25801334887b3e8b98da5 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/MetamodelMetrics.java @@ -0,0 +1,59 @@ +package fancyemfcloning.benchmark.base; + +public class MetamodelMetrics { + + private int numberOfProperties; + private int numberOfReferences; + private int numberOfAttributes; + private int numberOfMutableProperties; + private int numberOfMutableReferences; + private int numberOfMutableAttributes; + private int numberOfClasses; + + public MetamodelMetrics(int numberOfProperties, int numberOfReferences, int numberOfAttributes, + int numberOfMutableProperties, int numberOfMutableReferences, int numberOfMutableAttributes, + int numberOfClasses) { + super(); + this.numberOfProperties = numberOfProperties; + this.numberOfReferences = numberOfReferences; + this.numberOfAttributes = numberOfAttributes; + this.numberOfMutableProperties = numberOfMutableProperties; + this.numberOfMutableReferences = numberOfMutableReferences; + this.numberOfMutableAttributes = numberOfMutableAttributes; + this.numberOfClasses = numberOfClasses; + } + + public int getNumberOfProperties() { + return numberOfProperties; + } + + public int getNumberOfReferences() { + return numberOfReferences; + } + + public int getNumberOfAttributes() { + return numberOfAttributes; + } + + public int getNumberOfMutableProperties() { + return numberOfMutableProperties; + } + + public int getNumberOfMutableReferences() { + return numberOfMutableReferences; + } + + public int getNumberOfMutableAttributes() { + return numberOfMutableAttributes; + } + + public int getNumberOfClasses() { + return numberOfClasses; + } + + public String toJavaConstruct() { + return "new " + this.getClass().getSimpleName() + "(" + numberOfProperties + "," + numberOfReferences + "," + + numberOfAttributes + "," + numberOfMutableProperties + "," + numberOfMutableReferences + "," + + numberOfMutableAttributes + "," + numberOfClasses + ")\n"; + } +} diff --git a/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/ModelCreator.java b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/ModelCreator.java new file mode 100644 index 0000000000000000000000000000000000000000..e700c41005667e45fa45426f0baa888ecce49bea --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/ModelCreator.java @@ -0,0 +1,19 @@ +package fancyemfcloning.benchmark.base; + +import org.eclipse.emf.ecore.resource.ResourceSet; + +public abstract class ModelCreator { + + int size = -1; + + public abstract ResourceSet createTreeModel(); + + public void setMemorySize(int size) { + this.size = size; + } + + public int getMemorySize() { + return size; + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/.classpath b/fr.inria.diverse.cloning.benchmark.materialgenerator/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..f8b4f2852132ef4f6ed6a6063d6c8fa677ab03b7 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/.classpath @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/.project b/fr.inria.diverse.cloning.benchmark.materialgenerator/.project new file mode 100644 index 0000000000000000000000000000000000000000..abb0bdb78adfe89421519dfcf4e31f1d327b5f69 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/.project @@ -0,0 +1,28 @@ + + + fr.inria.diverse.cloning.benchmark.materialgenerator + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.core.resources.prefs b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..de6e538dd289b4f7dc44fb84ead174d9ff5616dd --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,10 @@ +eclipse.preferences.version=1 +encoding//testdata/shareAttributes.ecore=UTF-8 +encoding//testdata/shareAttributes.ecorediag=UTF-8 +encoding//testdata/simple1.ecore=UTF-8 +encoding//testdata/simple1.ecorediag=UTF-8 +encoding//testdata/simple2.ecore=UTF-8 +encoding//testdata/simple2.ecorediag=UTF-8 +encoding//testdata/welldesigned.ecore=UTF-8 +encoding//testdata/welldesigned.ecorediag=UTF-8 +encoding//testdata/welldesigned2roots.ecorediag=UTF-8 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.jdt.core.prefs b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..443e08599a2e61e27329fbffd44d862d8675dde4 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.m2e.core.prefs b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..f897a7f1cb2389f85fe6381425d29f0a9866fb65 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/META-INF/MANIFEST.MF b/fr.inria.diverse.cloning.benchmark.materialgenerator/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..757a2879742a266533feeedc020fe460a8289d0b --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: BenchmarkGenerator +Bundle-SymbolicName: fr.inria.diverse.cloning.benchmark.materialgenerator;singleton:=true +Bundle-Version: 1.0.0.qualifier +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;bundle-version="3.8.101", + org.eclipse.emf.codegen.ecore;bundle-version="2.9.1", + org.eclipse.emf.ecore.xmi;bundle-version="2.9.1", + org.eclipse.jdt.core;bundle-version="3.9.1", + fr.inria.diverse.cloning.benchmark.common;bundle-version="0.1.0", + fr.inria.diverse.cloning.cloner;bundle-version="0.1.0", + fr.inria.diverse.cloning.materialgenerator;bundle-version="1.0.0", + org.eclipse.text;bundle-version="3.5.300", + fr.inria.diverse.cloning.benchmark.common, + org.eclipse.equinox.registry +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Export-Package: fancyemfcloning.benchmark.generator +Bundle-ClassPath: ., + lib/zt-zip-1.7.jar, + lib/jopt-simple-4.6.jar, + lib/commons-io-1.4.jar, + lib/slf4j-api-1.6.6.jar diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..8bb69ddbc01cfcbcb541661231095f4b53578a6c Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/Constants.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/Constants.class new file mode 100644 index 0000000000000000000000000000000000000000..c0848ab77c6bb95c9be84184ecb5a5d8570feef3 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/Constants.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/EMFCodeGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/EMFCodeGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..029a76b9cd866df1f3f4eaa82429dd47a728b882 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/EMFCodeGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator$NotEnoughObjectsException.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator$NotEnoughObjectsException.class new file mode 100644 index 0000000000000000000000000000000000000000..89f862e1010de15e1f7c8e30d4618cfa7a1685bf Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator$NotEnoughObjectsException.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..e653e0192923e6249de12e3adb5eb94078e8056d Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator$ZipHelper.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator$ZipHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..b596332d6ef89962fc8dd26138565398d59efd1d Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator$ZipHelper.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..13a7d753efe868109683dbb5dadaca700f57b6b6 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/main/Application.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/main/Application.class new file mode 100644 index 0000000000000000000000000000000000000000..33410a66bff9732e03e98d62bea7d3394eb69e2d Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/main/Application.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/build.properties b/fr.inria.diverse.cloning.benchmark.materialgenerator/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..7fc54409789a39187ed1a57d8c59e2405d500d9c --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/build.properties @@ -0,0 +1,8 @@ +source.. = src/ +output.. = target/classes +bin.includes = plugin.xml,\ + META-INF/,\ + .,\ + lib/jopt-simple-4.6.jar,\ + lib/commons-io-1.4.jar,\ + lib/slf4j-api-1.6.6.jar diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/build.xml b/fr.inria.diverse.cloning.benchmark.materialgenerator/build.xml new file mode 100644 index 0000000000000000000000000000000000000000..153a494438b578ca31c706fa18bbf8983669a36d --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/build.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/ivy.xml b/fr.inria.diverse.cloning.benchmark.materialgenerator/ivy.xml new file mode 100644 index 0000000000000000000000000000000000000000..5cdd07df061ec141d9bdf16b9f50c259e4348310 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/ivy.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/commons-io-1.4.jar b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/commons-io-1.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..133dc6cb35f5ca2c5920fd0933a557c2def88680 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/commons-io-1.4.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6-javadoc.jar b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6-javadoc.jar new file mode 100644 index 0000000000000000000000000000000000000000..d782e5a281e3eb67dffd3632fba5c8f0fbf24847 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6-javadoc.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6-sources.jar b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..94d41f1439bc6f87cb13c001b09406053e4ba106 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6-sources.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6.jar b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..a963d1fa4dcc1645d2d1172db6ddb97372a1bec3 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/slf4j-api-1.6.6.jar b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/slf4j-api-1.6.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..4c03fa6bb21496873cc90e5442f89905c95e7316 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/slf4j-api-1.6.6.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7-javadoc.jar b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7-javadoc.jar new file mode 100644 index 0000000000000000000000000000000000000000..1453d45257116a52205219c4ef8bd21b07b616c0 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7-javadoc.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7-sources.jar b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..c7fab06056e9445a5b1f3c3a117e9d8ef226d4a2 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7-sources.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7.jar b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7.jar new file mode 100644 index 0000000000000000000000000000000000000000..0cf09cd249afc711c77fc9187eb4eec023ab4aa4 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/plugin.xml b/fr.inria.diverse.cloning.benchmark.materialgenerator/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..b7084f150ac9c2226362a3166d4ff7b72cf091db --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/plugin.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.java b/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..41327bcdaaf732062b6c8904c1d760886d860ec1 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.java @@ -0,0 +1,167 @@ +package fancyemfcloning.benchmark.generator; + +import java.io.File; +import java.io.IOException; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import fancyemfcloning.benchmark.base.BenchmarkMaterial; +import fancyemfcloning.benchmark.base.MetamodelMetrics; +import fancyemfcloning.benchmark.base.ModelCreator; +import fr.inria.diverse.cloning.cloner.common.CloningMaterial; +import fr.inria.diverse.cloning.cloner.util.EcoreHelper; +import fr.inria.diverse.cloning.materialgenerator.util.CodeGeneration; + +public class BenchmarkMaterialGenerator { + + private static final String[] cloningNames = { "Deep", "MutClassOnly" }; + + public static MetamodelMetrics computeMetrics(ResourceSet metamodel) { + int mutableProperties = 0; + int mutableAttributes = 0; + int mutableReferences = 0; + int totalProperties = 0; + int totalAttributes = 0; + int totalReferences = 0; + int numberOfClasses = 0; + for (EClass c : EcoreHelper.findEClasses(metamodel)) { + numberOfClasses++; + for (EStructuralFeature f : c.getEAllStructuralFeatures()) { + totalProperties++; + if (f.getName().endsWith("_m")) + mutableProperties++; + if (f instanceof EReference) { + totalReferences++; + if (f.getName().endsWith("_m")) + mutableReferences++; + } + if (f instanceof EAttribute) { + totalAttributes++; + if (f.getName().endsWith("_m")) + mutableAttributes++; + } + } + } + + return new MetamodelMetrics(totalProperties, totalReferences, totalAttributes, mutableProperties, + mutableReferences, mutableAttributes, numberOfClasses); + } + + public static void generate(List metamodelsnames, List metamodels, File outputFolder) { + + // Computing the class name + String className = "BenchmarkMaterialImpl"; + + String packageFullName = "cloningbenchmark"; + + try { + // Preparing the output file and the printer + File outputDir = new File(outputFolder, packageFullName); + outputDir.mkdirs(); + File outputFile = new File(outputDir, className + ".java"); + outputFile.createNewFile(); + + PrintStream printer = new PrintStream(outputFile); + + String header = "package " + packageFullName + ";\n"; + String imports = ""; + String classbody = ""; + + // ModelCreator Interface and EObject imports + imports += "import " + ModelCreator.class.getCanonicalName() + ";\n"; + imports += "import " + BenchmarkMaterial.class.getCanonicalName() + ";\n"; + imports += "import " + CloningMaterial.class.getCanonicalName() + ";\n"; + imports += "import " + List.class.getCanonicalName() + ";\n"; + imports += "import " + ArrayList.class.getCanonicalName() + ";\n"; + imports += "import " + MetamodelMetrics.class.getCanonicalName() + ";\n"; + + // Class declaration + classbody += "public class " + className + " implements " + BenchmarkMaterial.class.getSimpleName() + + " {\n"; + + // getMetamodelsNames + classbody += "public List getMetamodelsName() {\n"; + classbody += "List result = new ArrayList();\n"; + for (String mmname : metamodelsnames) { + classbody += "result.add(\"" + mmname + "\");\n"; + + } + classbody += "return result;\n"; + classbody += "}\n"; + + // getCloningNames + classbody += "public List getCloningNames() {\n"; + classbody += "List result = new ArrayList();\n"; + for (String c : cloningNames) { + classbody += "result.add(\"" + c + "\");\n"; + + } + classbody += "return result;\n"; + classbody += "}\n"; + + // getModelCreator + classbody += "public ModelCreator getModelCreator(String metamodelName) {\n"; + classbody += "switch (metamodelName.toLowerCase()) {\n"; + for (String mmname : metamodelsnames) { + imports += "import " + mmname.toLowerCase() + "modelcreator." + CodeGeneration.firstCharUp(mmname) + + "ModelCreator;\n"; + classbody += "case \"" + mmname.toLowerCase() + "\":\n"; + classbody += "return " + CodeGeneration.firstCharUp(mmname) + "ModelCreator.getInstance();\n"; + } + classbody += "default: return null;"; + classbody += "}\n"; + classbody += "}\n"; + + // getCloningMaterial + classbody += "public CloningMaterial getCloningMaterial(String metamodelName, String cloningName) {\n"; + classbody += "switch (metamodelName.toLowerCase()) {\n"; + for (String mmname : metamodelsnames) { + classbody += "case \"" + mmname.toLowerCase() + "\":\n"; + classbody += "switch (cloningName.toLowerCase()) {\n"; + for (String cloningName : cloningNames) { + imports += "import " + mmname.toLowerCase() + cloningName.toLowerCase() + "." + + CodeGeneration.firstCharUp(mmname) + cloningName + "CloningMaterial;\n"; + classbody += "case \"" + cloningName.toLowerCase() + "\":\n"; + classbody += "return " + CodeGeneration.firstCharUp(mmname) + cloningName + + "CloningMaterial.getInstance();\n"; + } + classbody += "default: return null;"; + classbody += "}\n"; + } + classbody += "default: return null;"; + classbody += "}\n"; + classbody += "}\n"; + + // getMetrics + classbody += "public MetamodelMetrics getMetrics(String metamodelName) {\n"; + classbody += "switch(metamodelName) {\n"; + Iterator rsit = metamodels.iterator(); + for (String mmname : metamodelsnames) { + ResourceSet metamodel = rsit.next(); + classbody += "case \"" + mmname + "\": return " + computeMetrics(metamodel).toJavaConstruct() + ";\n"; + } + classbody += "default: return null;\n"; + classbody += "}\n"; + classbody += "}\n"; + + // End class decl + classbody += "}\n"; + + // Printing everything + printer.println(CodeGeneration.formatJavaCode(header + imports + classbody)); + printer.close(); + + } catch (IOException e1) { + e1.printStackTrace(); + } + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/EMFCodeGenerator.java b/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/EMFCodeGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..467076a5814ea6130894ec6b3e38df75c0fd1da3 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/EMFCodeGenerator.java @@ -0,0 +1,126 @@ +package fancyemfcloning.benchmark.generator; + +import java.io.File; +import java.util.HashSet; +import java.util.Set; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.Path; +import org.eclipse.emf.codegen.ecore.generator.Generator; +import org.eclipse.emf.codegen.ecore.genmodel.GenJDKLevel; +import org.eclipse.emf.codegen.ecore.genmodel.GenModel; +import org.eclipse.emf.codegen.ecore.genmodel.GenModelFactory; +import org.eclipse.emf.codegen.ecore.genmodel.generator.GenBaseGeneratorAdapter; +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.BasicMonitor; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.Diagnostician; +import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl; + +import fr.inria.diverse.cloning.cloner.util.EcoreHelper; + +public class EMFCodeGenerator { + + private static final String rootClassName = fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject.class + .getCanonicalName(); + + private static final boolean overrideInterface = false; + private static final String rootInterfaceName = fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject.class + .getCanonicalName(); + + /** + * Exception thrown when the ecore file is not valid. + * + * @author ebousse + * + */ + public static class EMFGenerationException extends Exception { + private static final long serialVersionUID = -7761342805184071165L; + String message; + + public EMFGenerationException(String message) { + this.message = message; + } + + @Override + public String getMessage() { + return message; + } + } + + /** + * Generator operation. + * + * @param serializedMetamodel + * Ecore files that represent a metamodel. + * @param metamodelname + * The name to consider for the metamodel. + * @param project + * The Eclipse project in which the code should be generated. + * @return The loaded metamodel in memory, for further use. + * @throws EMFGenerationException + * If an ecore file is invalid. + */ + public static ResourceSet generate(Set serializedMetamodel, String metamodelname, IProject project) + throws EMFGenerationException { + + // First loading all the ecore files + EcoreResourceFactoryImpl fact = new EcoreResourceFactoryImpl(); + if (!EPackage.Registry.INSTANCE.containsKey(EcorePackage.eNS_URI)) + EPackage.Registry.INSTANCE.put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE); + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("ecore", fact); + ResourceSet rs = new ResourceSetImpl(); + for (File f : serializedMetamodel) + rs.getResource(URI.createFileURI(f.getAbsolutePath()), true); + + // Then finding all the EPackages (we consider a single root package per ecore file) + Set rootPackages = new HashSet(); + for (Resource resource : rs.getResources()) + rootPackages.add((EPackage) resource.getContents().get(0)); + + // Analysing all EPackages + BasicDiagnostic diagnosticChain = new BasicDiagnostic(); + for (EPackage ePackage : EcoreHelper.findEPackages(rs)) + Diagnostician.INSTANCE.validate(ePackage, diagnosticChain); + if (diagnosticChain.getSeverity() != Diagnostic.ERROR) { + + GenModel genModel = GenModelFactory.eINSTANCE.createGenModel(); + genModel.setComplianceLevel(GenJDKLevel.JDK70_LITERAL); + genModel.setModelDirectory("/" + project.getName() + "/src"); + for (File f : serializedMetamodel) + genModel.getForeignModel().add(new Path(f.getAbsolutePath()).lastSegment()); + genModel.setModelName(metamodelname); + genModel.setRootExtendsClass(rootClassName); + if (overrideInterface) + genModel.setRootExtendsInterface(rootInterfaceName); + genModel.initialize(rootPackages); + genModel.reconcile(); + genModel.setCanGenerate(true); + genModel.setValidateModel(true); + + // Generating the model code from the genmodel + Generator generator = new Generator(); + generator.setInput(genModel); + generator.generate(genModel, GenBaseGeneratorAdapter.MODEL_PROJECT_TYPE, "model project", new BasicMonitor()); + //generator.generate(genModel, GenBaseGeneratorAdapter.MODEL_PROJECT_TYPE, "model project",null); + + } else { + + String message = "Couldnt generate EMF code because of an invalid ecore file. Message: "; + for (Diagnostic d : diagnosticChain.getChildren()) { + if (d.getSeverity() == Diagnostic.ERROR) + message += d.getMessage(); + } + throw new EMFGenerationException(message); + + } + + return rs; + } +} diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.java b/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..4d517d37715a742c7ef421bedcccef9e9401392c --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.java @@ -0,0 +1,400 @@ +package fancyemfcloning.benchmark.generator; + +import java.io.File; +import java.io.IOException; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.Set; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; + +import fancyemfcloning.benchmark.base.ModelCreator; +import fr.inria.diverse.cloning.cloner.util.EcoreHelper; +import fr.inria.diverse.cloning.materialgenerator.util.CodeGeneration; + +/** + * Generator of Java source code that implements a class with a single method that creates a model of a given metamodel. + * + * @author ebousse + * + */ +public class ModelCreatorGenerator { + + public static final int UNBOUNDED_MULTIPLICITY_NUMBER = 2; + + /** + * Exception thrown when there are not enough model elements available for a reference with "unique" + * + * @author ebousse + * + */ + public static class NotEnoughObjectsException extends Exception { + private static final long serialVersionUID = 8314677749570934919L; + private String reference; + private String type; + + public NotEnoughObjectsException(String reference, String type) { + super(); + this.reference = reference; + this.type = type; + } + + @Override + public String getMessage() { + return "Not enough objects to initialise reference " + reference + " of type " + type + ".\n"; + } + } + + /** + * The names of the objects created from each EClass + */ + private static Map> createdObjects; + + /** + * Counter used to give unique names to instances. + */ + private static int counter; + + /** + * Generates a random value for a given datatype, to be printed. + * + * @param datatype + * Some Ecore datatype (not all are taken into account) + * @return THe string representation of the random value, ready to be printed. + */ + private static String generateRandomDatatypeValue(EDataType datatype) { + Random random = new Random(); + + switch (datatype.getName()) { + case "EInt": + return String.valueOf(random.nextInt()); + case "EBoolean": + return String.valueOf(random.nextBoolean()); + case "EDouble": + return String.valueOf(random.nextDouble()); + case "EByte": + byte[] bytearray = new byte[1]; + random.nextBytes(bytearray); + return String.valueOf(bytearray[0]); + case "EString": + return "\"" + String.valueOf(random.nextInt()) + "\""; + default: + return "-1"; + } + + } + + /** + * Generates the line of code that will put a value in a property. Mainly here to handle the multiplicties. + * + * @param feature + * The property in which to put a value. + * @param objectName + * The object whose property is written. + * @param value + * The string representation of the value to put. + * @return The line of code doing all this. + */ + private static String createSetOrAddValue(EStructuralFeature feature, String objectName, String value) { + if (feature.isMany()) { + return objectName + ".get" + CodeGeneration.firstCharUp(feature.getName()) + "()" + ".add(" + value + + ");\n"; + } else { + return objectName + ".set" + CodeGeneration.firstCharUp(feature.getName()) + "(" + value + ");\n"; + } + } + + /** + * Generates a unique ID for an object. + * + * @return The unique ID. + */ + private static String generateObjectNumber() { + return String.valueOf(counter++); + } + + private static String generateObjectName(EClass c) { + return c.getName().toLowerCase() + generateObjectNumber(); + } + + /** + * Generates the lines of code required to create an object and all its containments, including all of their + * attributes. Recursive. + * + * @param c + * The class of the object to create. + * @param objectName + * The name of the object to create. + * @return The lines of code doing all that. + */ + private static String generateObjectCreationRec(EClass c, String objectName) { + + createdObjects.get(c).add(objectName); + + // Creation of the object + String objectCreation = c.getName() + " " + objectName + "=factory" + c.getEPackage().getName() + ".create" + + c.getName() + "();\n"; + + // Creation of the children (by containment) + String childrenCreation = ""; + + // For each feature + for (EStructuralFeature feature : c.getEAllStructuralFeatures()) { + + // We compute the number of objects/primitives to create + int numberOfChildren = 0; + int upperBound = feature.getUpperBound(); + if (upperBound <= -1) + numberOfChildren = UNBOUNDED_MULTIPLICITY_NUMBER; + else + numberOfChildren = upperBound; + // Then we create them + for (int i = 0; i < numberOfChildren; i++) { + // If attribute, random generation + if (feature instanceof EAttribute) { + EAttribute att = (EAttribute) feature; + objectCreation += createSetOrAddValue(att, objectName, + generateRandomDatatypeValue(att.getEAttributeType())); + } + // If containment, recursive call + if (feature instanceof EReference) { + EReference ref = (EReference) feature; + if (ref.isContainment()) { + String childName = generateObjectName(ref.getEReferenceType()); + childrenCreation += generateObjectCreationRec(ref.getEReferenceType(), childName); + objectCreation += createSetOrAddValue(ref, objectName, childName); + } + } + } + } + + // Returning the constructed string + return childrenCreation + objectCreation; + + } + + /** + * Generates the lines of code that will randomly initialise all the references of all the objects, considering that + * all objects already exist. Uses the field "createdObjects" to do so. + * + * @return The lines of code doing that. + * @throws NotEnoughObjectsException + * If there are not enough objects available to fill a "many" and "unique" reference + */ + private static String generateReferencesSet() throws NotEnoughObjectsException { + + String out = ""; + + for (EClass c : createdObjects.keySet()) { + + for (String objectName : createdObjects.get(c)) { + + // For each reference + for (EReference ref : c.getEAllReferences()) { + + if (!ref.isContainment()) { + EClass type = ref.getEReferenceType(); + // We compute the number of objects to set + int numberOfChildren = 0; + int upperBound = ref.getUpperBound(); + if (upperBound <= -2) + numberOfChildren = UNBOUNDED_MULTIPLICITY_NUMBER; + else + numberOfChildren = upperBound; + // Then we set them + List possibleObjects = createdObjects.get(type); + if (ref.isUnique()) { + Iterator it = possibleObjects.iterator(); + for (int i = 0; i < numberOfChildren; i++) { + if (it.hasNext()) { + out += createSetOrAddValue(ref, objectName, it.next()); + } else { + throw new NotEnoughObjectsException(c.getName() + "." + ref.getName(), ref + .getEReferenceType().getName()); + } + } + } else { + for (int i = 0; i < numberOfChildren; i++) { + String object = possibleObjects.get(new Random().nextInt(possibleObjects.size())); + out += createSetOrAddValue(ref, objectName, object); + } + } + } + } + } + + } + + return out; + + } + + /** + * Main operation of the class: will generate a complete class to generate a model for a metamodel. + * + * @param metamodelName + * The name of the metamodel. Used to name the package and the class. + * @param outputFolder + * The src folder in which to put the package and the class. + */ + public static void generateModelCreator(ResourceSet metamodel, String metamodelName, String outputFolder) { + + // Setting global variables + createdObjects = new HashMap>(); + for (EClass c : EcoreHelper.findEClasses(metamodel)) + createdObjects.put(c, new ArrayList()); + counter = 0; + + // Computing the class name + String className = CodeGeneration.firstCharUp(metamodelName + "ModelCreator"); + + String packageFullName = metamodelName.toLowerCase() + "modelcreator"; + + try { + // Preparing the output file and the printer + File outputDir = new File(outputFolder, packageFullName); + outputDir.mkdirs(); + File outputFile = new File(outputDir, className + ".java"); + outputFile.createNewFile(); + + PrintStream printer = new PrintStream(outputFile); + + // Getting the root classes, from which the whole algorithm begins + Set roots = EcoreHelper.findRoots(metamodel); + + String header = "package " + packageFullName + ";\n"; + String imports = ""; + String classbody = ""; + + // ModelCreator Interface and EObject imports + imports += "import " + ModelCreator.class.getCanonicalName() + ";\n"; + imports += "import org.eclipse.emf.ecore.EObject;\n"; + imports += "import org.eclipse.emf.ecore.resource.Resource;\n"; + imports += "import org.eclipse.emf.ecore.resource.ResourceSet;\n"; + imports += "import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;\n"; + imports += "import java.io.File;\n"; + imports += "import org.eclipse.emf.common.util.URI;\n"; + imports += "import java.io.IOException;\n"; + imports += "import "+XMIResourceImpl.class.getCanonicalName() + ";\n"; + + // Class declaration + classbody += "public class " + className + " extends " + ModelCreator.class.getSimpleName() + " {\n"; + + + + + + + + + + + + // private instance declaration + classbody += "private static " + className + " instance;\n"; + + // private constructor declaration + classbody += "private " + className + "(){};\n"; + + // getInstance method declaration + classbody += "public static " + className + " getInstance() {\n"; + classbody += "if (instance == null)\n"; + classbody += "instance = new " + className + "();\n"; + classbody += "return instance;\n"; + // end init method declaration + classbody += "}\n"; + + + + + + + + + + + + + + // Method declaration + classbody += "public ResourceSet createTreeModel() {\n"; + + // Creating a resource set + resource + classbody += "ResourceSet model = new ResourceSetImpl();"; + classbody += "File file = new File(\"\");\n"; + classbody += "try {\n"; + classbody += "file = File.createTempFile(\"clonedmodel\", \".xmi\");\n"; + classbody += "file.delete();\n"; + classbody += "} catch (IOException e) {}\n"; + //classbody += "Resource resource = model.createResource(URI.createFileURI(file.getAbsolutePath()));\n"; + + classbody += "Resource resource = new XMIResourceImpl(URI.createFileURI(file.getAbsolutePath()))\n;"; + //classbody += "resource.setURI(URI.createFileURI(file.getAbsolutePath()))\n;"; + classbody += "model.getResources().add(resource)\n;"; + + + // We must go through all the classes to findEPackageckages + Set packages = new HashSet(); + for (EClass c : createdObjects.keySet()) + packages.add(c.getEPackage()); + + // Then for each EPackage, we create a factory and an import + for (EPackage p : packages) { + String packageName = p.getName(); + String packageNameCharUp = CodeGeneration.firstCharUp(packageName); + imports += "import " + packageName.toLowerCase() + ".*;\n"; + classbody += packageNameCharUp + "Factory factory" + packageName + " = " + packageNameCharUp + + "Factory.eINSTANCE;\n"; + } + + // Generation of the objects + for (EClass root : roots) { + classbody += "// Generation of the objects for root " + root.getName() + "\n"; + String objectname = generateObjectName(root); + classbody += generateObjectCreationRec(root, objectname); + classbody += "resource.getContents().add(" + objectname + ");\n"; + } + + // Generation of the references + classbody += "// Generation of the references\n"; + classbody += generateReferencesSet(); + + // Returning the created model + classbody += "// Returning the resource set = model\n"; + classbody += "return model;\n"; + + // End method decl + classbody += "}\n"; + + // End class decl + classbody += "}\n"; + + // Printing everything + printer.println(CodeGeneration.formatJavaCode(header + imports + classbody)); + printer.close(); + + // } catch (NoSingleRootException e) { + // System.err.println(e.getMessage()); + } catch (IOException e1) { + System.err.println("Impossible to write the model creator file for: " + metamodelName); + e1.printStackTrace(); + } catch (NotEnoughObjectsException e) { + System.err.println(e.getMessage()); + } + + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.java b/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..8dd34d1f3873a8d311d3f2ec3277478c33922a78 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.java @@ -0,0 +1,117 @@ +package fancyemfcloning.benchmark.generator; + +import java.io.File; +import java.io.IOException; +import java.io.PrintStream; + +import org.zeroturnaround.zip.ZipUtil; + +import fancyemfcloning.benchmark.base.BenchmarkMaterial; +import fr.inria.diverse.cloning.materialgenerator.util.CodeGeneration; + +public class OsgiBundleGenerator { + + private static final String generatedBenchmarkMaterialPackageName = "cloningbenchmark"; + private static final String generatedBenchmarkMaterialClassName = "BenchmarkMaterialImpl"; + private static final String clonerPluginId = "fr.inria.diverse.cloning.cloner"; + private static final String benchmarkCommonPluginId = "fr.inria.diverse.cloning.benchmark.common"; + private static final String bundleName = "CloningBenchmark"; + + public static void generateActivator(File outputFolder) { + + String className = "Activator"; + String packageFullName = "cloningbenchmark"; + + // Preparing the output file and the printer + File outputDir = new File(outputFolder, packageFullName); + outputDir.mkdirs(); + File outputFile = new File(outputDir, className + ".java"); + try { + outputFile.createNewFile(); + PrintStream printer = new PrintStream(outputFile); + + String content = "package " + + packageFullName + + ";" + + "import org.osgi.framework.BundleActivator;" + + "import org.osgi.framework.BundleContext;" + + "import "+BenchmarkMaterial.class.getCanonicalName()+";" + + "public class " + + className + + " implements BundleActivator { " + + "private static BundleContext context; " + + "static BundleContext getContext() {return context;} " + + "public void start(BundleContext bundleContext) throws Exception {" + + " Activator.context = bundleContext;" + + " context.registerService(\""+BenchmarkMaterial.class.getCanonicalName()+"\", new "+generatedBenchmarkMaterialClassName+"(), null);" + + " } " + "public void stop(BundleContext bundleContext) throws Exception {" + + " Activator.context = null;" + " }" + "}"; + + printer.print(CodeGeneration.formatJavaCode(content)); + printer.close(); + + } catch (IOException e) { + // TODO Bloc catch généré automatiquement + e.printStackTrace(); + } + } + + public static void generateComponentConf(File outputFolder) { + + // Preparing the output file and the printer + outputFolder.mkdirs(); + File outputFile = new File(outputFolder, "component.xml"); + try { + outputFile.createNewFile(); + PrintStream printer = new PrintStream(outputFile); + + String content = " " + + " " + + " " + "" + + " " + + "" + " "; + printer.print(content); + printer.close(); + } catch (IOException e) { + // TODO Bloc catch généré automatiquement + e.printStackTrace(); + } + + } + + + public static void generateManifest(File outputFolder) { + // Preparing the output file and the printer + File outputDir = new File(outputFolder, "META-INF"); + outputDir.mkdirs(); + File outputFile = new File(outputDir, "MANIFEST.MF"); + try { + outputFile.createNewFile(); + PrintStream printer = new PrintStream(outputFile); + + String content = "Manifest-Version: 1.0\n" + + "Service-Component: component.xml\n" + + "Require-Bundle: org.eclipse.core.runtime;bundle-version=\"3.9.0\", org.eclipse.emf.ecore;bundle-version=\"2.9.1\","+clonerPluginId+";bundle-version=\"0.1.0\","+benchmarkCommonPluginId+";bundle-version=\"1.0.0\",org.eclipse.emf.ecore.xmi\n" + + "Bundle-ActivationPolicy: lazy\n" + + "Bundle-Version: 1\n" + + "Bundle-Name: "+bundleName+"\n" + + "Bundle-Activator: cloningbenchmark.Activator\n" + + "Bundle-ManifestVersion: 2\n" + + "Bundle-SymbolicName: "+bundleName+"\n" + + "Bundle-RequiredExecutionEnvironment: JavaSE-1.7\n"; + printer.print(content); + printer.close(); + } catch (IOException e) { + // TODO Bloc catch généré automatiquement + e.printStackTrace(); + } + + } + + public static void createJar(File inputFolder, File outputFile) { + //ZipHelper.zipDir(inputFolder.getAbsolutePath(), outputFile.getAbsolutePath()); + ZipUtil.pack(inputFolder, outputFile); + + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/main/Application.java b/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/main/Application.java new file mode 100644 index 0000000000000000000000000000000000000000..cb462aa8f8a2e8c1a6180d22ac9cf2887c65888a --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/main/Application.java @@ -0,0 +1,192 @@ +package fancyemfcloning.benchmark.generator.main; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import joptsimple.OptionException; +import joptsimple.OptionParser; +import joptsimple.OptionSet; +import joptsimple.OptionSpec; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IncrementalProjectBuilder; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IPath; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.equinox.app.IApplication; +import org.eclipse.equinox.app.IApplicationContext; +import org.eclipse.jdt.core.IClasspathAttribute; +import org.eclipse.jdt.core.IClasspathEntry; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.internal.core.ClasspathEntry; + +import fancyemfcloning.benchmark.generator.BenchmarkMaterialGenerator; +import fancyemfcloning.benchmark.generator.EMFCodeGenerator; +import fancyemfcloning.benchmark.generator.ModelCreatorGenerator; +import fancyemfcloning.benchmark.generator.OsgiBundleGenerator; +import fr.inria.diverse.cloning.cloner.util.Log; +import fr.inria.diverse.cloning.materialgenerator.generators.PImplGenerator; +import fr.inria.diverse.cloning.materialgenerator.tagger.Tagger; +import fr.inria.diverse.cloning.materialgenerator.tagger.impl.DeepTagger; +import fr.inria.diverse.cloning.materialgenerator.tagger.impl.MutClassesOnlyTagger; + +/** + * This class controls all aspects of the application's execution + */ +@SuppressWarnings("restriction") +public class Application implements IApplication { + + /* + * (non-Javadoc) + * + * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) + */ + public Object start(IApplicationContext context) throws Exception { + + Log.info("Starting cloning benchmark material generator."); + + String[] args = (String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS); + + // Specifying arguments + OptionParser parser = new OptionParser(); + OptionSpec metamodelsFolderOption = parser + .accepts("metamodelsFolder", "A folder containing ecore files to process.").withRequiredArg() + .required().describedAs("path").ofType(File.class).required(); + OptionSpec outputFileOption = parser.accepts("outputFile", "The OSGI jar bundle to create.") + .withRequiredArg().required().describedAs("path").ofType(File.class).required(); + + try { + + // Parsing arguments (throws an error if problem) + OptionSet options = parser.parse(args); + File metamodelsFolder = options.valueOf(metamodelsFolderOption); + File outputFile = options.valueOf(outputFileOption); + + + // Getting ecore files + List> metamodelsFiles = new ArrayList<>(); + List names = new ArrayList(); + for (File file : metamodelsFolder.listFiles()){ + if (file.getName().endsWith(".ecore")) { + Log.info("Found "+file.getAbsolutePath()); + Set files = new HashSet(); + files.add(file); + metamodelsFiles.add(files); + names.add(file.getName().replace(".ecore", "")); + } + } + + + + + // Creating the java project in which we put everything + File tmpDir = File.createTempFile("cloningBenchmarkMaterial", ""); + Log.info("Creating temporary project folder: "+tmpDir.getAbsolutePath()); + tmpDir.delete(); + tmpDir.mkdir(); + IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription("yayProject"); + description.setLocationURI(java.net.URI.create(tmpDir.getAbsolutePath())); + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(description.getName()); + project.delete(true, true, null); // to make sure that there is nothing there already + project.create(description, null); + project.open(null); + + + List metamodels = new ArrayList(); + + File srcFolder = new File(tmpDir, "src"); + File binFolder = new File(tmpDir, "bin"); + + Log.enableProgress(metamodelsFiles.size()); + + // Iterating through metamodels an generating everything + Iterator namesIt = names.iterator(); + for (Set metamodel : metamodelsFiles) { + + String name = namesIt.next(); + + Log.info("Generating material for metamodel \""+name+"\""); + Log.plusLevel(); + Log.plusLevel(); + + Log.info("Calling EMF code generator..."); + ResourceSet rs = EMFCodeGenerator.generate(metamodel, name, project); + + // Tagging + Set taggers = new HashSet(); + Tagger tagger = new MutClassesOnlyTagger(rs, name); + Tagger tagger2 = new DeepTagger(rs, name); + taggers.add(tagger); + taggers.add(tagger2); + + metamodels.add(rs); + + PImplGenerator.generate(name, project, taggers, false); + ModelCreatorGenerator.generateModelCreator(rs, name, srcFolder.getAbsolutePath()); + Log.minusLevel(); + Log.minusLevel(); + + Log.incProgress(); + + } + Log.info("All metamodels have been processed."); + + Log.disableProgress(); + + Log.info("Generating benchmark material class."); + BenchmarkMaterialGenerator.generate(names, metamodels, srcFolder); + + // Generating required elements for the osgi bundle + Log.info("Generating OSGI bundle elements."); + OsgiBundleGenerator.generateActivator(srcFolder); + OsgiBundleGenerator.generateComponentConf(tmpDir); + OsgiBundleGenerator.generateManifest(tmpDir); + + // Adding to the java project classpath the plugin dependencies + IJavaProject jdtProject = JavaCore.create(project); + IClasspathEntry[] classPath = jdtProject.getRawClasspath(); + IClasspathEntry[] newClassPath = Arrays.copyOf(classPath, classPath.length + 1); + IClasspathEntry other = new ClasspathEntry(1, 5, new org.eclipse.core.runtime.Path( + "org.eclipse.pde.core.requiredPlugins"), new IPath[0], new IPath[0], null, null, null, false, null, + true, new IClasspathAttribute[0]); + newClassPath[newClassPath.length - 1] = other; + jdtProject.setRawClasspath(newClassPath, null); + + // Compiling the java project + Log.info("Compiling created java project."); + project.refreshLocal(IResource.DEPTH_INFINITE, null); + project.build(IncrementalProjectBuilder.FULL_BUILD, null); + + // Generating files a second time, in order to use the bin folder a a basis for the jar + OsgiBundleGenerator.generateComponentConf(binFolder); + OsgiBundleGenerator.generateManifest(binFolder); + + // Creating the jar using the content of the bin folder + Log.info("Creating OSGI jar bundle: "+outputFile.getAbsolutePath()); + OsgiBundleGenerator.createJar(binFolder, outputFile); + + Log.info("Done!"); + } catch (OptionException e) { + Log.error("Invalid options: " + e.getMessage()); + parser.printHelpOn(System.out); + } + return IApplication.EXIT_OK; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.equinox.app.IApplication#stop() + */ + public void stop() { + // nothing to do + } +} diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..3232bae7d3632fdfa60f56e24d7d464dcdff96b0 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/EMFCodeGenerator$EMFGenerationException.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/EMFCodeGenerator$EMFGenerationException.class new file mode 100644 index 0000000000000000000000000000000000000000..9fd734e04f67012b7a96a48c77484eceb8aa1694 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/EMFCodeGenerator$EMFGenerationException.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/EMFCodeGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/EMFCodeGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..77199bcc0ddcce95d20121de9c97c037b0a13b8f Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/EMFCodeGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/ModelCreatorGenerator$NotEnoughObjectsException.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/ModelCreatorGenerator$NotEnoughObjectsException.class new file mode 100644 index 0000000000000000000000000000000000000000..842f7f6e12be25fcd819291a7951a33ed31de074 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/ModelCreatorGenerator$NotEnoughObjectsException.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..4ee31aad01993cfad4b0e6f14c04d6e734789fac Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..2b5928e925ef65db7cb3c82f4b1dfc874db97d6f Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/main/Application.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/main/Application.class new file mode 100644 index 0000000000000000000000000000000000000000..949a11359de8db19e285f09d33e362b058ae80c7 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/main/Application.class differ diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/shareAttributes.ecore b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/shareAttributes.ecore new file mode 100644 index 0000000000000000000000000000000000000000..913485c5be38fe6b7231b42619bdcbed4c50c3fa --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/shareAttributes.ecore @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/shareAttributes.ecorediag b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/shareAttributes.ecorediag new file mode 100644 index 0000000000000000000000000000000000000000..9649898be43e4a171c735e43bbe48236a8192946 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/shareAttributes.ecorediag @@ -0,0 +1,893 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple1.ecore b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple1.ecore new file mode 100644 index 0000000000000000000000000000000000000000..c429b0782f5cb60cc44733104ebeb7c238b7bc9a --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple1.ecore @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple1.ecorediag b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple1.ecorediag new file mode 100644 index 0000000000000000000000000000000000000000..335d681185f7d8eb202f99fb9b7afdfed0ffd626 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple1.ecorediag @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple2.ecore b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple2.ecore new file mode 100644 index 0000000000000000000000000000000000000000..2cc8ecac1ec03061cdb3d935ae750ad445325cb1 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple2.ecore @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple2.ecorediag b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple2.ecorediag new file mode 100644 index 0000000000000000000000000000000000000000..451352f8a1a6d7ef5a236ddada862f68c5c0a352 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple2.ecorediag @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned.ecore b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned.ecore new file mode 100644 index 0000000000000000000000000000000000000000..a16bc5c39b260efb806d5c7383ec9d38a9d1f30f --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned.ecore @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned.ecorediag b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned.ecorediag new file mode 100644 index 0000000000000000000000000000000000000000..5fa6d142cb8450aa85f6a3e336e090734883f56e --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned.ecorediag @@ -0,0 +1,591 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned2roots.ecore b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned2roots.ecore new file mode 100644 index 0000000000000000000000000000000000000000..33242e6d8c2c8c3439ef7103269a606979a9bc33 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned2roots.ecore @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned2roots.ecorediag b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned2roots.ecorediag new file mode 100644 index 0000000000000000000000000000000000000000..93df75723133c12dadee0ebc38614cd13d8d5ff1 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned2roots.ecorediag @@ -0,0 +1,565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/withstrings/shareAttributes.ecore b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/withstrings/shareAttributes.ecore new file mode 100644 index 0000000000000000000000000000000000000000..2b24d590dc2c059e7f97c4724f34b0f52018014f --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/withstrings/shareAttributes.ecore @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/withstrings/shareAttributes.ecorediag b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/withstrings/shareAttributes.ecorediag new file mode 100644 index 0000000000000000000000000000000000000000..158bbd319fe2bda7df2390b7b99b278054a1345e --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/withstrings/shareAttributes.ecorediag @@ -0,0 +1,893 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.classpath b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..1cc8d614e77b65a1680c369331e1837d495436d0 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.project b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.project new file mode 100644 index 0000000000000000000000000000000000000000..f0cee606a1eb80d2516b1da30ee2015afb3a34fb --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.project @@ -0,0 +1,28 @@ + + + fr.inria.diverse.cloning.benchmark.metamodelsgenerator + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.settings/org.eclipse.jdt.core.prefs b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..f42de363afaae68bbd968318f1d331877f5514fc --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/META-INF/MANIFEST.MF b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..77d1d697d91ddd558437299777363148d56f914f --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: BenchmarkMetamodelsGenerator +Bundle-SymbolicName: fr.inria.diverse.cloning.benchmark.metamodelsgenerator;singleton:=true +Bundle-Version: 1.0.0.qualifier +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.emf.ecore;bundle-version="2.9.1", + org.eclipse.emf.ecoretools.diagram;bundle-version="1.2.0", + org.eclipse.gmf.runtime.diagram.ui.render;bundle-version="1.7.0", + org.eclipse.gmf.runtime.notation;bundle-version="1.7.0", + org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.7.0", + fr.inria.diverse.cloning.materialgenerator +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Import-Package: fr.inria.diverse.cloning.cloner.util +Bundle-ClassPath: lib/jopt-simple-4.6.jar, + . diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/diagramgenerator/DiagramGenerator.class b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/diagramgenerator/DiagramGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..58190cbac2ad9e98a17fbf6ab8ab50a65eec7401 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/diagramgenerator/DiagramGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/MetamodelGenerator.class b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/MetamodelGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..b3753096b084878a1523f956ee3123661e33259a Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/MetamodelGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/PropertiesSprinkler.class b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/PropertiesSprinkler.class new file mode 100644 index 0000000000000000000000000000000000000000..a7fac173a06936d0f34f18cacfb421428c667d8c Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/PropertiesSprinkler.class differ diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/StructureGenerator.class b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/StructureGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..813a6933c894b7de3cded1d96676f11d92c4c6d6 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/StructureGenerator.class differ diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/main/Application.class b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/main/Application.class new file mode 100644 index 0000000000000000000000000000000000000000..d1f5ba32d20eb7cd1f14e93b06f77fa38f232b4f Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/main/Application.class differ diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/build.properties b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..ba12e985e8a056cc958f48da2e34ec0ba4191f73 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = plugin.xml,\ + META-INF/,\ + .,\ + lib/jopt-simple-4.6.jar diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/build.xml b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/build.xml new file mode 100644 index 0000000000000000000000000000000000000000..d9481abff2738c2d95d5d6c097525fb1252ffe48 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/build.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/ivy.xml b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/ivy.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b9dbdc1c0a5197cf768495c486719e51133d32c --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/ivy.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6-javadoc.jar b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6-javadoc.jar new file mode 100644 index 0000000000000000000000000000000000000000..d782e5a281e3eb67dffd3632fba5c8f0fbf24847 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6-javadoc.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6-sources.jar b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..94d41f1439bc6f87cb13c001b09406053e4ba106 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6-sources.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6.jar b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..a963d1fa4dcc1645d2d1172db6ddb97372a1bec3 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/plugin.xml b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..4bfaccffd5507d6c7cac963697edf028bd08a48d --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/plugin.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.log b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.log new file mode 100644 index 0000000000000000000000000000000000000000..0c90980b782e0766e7fdcb1b0d9c4ff39403b960 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.log @@ -0,0 +1,486 @@ +!SESSION 2014-02-17 12:02:03.012 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 12:02:05.953 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 12:02:28.758 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 12:02:29.664 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 12:40:57.835 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 12:40:58.815 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 12:43:13.136 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 12:43:14.118 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:29:27.965 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:29:28.933 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:29:53.572 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:29:54.473 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:30:38.190 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:30:39.114 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:30:55.779 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:30:56.688 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:41:10.276 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:41:11.211 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages + +!ENTRY org.eclipse.osgi 4 0 2014-02-17 13:41:12.053 +!MESSAGE Erreur liée à l'application +!STACK 1 +java.lang.IllegalArgumentException: n must be positive + at java.util.Random.nextInt(Random.java:300) + at benchmarkmetamodelsgenerator.generator.PropertiesSprinkler.sprinkleProperties(PropertiesSprinkler.java:116) + at benchmarkmetamodelsgenerator.generator.MetamodelGenerator.generateMetamodel(MetamodelGenerator.java:16) + at benchmarkmetamodelsgenerator.main.Application.start(Application.java:41) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:645) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:600) + at org.eclipse.equinox.launcher.Main.run(Main.java:1459) + at org.eclipse.equinox.launcher.Main.main(Main.java:1435) +!SESSION 2014-02-17 13:42:05.413 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:42:06.335 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages + +!ENTRY org.eclipse.osgi 4 0 2014-02-17 13:42:06.796 +!MESSAGE Erreur liée à l'application +!STACK 1 +java.lang.IllegalArgumentException: n must be positive + at java.util.Random.nextInt(Random.java:300) + at benchmarkmetamodelsgenerator.generator.PropertiesSprinkler.sprinkleProperties(PropertiesSprinkler.java:116) + at benchmarkmetamodelsgenerator.generator.MetamodelGenerator.generateMetamodel(MetamodelGenerator.java:16) + at benchmarkmetamodelsgenerator.main.Application.start(Application.java:41) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:645) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:600) + at org.eclipse.equinox.launcher.Main.run(Main.java:1459) + at org.eclipse.equinox.launcher.Main.main(Main.java:1435) +!SESSION 2014-02-17 13:44:14.379 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:44:15.350 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:44:21.396 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:44:22.349 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:44:24.744 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:44:25.699 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages + +!ENTRY org.eclipse.osgi 4 0 2014-02-17 13:44:26.481 +!MESSAGE Erreur liée à l'application +!STACK 1 +java.lang.IllegalArgumentException: n must be positive + at java.util.Random.nextInt(Random.java:300) + at benchmarkmetamodelsgenerator.generator.PropertiesSprinkler.sprinkleProperties(PropertiesSprinkler.java:116) + at benchmarkmetamodelsgenerator.generator.MetamodelGenerator.generateMetamodel(MetamodelGenerator.java:16) + at benchmarkmetamodelsgenerator.main.Application.start(Application.java:38) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:645) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:600) + at org.eclipse.equinox.launcher.Main.run(Main.java:1459) + at org.eclipse.equinox.launcher.Main.main(Main.java:1435) +!SESSION 2014-02-17 13:45:06.599 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:45:07.634 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:45:10.419 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:45:11.368 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:45:13.626 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:45:14.575 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:45:16.990 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:45:17.958 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:45:20.945 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:45:21.926 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:45:24.058 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:45:25.099 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:45:26.947 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:45:27.904 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:45:33.386 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:45:34.424 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:46:37.596 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:46:38.546 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:48:46.992 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:48:47.949 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:49:04.217 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:49:05.173 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:49:42.245 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:49:43.294 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:56:44.371 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:56:45.343 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:57:15.113 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:57:16.183 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 13:58:22.302 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 13:58:23.222 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 14:14:44.113 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 14:14:46.443 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 18:29:56.548 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 18:29:57.478 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 18:30:20.359 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 18:30:21.328 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 18:33:34.835 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 18:33:35.783 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 18:35:35.731 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 18:35:36.683 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 18:36:45.048 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 18:36:46.002 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 18:46:32.042 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 18:46:33.072 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-17 18:48:16.377 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-17 18:48:17.307 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-18 10:21:48.148 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-18 10:21:49.112 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-18 15:13:54.102 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-18 15:13:56.533 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-19 14:41:24.761 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-19 14:41:27.381 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-20 09:19:09.588 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY org.eclipse.osgi 2 1 2014-02-20 09:19:10.664 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-20 09:40:15.472 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application --nbMetamodels=10 --maxClasses=100 --maxProp=250 --maxMutProp=50 --outputFolder=/home/ebousse/Documents/Thèse/2014-02 Models paper/benchmarks/metamodels +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator 100 250 50/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog --nbMetamodels=10 --maxClasses=100 --maxProp=250 --maxMutProp=50 --outputFolder=/home/ebousse/Documents/Thèse/2014-02 Models paper/benchmarks/metamodels + +!ENTRY org.eclipse.osgi 2 1 2014-02-20 09:40:16.504 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages +!SESSION 2014-02-20 09:43:41.947 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application --nbMetamodels=10 --maxClasses=100 --maxProp=250 --maxMutProp=50 --outputFolder=/home/ebousse/Dev/modelCloning/emfBenchmarkMaterial/metamodels +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.metamodelsgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/BenchmarkMetamodelsGenerator 100 250 50/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog --nbMetamodels=10 --maxClasses=100 --maxProp=250 --maxMutProp=50 --outputFolder=/home/ebousse/Dev/modelCloning/emfBenchmarkMaterial/metamodels + +!ENTRY org.eclipse.osgi 2 1 2014-02-20 09:43:42.935 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version new file mode 100644 index 0000000000000000000000000000000000000000..6b2aaa7640726588bcd3d57e1de4b1315b7f315e --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..dffc6b51349681ffb272ab899b3ef7c402cf49f9 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +version=1 diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/diagramgenerator/DiagramGenerator.java b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/diagramgenerator/DiagramGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..5422cb77b7a5748d80b27484065664e7305e1c6b --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/diagramgenerator/DiagramGenerator.java @@ -0,0 +1,84 @@ +package benchmarkmetamodelsgenerator.diagramgenerator; + +import java.io.File; +import java.io.IOException; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecoretools.diagram.part.EcoreDiagramEditorUtil; +import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; +import org.eclipse.gmf.runtime.diagram.ui.image.ImageFileFormat; +import org.eclipse.gmf.runtime.diagram.ui.render.util.CopyToImageUtil; +import org.eclipse.gmf.runtime.notation.Diagram; + +public class DiagramGenerator { + + + /** + * Source : http://stackoverflow.com/questions/3449218/remove-filename-extension-in-java/3449678#3449678 + * Removes the last extension of a file. + * @param filePath The path of the file. + * @return The path without its last extension. + */ + public static String removeExtension(String filePath) { + // These first few lines the same as Justin's + File f = new File(filePath); + + // if it's a directory, don't remove the extension + if (f.isDirectory()) return filePath; + + String name = f.getName(); + + // Now we know it's a file - don't need to do any special hidden + // checking or contains() checking because of: + final int lastPeriodPos = name.lastIndexOf('.'); + if (lastPeriodPos <= 0) + { + // No period after first character - return name as it was passed in + return filePath; + } + else + { + // Remove the last period and everything after it + File renamed = new File(f.getParent(), name.substring(0, lastPeriodPos)); + return renamed.getPath(); + } + } + + + + public static void generate(EPackage pack, File inputEcore, File outputFolder) throws CoreException, IOException{ + + + File outputDiag = new File(outputFolder,removeExtension(inputEcore.getName())+".ecorediag"); + File outputSvg = new File(outputFolder,removeExtension(inputEcore.getName())+".svg"); + + // Creating URIs + URI diagramURI = URI.createFileURI(outputDiag.getCanonicalPath()); + URI modelURI = URI.createFileURI(inputEcore.getCanonicalPath()); + + // Creating empty progress monitor (for both actions) + IProgressMonitor progressMonitor = new NullProgressMonitor(); + + // Creating the diagram + System.out.println("Creating diagram "+outputDiag.getAbsolutePath()); + org.eclipse.emf.ecore.resource.Resource result = EcoreDiagramEditorUtil.createDiagramOnly(diagramURI, modelURI, pack, true, progressMonitor); + + // Getting the obtained diagram object, to generate the SVG + Diagram diagram = (Diagram)result.getContents().get(0); + + + + // Creating the SVG + System.out.println("Creating svg "+outputSvg.getAbsolutePath()); + new CopyToImageUtil().copyToImage(diagram,new Path(outputSvg.getAbsolutePath()),ImageFileFormat.SVG,progressMonitor,new PreferencesHint("blah")); + + + + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/MetamodelGenerator.java b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/MetamodelGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..67b06d5f2b641c5153cb5608643169ed6efe4f0f --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/MetamodelGenerator.java @@ -0,0 +1,25 @@ +package benchmarkmetamodelsgenerator.generator; + +import java.io.File; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.ResourceSet; + +public class MetamodelGenerator { + + public static ResourceSet generateMetamodel(String name, int numberOfClasses, File ecoreFile, int nbElems, + int nbMutElems, int seed, boolean useSeed) { + + ResourceSet result = StructureGenerator.generateMetamodelStructure(name, numberOfClasses, + URI.createFileURI(ecoreFile.getAbsolutePath()), seed, useSeed); + + //int nbClassesCreated = EcoreHelper.findEClasses(result).size(); + + PropertiesSprinkler.sprinkleProperties(result, nbElems, 3, 3, 0, 1, 0, "", seed, useSeed); + + PropertiesSprinkler.sprinkleProperties(result, nbMutElems, 2, 2, 0, 1, 0, "_m", seed, useSeed); + + return result; + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/PropertiesSprinkler.java b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/PropertiesSprinkler.java new file mode 100644 index 0000000000000000000000000000000000000000..a675869d05a0f94525c625d19b6c9de6572850d0 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/PropertiesSprinkler.java @@ -0,0 +1,140 @@ +package benchmarkmetamodelsgenerator.generator; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EcoreFactory; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import fr.inria.diverse.cloning.cloner.util.EcoreHelper; +import fr.inria.diverse.cloning.cloner.util.Log; + +public class PropertiesSprinkler { + + /* + * To give each property a unique ID in its name (stating from 1) + */ + private static int counter = 0; + + private static int getSomeInt() { + counter = counter + 1; + return counter; + } + + /** + * Add a new attribute to a class. + */ + private static void addAtt(EClass _self, EDataType d, String suffix) { + EAttribute att = EcoreFactory.eINSTANCE.createEAttribute(); + att.setName("att" + d.getName() + "_" + getSomeInt() + suffix); + att.setEType(d); + Log.info(_self.getName() + ": adding attribute " + att.getName() + " of type " + d.getName()); + _self.getEStructuralFeatures().add(att); + } + + /** + * Add a new reference to a class. + */ + static EReference addReferenceTo(EClass _self, EClass c, String suffix) { + EReference ref = EcoreFactory.eINSTANCE.createEReference(); + ref.setName("ref" + c.getName() + "_" + getSomeInt() + suffix); + ref.setEType(c); + Log.info(_self.getName() + ": adding reference " + ref.getName() + " of type " + c.getName()); + _self.getEStructuralFeatures().add(ref); + return ref; + } + + /** + * Add new reference with opposite between classes. + */ + private static void addReferenceWithOppositeTo(EClass _self, EClass c, String suffix) { + EReference ref1 = addReferenceTo(_self, c, "Opp" + suffix); + EReference ref2 = addReferenceTo(c, _self, "Opp" + suffix); + Log.info(_self.getName() + ": setting opposite between " + ref1.getName() + " and " + ref2.getName()); + ref1.setEOpposite(ref2); + ref2.setEOpposite(ref1); + } + + /** + * from http://stackoverflow.com/a/11926952 + */ + private static E getWeightedRandom(Map weights, Random random) { + E result = null; + double bestValue = Double.MAX_VALUE; + + for (E element : weights.keySet()) { + double value = -Math.log(random.nextDouble()) / weights.get(element); + + if (value < bestValue) { + bestValue = value; + result = element; + } + } + + return result; + } + + /** + * Main operation. + */ + public static void sprinkleProperties(ResourceSet metamodel, int nbElems, double weightInt, double weightBool, + double weightString, double weightRef, double weightOppRef, String suffix, int seed, boolean withSeed) { + + Random random; + + // Handling seed parameter + if (withSeed) { + random = new Random(seed); + Log.info("Using seed " + seed); + } else + random = new Random(); + + // Preparing map for weighted choice + Map dataTypes = new HashMap(); + dataTypes.put(EcoreFactory.eINSTANCE.getEcorePackage().getEBoolean(), weightBool); + dataTypes.put(EcoreFactory.eINSTANCE.getEcorePackage().getEInt(), weightInt); + dataTypes.put(EcoreFactory.eINSTANCE.getEcorePackage().getEString(), weightString); + dataTypes.put(null, weightRef); + // /!\ We use EByte just to detect the refOpp case ! + dataTypes.put(EcoreFactory.eINSTANCE.getEcorePackage().getEByte(), weightOppRef); + + // Beginning + Log.info("Beginning of sprinkling"); + Log.plusLevel(); + + List classes = new ArrayList(EcoreHelper.findEClasses(metamodel)); + + int i = 0; + while ((i = i + 1) < nbElems) { + EClass randomClass = classes.get(random.nextInt(classes.size())); + EDataType type = getWeightedRandom(dataTypes, random); + + // Case reference + if (type == null) { + EClass randomClass2 = classes.get(random.nextInt(classes.size())); + addReferenceTo(randomClass, randomClass2, suffix); + } + // Case reference with opposite + else if (type == EcoreFactory.eINSTANCE.getEcorePackage().getEByte()) { + EClass randomClass2 = classes.get(random.nextInt(classes.size())); + addReferenceWithOppositeTo(randomClass, randomClass2, suffix); + } + // Case datatype + else { + addAtt(randomClass, type, suffix); + } + } + + Log.minusLevel(); + Log.info("End of sprinkling"); + + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/StructureGenerator.java b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/StructureGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..e78fa9c17ab5414fcbcd37d164baa631123d0392 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/StructureGenerator.java @@ -0,0 +1,82 @@ +package benchmarkmetamodelsgenerator.generator; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EcoreFactory; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +public class StructureGenerator { + + private static Random random; + private static int classCounter = 0; + + private static int getClassNumber() { + return classCounter++; + } + + private static void generateChildren(EClass root, int numberOfChildren, EPackage rootPackage) { + while (numberOfChildren > 0) { + EClass c = EcoreFactory.eINSTANCE.createEClass(); + c.setName("Class" + getClassNumber()); + EReference containment = PropertiesSprinkler.addReferenceTo(root, c, ""); + containment.setContainment(true); + rootPackage.getEClassifiers().add(c); + numberOfChildren--; + + int numberOfSubChildren = random.nextInt(numberOfChildren + 1); + numberOfChildren = numberOfChildren - numberOfSubChildren; + + generateChildren(c, numberOfSubChildren, rootPackage); + } + } + + public static ResourceSet generateMetamodelStructure(String name, int numberOfClasses, URI uri, int seed, + boolean useSeed) { + + if (useSeed) + random = new Random(seed); + else + random = new Random(); + + // Creating root package + EPackage rootPackage = EcoreFactory.eINSTANCE.createEPackage(); + rootPackage.setName(name); + rootPackage.setNsURI("http://" + name); + rootPackage.setNsPrefix(name); + + // Creating root classes + int numberOfRoots = random.nextInt(numberOfClasses)+1; + numberOfClasses = numberOfClasses - numberOfRoots; + List roots = new ArrayList(); + for (int i = 0; i < numberOfRoots; i++) { + EClass c = EcoreFactory.eINSTANCE.createEClass(); + c.setName("Class" + getClassNumber()); + rootPackage.getEClassifiers().add(c); + roots.add(c); + } + + // Creating remaining classes + for (EClass root : roots) { + if (numberOfClasses > 0) { + int numberOfChildren = random.nextInt(numberOfClasses + 1); + numberOfClasses = numberOfClasses - numberOfChildren; + generateChildren(root, numberOfChildren, rootPackage); + } + } + + // Creating resourceset = metamodel + ResourceSet result = new ResourceSetImpl(); + Resource res = result.createResource(uri); + res.getContents().add(rootPackage); + + return result; + } +} diff --git a/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/main/Application.java b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/main/Application.java new file mode 100644 index 0000000000000000000000000000000000000000..a229659e0dbb17a17fa9d1e87d9d06b1ce5525fe --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/main/Application.java @@ -0,0 +1,154 @@ +package benchmarkmetamodelsgenerator.main; + +import java.io.File; +import java.io.PrintStream; +import java.util.Random; + +import joptsimple.OptionException; +import joptsimple.OptionParser; +import joptsimple.OptionSet; +import joptsimple.OptionSpec; + +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.equinox.app.IApplication; +import org.eclipse.equinox.app.IApplicationContext; + +import fr.inria.diverse.cloning.materialgenerator.metrics.CloningMetrics; +import fr.inria.diverse.cloning.materialgenerator.tagger.Tagger; +import fr.inria.diverse.cloning.materialgenerator.tagger.impl.DeepTagger; +import fr.inria.diverse.cloning.materialgenerator.tagger.impl.MutClassesOnlyTagger; +import benchmarkmetamodelsgenerator.diagramgenerator.DiagramGenerator; +import benchmarkmetamodelsgenerator.generator.MetamodelGenerator; + +/** + * This class controls all aspects of the application's execution + */ +public class Application implements IApplication { + + /* + * (non-Javadoc) + * + * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) + */ + public Object start(IApplicationContext context) throws Exception { + String[] args = (String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS); + + // Specifying arguments + OptionParser parser = new OptionParser(); + OptionSpec outputFolderOption = parser + .accepts("outputFolder", "The folder in which metamodels are generated.").withRequiredArg().required() + .describedAs("path").ofType(File.class).required(); + OptionSpec nbMetamodelsOption = parser + .accepts("nbMetamodels", "The number of metamodels to generate.").withRequiredArg().required() + .describedAs("natural").ofType(Integer.class).required(); + OptionSpec maxClassesOption = parser + .accepts("maxClasses", "The maximum number of classes of a metamodel.").withRequiredArg().required() + .describedAs("natural").ofType(Integer.class).required(); + OptionSpec maxPropOption = parser + .accepts("maxProp", "The maximum number of properties of a metamodel.").withRequiredArg().required() + .describedAs("natural").ofType(Integer.class).required(); + OptionSpec maxMutPropOption = parser + .accepts("maxMutProp", "The maximum number of mutable properties of a metamodel.").withRequiredArg() + .required().describedAs("natural").ofType(Integer.class).required(); + try { + + // Parsing arguments (throws an error if problem) + OptionSet options = parser.parse(args); + File outputFolder = options.valueOf(outputFolderOption); + int nbMetamodels = options.valueOf(nbMetamodelsOption); + int maxClasses = options.valueOf(maxClassesOption); + int maxProp = options.valueOf(maxPropOption); + int maxMutProp = options.valueOf(maxMutPropOption); + + // ResourceSet rs = StructureGenerator.generateMetamodelStructure("lapin", 10, + // URI.createFileURI("/home/ebousse/Dev/modelCloning/emf/BenchmarkMetamodelsGenerator/tmp/lapin.ecore")); + + outputFolder.mkdirs(); + Random random = new Random(); + + File outputFile0 = new File(outputFolder, "stats.txt"); + File outputFile1 = new File(outputFolder, "computeCompShareableClassesRatio.txt"); + File outputFile2 = new File(outputFolder, "computePartShareableClassesRatio.txt"); + File outputFile3 = new File(outputFolder, "computeShareablePropertiesInShareableClassesRatio_Deep.txt"); + File outputFile4 = new File(outputFolder, + "computeShareablePropertiesInShareableClassesRatio_ShareObjects.txt"); + PrintStream printer0 = new PrintStream(outputFile0); + PrintStream printer1 = new PrintStream(outputFile1); + PrintStream printer2 = new PrintStream(outputFile2); + PrintStream printer3 = new PrintStream(outputFile3); + PrintStream printer4 = new PrintStream(outputFile4); + + double totalCompShareableClassesRatio = 0; + double totalPartShareableClassesRatio = 0; + double totalShareablePropertiesInShareableClassesRatio_Deep = 0; + double totalShareablePropertiesInShareableClassesRatio_ShareObjects = 0; + + for (int i = 0; i < nbMetamodels; i++) { + + int nbClasses = random.nextInt(maxClasses) + 1; // at least one class + int nbProperties = random.nextInt(maxProp); + int nbMutProperties = random.nextInt(maxMutProp); + + String name = "mm" + i; + + File outputEcore = new File(outputFolder, name + ".ecore"); + + ResourceSet rs = MetamodelGenerator.generateMetamodel(name, nbClasses, outputEcore, nbProperties, + nbMutProperties, 1337, false); + + Resource resource = rs.getResources().get(0); + EPackage pack = (EPackage) resource.getContents().get(0); + + resource.save(null); + + Tagger t = new MutClassesOnlyTagger(rs, name); + Tagger t2 = new DeepTagger(rs, name); + + double m1 = CloningMetrics.computeCompShareableClassesRatio(rs, t); + printer1.println(name + "\t" + m1); + totalCompShareableClassesRatio += m1; + double m2 = CloningMetrics.computePartShareableClassesRatio(rs, t); + printer2.println(name + "\t" + m2); + totalPartShareableClassesRatio += m2; + double m3 = CloningMetrics.computeShareablePropertiesInShareableClassesRatio(rs, t2); + printer3.println(name + "\t" + m3); + totalShareablePropertiesInShareableClassesRatio_Deep += m3; + double m4 = CloningMetrics.computeShareablePropertiesInShareableClassesRatio(rs, t); + printer4.println(name + "\t" + m4); + totalShareablePropertiesInShareableClassesRatio_ShareObjects += m3; + + DiagramGenerator.generate(pack, outputEcore, outputFolder); + } + + printer0.println("mean CompShareableClassesRatio: " + totalCompShareableClassesRatio + / (double) nbMetamodels); + printer0.println("mean PartShareableClassesRatio: " + totalPartShareableClassesRatio + / (double) nbMetamodels); + printer0.println("mean ShareablePropertiesInShareableClassesRatio_Deep: " + + totalShareablePropertiesInShareableClassesRatio_Deep / (double) nbMetamodels); + printer0.println("mean ShareablePropertiesInShareableClassesRatio_ShareObjects: " + + totalShareablePropertiesInShareableClassesRatio_ShareObjects / (double) nbMetamodels); + + printer0.close(); + printer1.close(); + printer2.close(); + printer3.close(); + printer4.close(); + } catch (OptionException e) { + System.out.println("Invalid options: " + e.getMessage()); + parser.printHelpOn(System.out); + } + return IApplication.EXIT_OK; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.equinox.app.IApplication#stop() + */ + public void stop() { + // nothing to do + } +} diff --git a/fr.inria.diverse.cloning.benchmark.tool/.classpath b/fr.inria.diverse.cloning.benchmark.tool/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..7257f2c166128944b5fcf7e8772767c5939ef618 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/.classpath @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.tool/.project b/fr.inria.diverse.cloning.benchmark.tool/.project new file mode 100644 index 0000000000000000000000000000000000000000..1f1683c0f926aa0257c636a83e61992398360f4e --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/.project @@ -0,0 +1,28 @@ + + + fr.inria.diverse.cloning.benchmark.tool + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/fr.inria.diverse.cloning.benchmark.tool/.settings/org.eclipse.jdt.core.prefs b/fr.inria.diverse.cloning.benchmark.tool/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..443e08599a2e61e27329fbffd44d862d8675dde4 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/fr.inria.diverse.cloning.benchmark.tool/.settings/org.eclipse.m2e.core.prefs b/fr.inria.diverse.cloning.benchmark.tool/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..f897a7f1cb2389f85fe6381425d29f0a9866fb65 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/fr.inria.diverse.cloning.benchmark.tool/META-INF/MANIFEST.MF b/fr.inria.diverse.cloning.benchmark.tool/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..5f93c37acd6eedb95df79ac67bd7f472b96c3f63 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/META-INF/MANIFEST.MF @@ -0,0 +1,18 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: BenchmarkTool +Bundle-SymbolicName: fr.inria.diverse.cloning.benchmark.tool;singleton:=true +Bundle-Version: 1.0.0.qualifier +Require-Bundle: org.eclipse.core.runtime, + fr.inria.diverse.cloning.benchmark.common;bundle-version="1.0.0", + fr.inria.diverse.cloning.cloner, + org.eclipse.emf.ecore;bundle-version="2.9.1", + org.eclipse.mat.api;bundle-version="1.3.0", + org.eclipse.mat.parser;bundle-version="1.3.0", + org.eclipse.mat.hprof;bundle-version="1.3.0", + org.eclipse.mat.jdt;bundle-version="1.3.0", + org.eclipse.equinox.launcher;bundle-version="1.3.0" +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Bundle-ClassPath: ., + lib/jopt-simple-4.6.jar +Bundle-ActivationPolicy: lazy diff --git a/fr.inria.diverse.cloning.benchmark.tool/build.properties b/fr.inria.diverse.cloning.benchmark.tool/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..be5e83d90114837d2ae469eb6af26ad09c67ca0b --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = target/classes +bin.includes = plugin.xml,\ + META-INF/,\ + .,\ + lib/jopt-simple-4.6.jar + diff --git a/fr.inria.diverse.cloning.benchmark.tool/build.xml b/fr.inria.diverse.cloning.benchmark.tool/build.xml new file mode 100644 index 0000000000000000000000000000000000000000..fc542908adbb5ce54210b319715ba5f3c7d9a3e8 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/build.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.tool/ivy.xml b/fr.inria.diverse.cloning.benchmark.tool/ivy.xml new file mode 100644 index 0000000000000000000000000000000000000000..3cff9e083539ad90390364dbca1e2726dbbcfcb7 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/ivy.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6-javadoc.jar b/fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6-javadoc.jar new file mode 100644 index 0000000000000000000000000000000000000000..d782e5a281e3eb67dffd3632fba5c8f0fbf24847 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6-javadoc.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6-sources.jar b/fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..94d41f1439bc6f87cb13c001b09406053e4ba106 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6-sources.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6.jar b/fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..a963d1fa4dcc1645d2d1172db6ddb97372a1bec3 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6.jar differ diff --git a/fr.inria.diverse.cloning.benchmark.tool/plugin.xml b/fr.inria.diverse.cloning.benchmark.tool/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b0cdeb804b3c16916a5457cc637471718d9dc3b --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/plugin.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.log b/fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.log new file mode 100644 index 0000000000000000000000000000000000000000..420a45bcc4a25bcc2a86a5fb8b5b0a87e3df995b --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.log @@ -0,0 +1,10 @@ +!SESSION 2014-02-20 10:08:31.757 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.benchmark.tool.application --benchmarkMetamodels=/home/ebousse/Dev/modelCloning/emfBenchmarkMaterial/metamodels/bundle.jar --outputFile=/home/ebousse/Dev/modelCloning/emfBenchmarkMaterial/metamodels/results.csv +Command-line arguments: -application fr.inria.diverse.cloning.benchmark.tool.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.tool/runtime-data -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/Run BenchmarkTool/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog --benchmarkMetamodels=/home/ebousse/Dev/modelCloning/emfBenchmarkMaterial/metamodels/bundle.jar --outputFile=/home/ebousse/Dev/modelCloning/emfBenchmarkMaterial/metamodels/results.csv + +!ENTRY org.eclipse.osgi 2 1 2014-02-20 10:08:34.452 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages diff --git a/fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version new file mode 100644 index 0000000000000000000000000000000000000000..6b2aaa7640726588bcd3d57e1de4b1315b7f315e --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..dffc6b51349681ffb272ab899b3ef7c402cf49f9 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +version=1 diff --git a/fr.inria.diverse.cloning.benchmark.tool/src/benchmark/Benchmark.java b/fr.inria.diverse.cloning.benchmark.tool/src/benchmark/Benchmark.java new file mode 100644 index 0000000000000000000000000000000000000000..0da63a6a16006e7acf7f4ff76d443fa28872bf44 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/src/benchmark/Benchmark.java @@ -0,0 +1,92 @@ +package benchmark; + +import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import memoryanalysis.HeapDump; +import memoryanalysis.MemoryAnalyzer; + +import org.eclipse.emf.ecore.resource.ResourceSet; + +import fancyemfcloning.benchmark.base.ModelCreator; +import fr.inria.diverse.cloning.cloner.Cloner; +import fr.inria.diverse.cloning.cloner.common.CloningMaterial; +import fr.inria.diverse.cloning.cloner.impl.ClonerImpl; + +public class Benchmark { + + private static final DateFormat dateFormat = new SimpleDateFormat("HH-mm-ss"); + private static int counter = 2; // starts at two to match the CSV lines + + private static int computeSizeModels(File folder) { + System.out.println("Dumping memory..."); + File dumpFile = new File(folder, "dump_" + dateFormat.format(new Date()) + ".bin"); + dumpFile.delete(); + // MemoryAnalyzer.dumpHeap(dumpFile); + HeapDump.dumpHeap(dumpFile.getAbsolutePath(), true); + System.out.println("done."); + // Reading memory (retained heap size of ResourceSetImpl) + System.out.println("Reading the dump..."); + int size = MemoryAnalyzer.computeRetainedSizeOfClass("org.eclipse.emf.ecore.resource.impl.ResourceSetImpl", + dumpFile); + System.out.println(" done."); + return size; + } + + // TODO option to not keep dumps + public static BenchmarkResults benchmark(ModelCreator modelCreator, CloningMaterial cloningMaterial, boolean light, + int numberOfClones, boolean computeMemory) { + + // Creating the cloner + Cloner cloner = new ClonerImpl(cloningMaterial); + + // Preparing "output folder", just for the URI of the clones + File tmpFolder = new File("/tmp/bleh"); + tmpFolder = new File("/tmp2/clone" + (counter++)); // TODO change this hardcoded path!! + tmpFolder.delete(); + tmpFolder.mkdirs(); + + String lightString = ""; + if (light) + lightString = "Light"; + System.out.println("Metamodel / Cloning technique: " + cloningMaterial.getClass().getPackage().getName() + + lightString); + + // Creating the model to clone + ResourceSet model = modelCreator.createTreeModel(); + int originalModelSize = modelCreator.getMemorySize(); + /*if (originalModelSize < 0) { + File tmpFolder2 = new File("/tmp2/"+modelCreator.getClass().getName()); // TODO change this hardcoded path!! + tmpFolder2.delete(); + tmpFolder2.mkdirs(); + System.out.print("Computing original model size."); + originalModelSize = computeSizeModels(tmpFolder2); + modelCreator.setMemorySize(originalModelSize); + }*/ + + // Cloning "numberOfClones" times and computing time + System.out.print("Cloning (" + numberOfClones + " clones)..."); + List clones = new ArrayList<>(); + long timeBegin = System.currentTimeMillis(); + for (int i = 0; i < numberOfClones; i++) + clones.add(cloner.clone(model, tmpFolder, light)); + long timeEnd = System.currentTimeMillis(); + System.out.println(" done."); + + int size = -1; + if (computeMemory) { + size = computeSizeModels(tmpFolder); + } + + // Preparing results object + long timeSpent = (timeEnd - timeBegin); + BenchmarkResults benchmarkResults = new BenchmarkResults(size, timeSpent, originalModelSize); + + return benchmarkResults; + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.tool/src/benchmark/BenchmarkResults.java b/fr.inria.diverse.cloning.benchmark.tool/src/benchmark/BenchmarkResults.java new file mode 100644 index 0000000000000000000000000000000000000000..95ec60f91e67e6c176cc3749d98406af6b7346b5 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/src/benchmark/BenchmarkResults.java @@ -0,0 +1,47 @@ +package benchmark; + +import java.util.Collection; + +public class BenchmarkResults { + + private double usedMemory; + private double originalModelSize; + private double timeSpent; + + public static BenchmarkResults combineResults(Collection results) { + double memory = 0; + double originalModelMemory = 0; + double meanTime = 0; + for (BenchmarkResults aResult : results) { + memory = Math.max(memory,aResult.getUsedMemory()); + originalModelMemory = Math.max(originalModelMemory,aResult.getOriginalModelSize()); + meanTime += aResult.getTimeSpent(); + } + return new BenchmarkResults(memory, meanTime / results.size(), originalModelMemory); + } + + public BenchmarkResults(double usedMemory, double timeSpent2, double originalModelSize) { + super(); + this.usedMemory = usedMemory; + this.timeSpent = timeSpent2; + this.originalModelSize = originalModelSize; + } + + public double getUsedMemory() { + return usedMemory; + } + + + public double getOriginalModelSize() { + return originalModelSize; + } + + public double getTimeSpent() { + return timeSpent; + } + + public String toString() { + return "Used memory: " + usedMemory + " bytes\nTime spent: " + timeSpent + " milliseconds"; + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.tool/src/data/CSVFile.java b/fr.inria.diverse.cloning.benchmark.tool/src/data/CSVFile.java new file mode 100644 index 0000000000000000000000000000000000000000..99b029a68a1a5d40aee805654c8676a2c5d30bac --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/src/data/CSVFile.java @@ -0,0 +1,47 @@ +package data; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintStream; + +public class CSVFile { + + private static final String[] columns = { "NumberOfClones", "MetamodelName", "MemoryUsed", "TimeSpent", + "CloningTechnique", "ModelName", "Light", "OriginalModelSize", "MutClassCompShareableClassesRatio", + "MutClassPartShareableClassesRatio", "MutClassShareablePropertiesInShareableClassesRatio", + "MutClassMeanShareablePropertiesInShareableClasses", "DeepPartShareableClassesRatio", + "DeepShareablePropertiesInShareableClassesRatio", "DeepMeanShareablePropertiesInShareableClasses" }; + + private String content; + + public CSVFile() { + content = ""; + for (String c : columns) + content += c + ","; + content = content.substring(0, content.length() - 1); + content += "\n"; + } + + public void addLine(Object... elements) { + if (elements.length != columns.length) + System.err.println("Error CSV: does not match column number!"); + for (Object o : elements) + content += o + ","; + content = content.substring(0, content.length() - 1); + content += "\n"; + } + + public void writeToFile(File csvfile) { + + try { + PrintStream printer = new PrintStream(csvfile); + printer.print(content); + printer.close(); + } catch (FileNotFoundException e) { + // TODO Bloc catch généré automatiquement + e.printStackTrace(); + } + + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.tool/src/main/Application.java b/fr.inria.diverse.cloning.benchmark.tool/src/main/Application.java new file mode 100644 index 0000000000000000000000000000000000000000..1bf844b82ee816564e8f47f88d4ab6f1c24d66cd --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/src/main/Application.java @@ -0,0 +1,273 @@ +package main; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; + +import joptsimple.OptionException; +import joptsimple.OptionParser; +import joptsimple.OptionSet; +import joptsimple.OptionSpec; + +import org.eclipse.equinox.app.IApplication; +import org.eclipse.equinox.app.IApplicationContext; + +import benchmark.Benchmark; +import benchmark.BenchmarkResults; +import data.CSVFile; +import fancyemfcloning.benchmark.base.BenchmarkMaterial; +import fr.inria.diverse.cloning.cloner.common.CloningMaterial; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; + +/** + * This class controls all aspects of the application's execution + */ +public class Application implements IApplication { + + // private static final List baseArgs = computeBaseArgs(); + // private static final String firstOutput = "Cloning benchmark application started."; + + /* + * private static String findJavaExe() { return JavaEnvUtils.getJreExecutable("java"); } + */ + + /** + * We need a list of strings for ProcessBuilder to work properly. + * + * @return The list of arguments required, excepted the program specific one. + */ + /* + * private static List computeBaseArgs() { List result = new ArrayList(); + * + * result.add(findJavaExe()); + * + * RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean(); + * + * // VM args List arguments = runtimeMxBean.getInputArguments(); result.addAll(arguments); + * + * // Classpath result.add("-classpath"); result.addAll(Arrays.asList(runtimeMxBean.getClassPath().split(" "))); + * + * // Args // First we reput lost quotes (?) and we remove previous args String tmpArgs = + * System.getProperty("sun.java.command").split("--")[0].replace("", "\\") .replace("-configuration ", + * "-configuration \"").replace(" -dev ", "\" -dev \"") .replace(" -os", "\" -os"); + * + * List matchList = new ArrayList(); Pattern regex = + * Pattern.compile("[^\\s\"']+|\"([^\"]*)\"|'([^']*)'"); Matcher regexMatcher = regex.matcher(tmpArgs); while + * (regexMatcher.find()) { if (regexMatcher.group(1) != null) { // Add double-quoted string without the quotes + * matchList.add(regexMatcher.group(1)); } else if (regexMatcher.group(2) != null) { // Add single-quoted string + * without the quotes matchList.add(regexMatcher.group(2)); } else { // Add unquoted word + * matchList.add(regexMatcher.group()); } } + * + * result.addAll(matchList); + * + * return result; } + * + * static String readFile(File file, Charset encoding) throws IOException { byte[] encoded = + * Files.readAllBytes(Paths.get(file.getAbsolutePath())); return + * encoding.decode(ByteBuffer.wrap(encoded)).toString(); } + * + * private void spawnBenchmarkProcess(String bundle, int numberClones, String metamodel, String cloning, boolean + * light) throws IOException, InterruptedException { + * + * List args = new ArrayList(); args.addAll(baseArgs); args.add("--singleRun"); + * args.add("--benchmarkMetamodels"); args.add(bundle); args.add("--numberOfClones"); + * args.add(String.valueOf(numberClones)); args.add("--cloningName"); args.add(cloning); + * args.add("--metamodelName"); args.add(metamodel); args.add("--light"); args.add(String.valueOf(light)); + * + * String output = ""; do { // Creating a process ProcessBuilder processBuilder = new ProcessBuilder(args); + * + * // Output of the process in a file File tmpOutput = File.createTempFile("benchmarkProcess", "_output.log"); + * processBuilder.redirectOutput(tmpOutput); + * + * // Starting the process Process process = processBuilder.start(); + * + * // Waiting for the process to be over process.waitFor(); + * + * // Checking whether it started correctly or not output = readFile(tmpOutput, Charset.defaultCharset()); + * + * } while (!output.contains(firstOutput)); System.out.println(output); } + */ + + /* + * (non-Javadoc) + * + * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) + */ + public Object start(IApplicationContext context) throws Exception { + + // VERY IMPORTANT + // Used by the child processes to detect whether really started or not + // System.out.println(firstOutput); + + String[] args = (String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS); + + // Specifying arguments + OptionParser parser = new OptionParser(); + OptionSpec benchmarkMetamodelsOption = parser + .accepts("benchmarkMetamodels", "An OSGI bundle with all metamodels, created with the generator.") + .withRequiredArg().required().describedAs("path").ofType(File.class).required(); + OptionSpec outputFileOption = parser + .accepts("outputFile", "The CSV file to write.") + .withRequiredArg().required().describedAs("path").ofType(File.class).required(); + /* + * OptionSpec singleRunOption = parser.accepts("singleRun", + * "If set, only runs a single benchmark run. Used by the tool itself."); + * + * // Options "singleRun" OptionSpec numberOfClonesOption = parser .accepts("numberOfClones", + * "The number of clones to create in this run.").requiredIf(singleRunOption) + * .withRequiredArg().ofType(Integer.class); OptionSpec metamodelNameOption = + * parser.accepts("metamodelName", "The name of the metamodel to use.") + * .requiredIf(singleRunOption).withRequiredArg().ofType(String.class); OptionSpec cloningNameOption = + * parser .accepts("cloningName", "The name of the cloning technique to use.").requiredIf(singleRunOption) + * .withRequiredArg().ofType(String.class); OptionSpec lightOption = parser.accepts("light", + * "Whether to use light clones or not.") .requiredIf(singleRunOption).withRequiredArg().ofType(Boolean.class); + */ + + // Options "noSingleRun" TODO + + try { + + // Parsing arguments (throws an error if problem) + OptionSet options = parser.parse(args); + + // In both cases, we need the benchmark material + File bundle = options.valueOf(benchmarkMetamodelsOption); + File outputFile = options.valueOf(outputFileOption); + BenchmarkMaterial material = BundleLoader.loadBundle(bundle); + + // Single run + /* + * if (options.has(singleRunOption)) { + * + * System.out.println("SINGLE RUN MODE"); + * + * RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean(); List arguments = + * runtimeMxBean.getInputArguments(); System.out.println("begin print"); + * + * // String separator = System.getProperty("file.separator"); // String path = + * System.getProperty("java.home") + separator + "bin" + separator + "java"; + * + * // System.out.println(path); + * + * System.out.println(org.apache.tools.ant.util.JavaEnvUtils.getJreExecutable("java")); for (String arg : + * arguments) System.out.println(arg); System.out.println("-classpath " + runtimeMxBean.getClassPath()); + * + * System.out.println("--------------------"); + * + * System.out.println(System.getProperty("sun.java.command").split("--")[0]); + * + * System.out.println("end print"); + * + * String name = options.valueOf(metamodelNameOption); String cloning = options.valueOf(cloningNameOption); + * boolean light = options.valueOf(lightOption); int number = options.valueOf(numberOfClonesOption); + * + * BenchmarkResults results = Benchmark.benchmark(material.getModelCreator(name), + * material.getCloningMaterial(name, cloning), light, number); + * + * System.out.println(results); + * + * } + */ + + // Regular mode + // else { + + System.out.println("Starting benchmark tool"); + + // Using the service + //File csvfile = new File("/tmp/yay.csv"); + CSVFile csv = new CSVFile(); + + // int[] numberClones = { 1, 10, 100, 1000 };// , 10000 }; + // int[] numberClones = { 1000 }; + // int[] numberClones = { 1, 10 }; + int[] numberClones = { 10 }; + // int[] numberClones = {1}; + boolean[] lightNot = { false, true }; // ne pas toucher à l'ordre pour le plot R + // boolean[] lightNot = { true }; + // boolean[] lightNot = { false }; + + // for (int i = 0; i < 15; i++) { + // System.out.println(i); + // spawnBenchmarkProcess(bundle.getAbsolutePath(), 1, "youpitest1", "deep", false); + // } + + // To get more consistent time results, we can do each multiple times + // TODO only dump once + int numberOfTrys = 1; + + int counter = 2; + for (String name : material.getMetamodelsName()) { + for (String cloning : material.getCloningNames()) { + for (int number : numberClones) { + for (boolean light : lightNot) { + + String lightString = ""; + if (light) + lightString = "Light"; + System.out.println("[[" + (counter++) + "]]"); + + Collection multipleResults = new ArrayList(); + + CloningMaterial cloningMaterial = material.getCloningMaterial(name, cloning); + + // First attempt, to get memory measure at least + BenchmarkResults result = Benchmark.benchmark(material.getModelCreator(name), + cloningMaterial, light, number, true); + multipleResults.add(result); + + // Remaining attempts, without memory computing + for (int i = 0; i < numberOfTrys - 1; i++) { + BenchmarkResults result2 = Benchmark.benchmark(material.getModelCreator(name), + material.getCloningMaterial(name, cloning), light, number, false); + multipleResults.add(result2); + } + + // Then we combine all results (mean of time, mainly) + BenchmarkResults results = BenchmarkResults.combineResults(multipleResults); + + System.out.println(results); + + // double meanMemorySingleModel = results.getUsedMemory() / ((double)(number+1)); // TODO en + // R ? + + cloningMaterial = material.getCloningMaterial(name, "MutClassOnly"); + CloningMaterial cloningMaterial2 = material.getCloningMaterial(name, "Deep"); + + MetamodelTags tags = cloningMaterial.getTags(); + MetamodelTags tags2 = cloningMaterial2.getTags(); + + csv.addLine(number, name, results.getUsedMemory(), results.getTimeSpent(), cloning, + "default", lightString, results.getOriginalModelSize(), + tags.getCompShareableClassesRatio(), tags.getPartShareableClassesRatio(), + tags.getShareablePropertiesInShareableClassesRatio(), + tags.getMeanShareablePropertiesInShareableClasses(), + tags2.getPartShareableClassesRatio(), + tags2.getShareablePropertiesInShareableClassesRatio(), + tags2.getMeanShareablePropertiesInShareableClasses()); + } + } + } + } + + csv.writeToFile(outputFile); + System.out.println("Exiting benchmark tool"); + + // } + } catch (OptionException e) { + System.out.println("Invalid options: " + e.getMessage()); + parser.printHelpOn(System.out); + } + return IApplication.EXIT_OK; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.equinox.app.IApplication#stop() + */ + public void stop() { + // nothing to do + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.tool/src/main/BundleLoader.java b/fr.inria.diverse.cloning.benchmark.tool/src/main/BundleLoader.java new file mode 100644 index 0000000000000000000000000000000000000000..d21e2d2a9ff1b58baee84b4c23c441f0831e7d9c --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/src/main/BundleLoader.java @@ -0,0 +1,31 @@ +package main; + +import java.io.File; + +import org.eclipse.core.internal.runtime.InternalPlatform; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.BundleException; +import org.osgi.framework.ServiceReference; + +import fancyemfcloning.benchmark.base.BenchmarkMaterial; + +@SuppressWarnings("restriction") +public class BundleLoader { + + public static BenchmarkMaterial loadBundle(File bundleJar) throws BundleException { + // Getting bundlecontext, to install other bundles + BundleContext bundleContext = InternalPlatform.getDefault().getBundleContext(); + + // Installing the bundle and starting it + Bundle b = bundleContext.installBundle(bundleJar.toURI().toString()); + b.start(); + + // Getting the service provided by the bundle + ServiceReference serviceReference = bundleContext.getServiceReference(BenchmarkMaterial.class.getName()); + BenchmarkMaterial material = (BenchmarkMaterial) bundleContext.getService(serviceReference); + + return material; + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.tool/src/memoryanalysis/HeapDump.java b/fr.inria.diverse.cloning.benchmark.tool/src/memoryanalysis/HeapDump.java new file mode 100644 index 0000000000000000000000000000000000000000..a5fe3c5cfd3cd49640cd715c040ebb9f65639ed8 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/src/memoryanalysis/HeapDump.java @@ -0,0 +1,66 @@ +package memoryanalysis; + +import javax.management.MBeanServer; + +import java.lang.management.ManagementFactory; +import java.lang.reflect.Method; + + +public class HeapDump { + // This is the name of the HotSpot Diagnostic MBean + private static final String HOTSPOT_BEAN_NAME = + "com.sun.management:type=HotSpotDiagnostic"; + + // field to store the hotspot diagnostic MBean + private static volatile Object hotspotMBean; + + /** + * Call this method from your application whenever you + * want to dump the heap snapshot into a file. + * + * @param fileName name of the heap dump file + * @param live flag that tells whether to dump + * only the live objects + */ + public static void dumpHeap(String fileName, boolean live) { + // initialize hotspot diagnostic MBean + initHotspotMBean(); + try { + Class clazz = Class.forName("com.sun.management.HotSpotDiagnosticMXBean"); + Method m = clazz.getMethod("dumpHeap", String.class, boolean.class); + m.invoke( hotspotMBean , fileName, live); + } catch (RuntimeException re) { + throw re; + } catch (Exception exp) { + throw new RuntimeException(exp); + } + } + + // initialize the hotspot diagnostic MBean field + private static void initHotspotMBean() { + if (hotspotMBean == null) { + synchronized (HeapDump.class) { + if (hotspotMBean == null) { + hotspotMBean = getHotspotMBean(); + } + } + } + } + + // get the hotspot diagnostic MBean from the + // platform MBean server + private static Object getHotspotMBean() { + try { + Class clazz = Class.forName("com.sun.management.HotSpotDiagnosticMXBean"); + MBeanServer server = ManagementFactory.getPlatformMBeanServer(); + Object bean = + ManagementFactory.newPlatformMXBeanProxy(server, + HOTSPOT_BEAN_NAME, clazz); + return bean; + } catch (RuntimeException re) { + throw re; + } catch (Exception exp) { + throw new RuntimeException(exp); + } + } +} \ No newline at end of file diff --git a/fr.inria.diverse.cloning.benchmark.tool/src/memoryanalysis/MemoryAnalyzer.java b/fr.inria.diverse.cloning.benchmark.tool/src/memoryanalysis/MemoryAnalyzer.java new file mode 100644 index 0000000000000000000000000000000000000000..33c6c9fbb88ab5a34d7edaf5a4dffa1a0a186a7b --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.tool/src/memoryanalysis/MemoryAnalyzer.java @@ -0,0 +1,75 @@ +package memoryanalysis; + +import java.io.File; +import java.util.Collection; +import java.util.HashMap; + +import org.eclipse.mat.SnapshotException; +import org.eclipse.mat.snapshot.ISnapshot; +import org.eclipse.mat.snapshot.SnapshotFactory; +import org.eclipse.mat.snapshot.model.IClass; +import org.eclipse.mat.util.IProgressListener; +import org.eclipse.mat.util.VoidProgressListener; + +public class MemoryAnalyzer { + + public static final IProgressListener progressListener = new VoidProgressListener(); + + public static int computeRetainedSizeOfClass(String className, File dumpFile) { + + // We open the dump with Eclipse Memory Analyzer, and obtain a snapshot object + ISnapshot snapshot; + int sum = 0; + try { + snapshot = SnapshotFactory.openSnapshot(dumpFile, new HashMap(), progressListener); + // First we look for the class in the dump file + Collection foundClasses = snapshot.getClassesByName(className, false); + if (foundClasses == null) { + System.out.println("Warning: class " + className + " not found."); + } else { + // There can be multiple times the same class in weird situations + if (foundClasses.size() > 1) { + System.out.println("Warning: multiple classes with name " + className + "."); + } + // For each class occurrence with this name found + for (IClass foundClass : foundClasses) { + // This is where the calculation is done. + sum += foundClass.getRetainedHeapSizeOfObjects(true, false, null); + //sum += foundClass.getRetainedHeapSizeOfObjects(true, true, progressListener); // switched to + // estimations + } + } + } catch (SnapshotException e) { + System.err.println("Error while computing memory consumption!"); + e.printStackTrace(); + } + return sum; + + } + /* + public static void dumpHeap(File dumpFile) { + + try { + HeapDumpProviderRegistry registry = HeapDumpProviderRegistry.instance(); + IHeapDumpProvider dumpProvider = registry.getHeapDumpProvider("jmapheapdumpprovider").getHeapDumpProvider(); + List vms = dumpProvider.getAvailableVMs(progressListener); + VmInfo currentVm = null; + int pid = Integer.parseInt(ManagementFactory.getRuntimeMXBean().getName().split("@")[0]); + for (VmInfo vm : vms) { + if (vm.getPid() == pid) { + currentVm = vm; + break; + } + } + + dumpProvider.acquireDump(currentVm, dumpFile, progressListener); + + + } catch (SnapshotException e) { + // TODO Bloc catch généré automatiquement + e.printStackTrace(); + } + + }*/ + +} diff --git a/fr.inria.diverse.cloning.benchmark.tool/target/classes/benchmark/Benchmark.class b/fr.inria.diverse.cloning.benchmark.tool/target/classes/benchmark/Benchmark.class new file mode 100644 index 0000000000000000000000000000000000000000..a269f98b50b53c086760780b3f1669edd93571dd Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.tool/target/classes/benchmark/Benchmark.class differ diff --git a/fr.inria.diverse.cloning.benchmark.tool/target/classes/benchmark/BenchmarkResults.class b/fr.inria.diverse.cloning.benchmark.tool/target/classes/benchmark/BenchmarkResults.class new file mode 100644 index 0000000000000000000000000000000000000000..a34af860e9926f474b13ce874042f30e3a6e987c Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.tool/target/classes/benchmark/BenchmarkResults.class differ diff --git a/fr.inria.diverse.cloning.benchmark.tool/target/classes/data/CSVFile.class b/fr.inria.diverse.cloning.benchmark.tool/target/classes/data/CSVFile.class new file mode 100644 index 0000000000000000000000000000000000000000..77d8f44c6f3136468be3f4cc0dd3bd2882954930 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.tool/target/classes/data/CSVFile.class differ diff --git a/fr.inria.diverse.cloning.benchmark.tool/target/classes/main/Application.class b/fr.inria.diverse.cloning.benchmark.tool/target/classes/main/Application.class new file mode 100644 index 0000000000000000000000000000000000000000..a4e00feb966f2367c8814468387bdb71641f57f8 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.tool/target/classes/main/Application.class differ diff --git a/fr.inria.diverse.cloning.benchmark.tool/target/classes/main/BundleLoader.class b/fr.inria.diverse.cloning.benchmark.tool/target/classes/main/BundleLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..b08445f3257a8102bfe55f91e6d06a94abd14f8e Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.tool/target/classes/main/BundleLoader.class differ diff --git a/fr.inria.diverse.cloning.benchmark.tool/target/classes/memoryanalysis/HeapDump.class b/fr.inria.diverse.cloning.benchmark.tool/target/classes/memoryanalysis/HeapDump.class new file mode 100644 index 0000000000000000000000000000000000000000..b3d440e846f7ef3ac7cdad6ee49b59fe83bba77f Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.tool/target/classes/memoryanalysis/HeapDump.class differ diff --git a/fr.inria.diverse.cloning.benchmark.tool/target/classes/memoryanalysis/MemoryAnalyzer.class b/fr.inria.diverse.cloning.benchmark.tool/target/classes/memoryanalysis/MemoryAnalyzer.class new file mode 100644 index 0000000000000000000000000000000000000000..5be8032c4bcda6de079ede202bf9d401453e5729 Binary files /dev/null and b/fr.inria.diverse.cloning.benchmark.tool/target/classes/memoryanalysis/MemoryAnalyzer.class differ diff --git a/fr.inria.diverse.cloning.cloner/.classpath b/fr.inria.diverse.cloning.cloner/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..3bc247511f0f2d8c7cda0c9514a4e1d2c7ab5e23 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fr.inria.diverse.cloning.cloner/.project b/fr.inria.diverse.cloning.cloner/.project new file mode 100644 index 0000000000000000000000000000000000000000..a8082b2f8a1a694aa7038d9abddbc0877be2d94f --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/.project @@ -0,0 +1,28 @@ + + + fr.inria.diverse.cloning.cloner + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/fr.inria.diverse.cloning.cloner/META-INF/MANIFEST.MF b/fr.inria.diverse.cloning.cloner/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..70768d4e45b9834d230dd71a0ceed15afff62d64 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/META-INF/MANIFEST.MF @@ -0,0 +1,15 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: FancyCloningEMF +Bundle-SymbolicName: fr.inria.diverse.cloning.cloner;singleton:=true +Bundle-Version: 0.1.0.qualifier +Require-Bundle: org.eclipse.emf.ecore, + org.eclipse.emf.ecore.xmi;bundle-version="2.9.1" +Export-Package: fr.inria.diverse.cloning.cloner, + fr.inria.diverse.cloning.cloner.common, + fr.inria.diverse.cloning.cloner.emfextension, + fr.inria.diverse.cloning.cloner.emfextension.impl, + fr.inria.diverse.cloning.cloner.impl, + fr.inria.diverse.cloning.cloner.util +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Bundle-ClassPath: . diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/Cloner.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/Cloner.class new file mode 100644 index 0000000000000000000000000000000000000000..a193f1bcea5753c541c33e2d21801508c4e50a2c Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/Cloner.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/ClassTag.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/ClassTag.class new file mode 100644 index 0000000000000000000000000000000000000000..5cee1442fee5aa31ddf8becbb16b508e70676033 Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/ClassTag.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/CloningMaterial.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/CloningMaterial.class new file mode 100644 index 0000000000000000000000000000000000000000..d7c248bc81f945306bb296954105ff4b00c509cc Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/CloningMaterial.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/MetamodelTags.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/MetamodelTags.class new file mode 100644 index 0000000000000000000000000000000000000000..79191c255b3933d6b235688bde1fcb305c02ed93 Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/MetamodelTags.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/ShareableEObject.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/ShareableEObject.class new file mode 100644 index 0000000000000000000000000000000000000000..b01cf347398dc5f0de996c43142dd268ce9b6fb9 Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/ShareableEObject.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject$ReadonlyContext.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject$ReadonlyContext.class new file mode 100644 index 0000000000000000000000000000000000000000..92388e8514b5817338d4cd689e1ba76e6c5a071a Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject$ReadonlyContext.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject.class new file mode 100644 index 0000000000000000000000000000000000000000..b064e803eae91d187f2b0bbac1a7ad26ba2eae52 Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseCopier.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseCopier.class new file mode 100644 index 0000000000000000000000000000000000000000..967b6080e2d9efb7a21d5af7d400db83dbbafdd7 Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseCopier.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource$LooseContentsEList.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource$LooseContentsEList.class new file mode 100644 index 0000000000000000000000000000000000000000..91aab12f2f589128f7be86df569a6006f7abc258 Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource$LooseContentsEList.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource.class new file mode 100644 index 0000000000000000000000000000000000000000..434863d8a0fd800d5b722bfe6a7a3aba89f3135e Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/impl/ClonerImpl.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/impl/ClonerImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..fecc12f6f36dcd53e59044ce937c0323e41fa2e6 Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/impl/ClonerImpl.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Copy$TreeCopier.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Copy$TreeCopier.class new file mode 100644 index 0000000000000000000000000000000000000000..2de837994e0513b20a7d380f02bab28da518e4ec Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Copy$TreeCopier.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Copy.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Copy.class new file mode 100644 index 0000000000000000000000000000000000000000..5c8b10a057e65e184bbd6fcb935f18f23228cfe5 Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Copy.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/EcoreHelper$NoSingleRootException.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/EcoreHelper$NoSingleRootException.class new file mode 100644 index 0000000000000000000000000000000000000000..623697655f9b0199168b2819d22cb06ab3132c3e Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/EcoreHelper$NoSingleRootException.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/EcoreHelper.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/EcoreHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..2b4892d8a70d4c81f108e6946313d19e764465a0 Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/EcoreHelper.class differ diff --git a/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Log.class b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Log.class new file mode 100644 index 0000000000000000000000000000000000000000..524e7fb335ca82829897b5e3b307d106b8625948 Binary files /dev/null and b/fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Log.class differ diff --git a/fr.inria.diverse.cloning.cloner/build.properties b/fr.inria.diverse.cloning.cloner/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..34d2e4d2dad529ceaeb953bfcdb63c51d69ffed2 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/Cloner.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/Cloner.java new file mode 100644 index 0000000000000000000000000000000000000000..e127980323fb76bfd415ae1ba98e7e12f7fcc2c2 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/Cloner.java @@ -0,0 +1,29 @@ +package fr.inria.diverse.cloning.cloner; + +import java.io.File; + +import org.eclipse.emf.ecore.resource.ResourceSet; + +/** + * Defines a class in which a cloning technique is implemented. + * + * @author ebousse + * + */ +public interface Cloner { + + /** + * Considering a model stored in a ResourceSet, computes a clone of the model. + * + * @param model + * The model to clone. + * @param folder + * The name of the folder in which to store the model to clone, which will be created in the cloned model + * folder + * @return The cloned model. + */ + public ResourceSet clone(ResourceSet model, String folderName,boolean light); + + public ResourceSet clone(ResourceSet cloned, File outputFolder,boolean light); + +} diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/ClassTag.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/ClassTag.java new file mode 100644 index 0000000000000000000000000000000000000000..c5ebdd9f1cf6b56c28a6ad70396478dddbca7c98 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/ClassTag.java @@ -0,0 +1,16 @@ +package fr.inria.diverse.cloning.cloner.common; + +/** + * From a cloning kind point of view a class is either + * - completely readonly (no property change change), thus no need to clone it + * - completely mutable (all properties can change), thus must be cloned completely + * - partially mutable (some properties can change) OR can reach a mutable , thus can be cloned partially or completely + * @author ebousse + * + */ +public enum ClassTag { + COMPLETELY_SHAREABLE, + NOT_SHAREABLE, + PARTIALLY_SHAREABLE, +} + diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/CloningMaterial.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/CloningMaterial.java new file mode 100644 index 0000000000000000000000000000000000000000..fd49612919932e38a4e5a20d6c592fa89aa5ca95 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/CloningMaterial.java @@ -0,0 +1,10 @@ +package fr.inria.diverse.cloning.cloner.common; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseCopier; + +public interface CloningMaterial { + + public MetamodelTags getTags(); + public LooseCopier createLightCopier(); + +} diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/MetamodelTags.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/MetamodelTags.java new file mode 100644 index 0000000000000000000000000000000000000000..6df28a1059cc30e7d0efb92eec1cd3c440959173 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/MetamodelTags.java @@ -0,0 +1,46 @@ +package fr.inria.diverse.cloning.cloner.common; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; + + +/** + * Singleton class that stores the cloning tags of a given metamodel for a given cloning technique. + * + * @author ebousse + * + */ +public interface MetamodelTags { + + public ClassTag getTagOf(EClass eClass); + + public boolean mayTagClassesShareable(); + + public boolean isPropertyShareable(EStructuralFeature prop); + + /** + * Number of _completely_ shareable classes / total classes + * @return + */ + public double getCompShareableClassesRatio(); + + + /** + * Number of _partially_ shareable classes / total classes + * @return + */ + public double getPartShareableClassesRatio(); + + /** + * Number of shareable properties in shareable classes / total properties + * @return + */ + public double getShareablePropertiesInShareableClassesRatio(); + + /** + * Number of shareable properties in shareable classes / total shareable classes + * @return + */ + public double getMeanShareablePropertiesInShareableClasses(); + +} diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/ShareableEObject.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/ShareableEObject.java new file mode 100644 index 0000000000000000000000000000000000000000..085d9ee5011dd10fa5ead3cd88930274b8f24c09 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/ShareableEObject.java @@ -0,0 +1,29 @@ +package fr.inria.diverse.cloning.cloner.emfextension; + +import org.eclipse.emf.ecore.EObject; + + +/** + * Should allow to know in what you are contained. + * But not "required" for objects that are shared and contained in a shared reference... + * Thus not used for now. + * + * @author ebousse + * + */ +public interface ShareableEObject extends EObject { + + + /** + * Gives access to the EObject or the Resource that contains this object + * in a given context (a ResourceSet, ie. a model). + * Relevant only if this object is shared between multiple models. + * + * @param context The context in which this object in contained, ie a model + * @return Either a Resource or an EObject that contains this object in the given context. + */ + //public Object getContainerOrResourceInContext(ResourceSet context); + + + +} diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject.java new file mode 100644 index 0000000000000000000000000000000000000000..ce5e5239b4ee298ab1970ddccaaa911c1f064283 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject.java @@ -0,0 +1,303 @@ +package fr.inria.diverse.cloning.cloner.emfextension.impl; + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.Resource.Internal; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import fr.inria.diverse.cloning.cloner.common.ClassTag; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; + +// Default genmodel : org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container + +/** + * Defines an EMF object that can be contained in multiple objects, as long as these objects are in different + * ResourceSets. Yet, it keeps a single "main" container, at all time (eContainer). + * + * @author ebousse + * + */ +public abstract class AbstractShareableEObject extends MinimalEObjectImpl.Container {// implements ShareableEObject { + + /** + * Internal class to store the context temporarily + * + * @author ebousse + * + */ + private class ReadonlyContext { + // storage place for the main container in the main resourceset + protected InternalEObject storedMainContainer; + // storage place for the main resource + protected Resource storedResource; + + public ReadonlyContext(AbstractShareableEObject o) { + this.storedMainContainer = (InternalEObject) o.eContainer(); + this.storedResource = o.eResource(); + } + + public InternalEObject getContainer() { + return storedMainContainer; + } + + public Resource getResource() { + return storedResource; + } + } + + /** + * All the containers of the object that are in a clone model. + */ + protected Map additionnalContainersOrResources; + + /** + * Maps are initialized only at first usage, in order to save some memory (despite) + */ + protected AbstractShareableEObject() { + super(); + } + + /** + * Simple util operation to find the resource set of an object. + * + * @param o + * The object to analyze. + * @return The resource set of o, or null if there is none. + */ + private static ResourceSet findResourceSet(InternalEObject o) { + if (o.eResource() != null) + return o.eResource().getResourceSet(); + else + return null; + } + + private static Resource findResource(InternalEObject o) { + if (o.eResource() != null) + return o.eResource(); + else if (o.eContainer() != null) + return findResource((InternalEObject) o.eContainer()); + else + return null; + } + + /** + * Switch to the context of another object. + * + * @param otherEnd + * @return + */ + protected ReadonlyContext changeContext(InternalEObject otherEnd) { + + // We find the resource set we are located in + ResourceSet currentRS = findResourceSet(this); + ResourceSet otherRS = findResourceSet(otherEnd); + Resource otherResource = findResource(otherEnd); + + // We must only change the context if the otherEnd is in a LooseResource + // in another ResourceSet + // AND if we are considered readonly by the cloning technique of the LooseResource + boolean toChange = (otherResource != null) + && (otherResource instanceof LooseResource) + && (((LooseResource) (otherResource)).getTags().getTagOf(this.eClass()) == ClassTag.COMPLETELY_SHAREABLE) + && (otherRS != null) && (otherRS != currentRS); + + // If we do change the context + if (toChange) { + + // We store the context + ReadonlyContext context = new ReadonlyContext(this); + + // We get the resource set in which "things happen" + ResourceSet otherResourceSet = otherEnd.eResource().getResourceSet(); + + // We initialize the maps at the first usage + // if (this.additionnalContainersOrResources == null) { + // additionnalContainersOrResources = new HashMap(1); + // } + + // If we don't have entries for the otherResourceSet, + // we create ones with 'null' (ie not contained in this resource yet) + // if (!this.additionnalContainersOrResources.containsKey(otherResourceSet)) { + // this.additionnalContainersOrResources.put(otherResourceSet, null); + // } + + // We remove ourselves from a resource + if (this.eResource() != null) + this.eResource().getContents().remove(this); + + // We temporarily change the container (which might of course erase + // the resource) + + Object container; + if (this.additionnalContainersOrResources == null) + container = null; + else + container = this.additionnalContainersOrResources.get(otherResourceSet); + + if (container != null) { + if (container instanceof InternalEObject) { + this.eBasicSetContainer((InternalEObject) container); + } + if (container instanceof Resource) { + ((Resource) container).getContents().add(this); + } + } else { + this.eBasicSetContainer(null); + this.setResourceNonInverse(null); + } + + /* + * InternalEObject otherCont = (InternalEObject) + * this.additionnalContainersAndResources.get(otherResourceSet)[0]; + * + * + * // We temporarily change the resource, if the container was null if (otherCont == null) { Resource + * otherResource = (Resource) this.additionnalContainersAndResources.get(otherResourceSet)[1]; if + * (otherResource != null) otherResource.getContents().add(this); } + */ + + // And we return the context for further restore + return context; + + } + + // If we don't change the context, we explicitly return null + else { + return null; + } + } + + /** + * Restore a previously stored context. + * + * @param context + */ + protected void restoreContext(ReadonlyContext context, InternalEObject otherEnd) { + + // If null, nothing to restore + if (context != null) { + + // We find the resource set we are located in + ResourceSet currentResourceSet = findResourceSet(this); + + boolean storeContainer = true; + + Resource otherResource = findResource(otherEnd); + MetamodelTags tags = null; + if (otherResource != null && otherResource instanceof LooseResource) + tags = ((LooseResource) (otherResource)).getTags(); + if (tags != null && tags.isPropertyShareable(this.eContainmentFeature())) { + + storeContainer = false; + + } + + if (storeContainer) { + // We initialize the maps at the first usage + if (this.additionnalContainersOrResources == null) { + additionnalContainersOrResources = new HashMap(1); + } + + // We store the current context in our map + if (this.eContainer != null) + this.additionnalContainersOrResources.put(currentResourceSet, this.eContainer); + else + this.additionnalContainersOrResources.put(currentResourceSet, this.eResource()); + + } + + // And we restore the context + if (this.eResource() != null) + this.eResource().getContents().remove(this); + this.eBasicSetContainer(context.getContainer()); + if (context.getContainer() == null && context.getResource() != null) + context.getResource().getContents().add(this); + + } + } + + @Override + /* + * (non-Javadoc) Appelé lorsqu'un B (this) est ajouté à un A (otherEnd) + * + * @see org.eclipse.emf.ecore.impl.BasicEObjectImpl#eInverseAdd(org.eclipse.emf .ecore.InternalEObject, int, + * java.lang.Class, org.eclipse.emf.common.notify.NotificationChain) + */ + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, Class baseClass, + NotificationChain msgs) { + + // Changing the context + ReadonlyContext context = changeContext(otherEnd); + + // Actual call + NotificationChain result = super.eInverseAdd(otherEnd, featureID, baseClass, msgs); + + // Restoring the context + restoreContext(context, otherEnd); + + // And finally we return the NotificationChain + return result; + } + + @Override + /* + * (non-Javadoc) Appelé lorsqu'un B (this) est retiré d'un A (otherEnd) + * + * @see org.eclipse.emf.ecore.impl.BasicEObjectImpl#eInverseRemove(org.eclipse .emf.ecore.InternalEObject, int, + * java.lang.Class, org.eclipse.emf.common.notify.NotificationChain) + */ + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, + NotificationChain msgs) { + + // Changing the context + ReadonlyContext context = changeContext(otherEnd); + + // Actual call + NotificationChain result = super.eInverseRemove(otherEnd, featureID, baseClass, msgs); + + ResourceSet currentRS = findResourceSet(this); + Resource otherResource = findResource(otherEnd); + MetamodelTags tags = null; + if (otherResource != null && otherResource instanceof LooseResource) + tags = ((LooseResource) (otherResource)).getTags(); + if (tags != null && tags.isPropertyShareable(this.eContainmentFeature())) { + this.additionnalContainersOrResources.remove(currentRS); + if (this.additionnalContainersOrResources.size() == 0) + this.additionnalContainersOrResources = null; + } + + // Restoring the context + restoreContext(context, otherEnd); + + // And finally we return the NotificationChain + return result; + } + + /** + * Added method that allow one to change the resource of the object without changing what resources think they + * contain. Created for the "save" method of LooseResource, that must briefly change the resources of the elements + * of a model for correct referencing between resources. + * + * @param resource + * The resource to set in the object. The resource won't be changed. + */ + public void setResourceNonInverse(Internal resource) { + eSetDirectResource(resource); + } + + // @Override + // public Object getContainerOrResourceInContext(ResourceSet context) { + // if (findResourceSet(this) == context) + // return this.eContainer(); + // else if (this.additionnalContainersOrResources.containsKey(context)) + // return this.additionnalContainersOrResources.get(context); + // else + // return null; + // } + +} diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseCopier.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseCopier.java new file mode 100644 index 0000000000000000000000000000000000000000..cab4b50794d234cd107bce07588b87a2c519612f --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseCopier.java @@ -0,0 +1,121 @@ +package fr.inria.diverse.cloning.cloner.emfextension.impl; + +import java.util.HashSet; +import java.util.Set; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.util.EcoreUtil.Copier; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * Customized Copier that will ignore containment relationships and treat them the same way as simple references. + * + * + * @author ebousse + * + */ +public class LooseCopier extends Copier { + + private static final long serialVersionUID = -3587653043296819827L; + + private Set context; + + /** + * Temporarily change the EClass of some EObject by setting its containments as simple references. + * + * @param o + * The considered EObject. + * @return The stored context, that is the list of the changed ERefences. + */ + private Set removeContainmentsFromClassOfObject(EObject o) { + Set context = new HashSet(); + for (EReference r : o.eClass().getEAllContainments()) { + context.add(r); + r.setContainment(false); + } + return context; + } + + /** + * Restores the contaiments of some references. + * + * @param context + * The list of references. + */ + private void restoreContainments(Set context) { + for (EReference r : context) + r.setContainment(true); + } + + // ------------------ + + @Override + /* + * (non-Javadoc) + * + * @see org.eclipse.emf.ecore.util.EcoreUtil.Copier#copy(org.eclipse.emf.ecore .EObject) + */ + public EObject copy(EObject eObject) { + + // Saving context (ie. what are the containments of the class of the copied objects) + // and changing it (ie. removing all containments) + Set context = removeContainmentsFromClassOfObject(eObject); + + // Calling copier copy code + EObject result = super.copy(eObject); + + // Restoring context + restoreContainments(context); + + // And returning result + return result; + } + + @Override + public void copyReferences() { + + // Saving context (ie. what are the containments of the _classes_ of the copied objects) + // and changing it (ie. removing all containments) + context = new HashSet(); + // Set context = new HashSet(); + for (EObject o : this.keySet()) + context.addAll(removeContainmentsFromClassOfObject(o)); + + // Calling copier copyReferences code + super.copyReferences(); + + // Restoring context + restoreContainments(context); + + } + + @SuppressWarnings("unchecked") + @Override + protected void copyReference(EReference eReference, EObject eObject, EObject copyEObject) { + + boolean ok = true; + + // Little hack: we avoid to try to copy from the same collection in the same collection + // This might happen with "light" cloning, as the clone object will return the same collection as the cloned + // And EMF copier does not handle that correctly :) + if (eObject.eIsSet(eReference)) { + if (eReference.isMany()) { + InternalEList source = (InternalEList) eObject.eGet(eReference); + InternalEList targetMany = (InternalEList) copyEObject.eGet(getTarget(eReference)); + if (source == targetMany) { + ok = false; + } + } + } + + // We make the copy... if not same collection + if (ok) + super.copyReference(eReference, eObject, copyEObject); + + + + + } + +} diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource.java new file mode 100644 index 0000000000000000000000000000000000000000..2006153c9bfa22a27aa4bf74ab29f51459871db6 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource.java @@ -0,0 +1,172 @@ +package fr.inria.diverse.cloning.cloner.emfextension.impl; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; + +import fr.inria.diverse.cloning.cloner.common.ClassTag; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; + +public class LooseResource extends XMIResourceImpl { + + /** + * A LooseResource considers readonly classes that a given cloning technique + * consider readonly. Thus it needs to know ther cloner that created it. + */ + private MetamodelTags tags; + + /** + * The default constructor is private, because such resources can only be + * constructed with tags, otherwise invalid. + */ + private LooseResource() {}; + + /** + * Constructs a LooseResource to build a clone made by a specific cloning + * technique. + * + * @param c + * The cloning technique tagger. + */ + public LooseResource(MetamodelTags t) { + this(); + this.tags = t; + } + + /** + * We might need to know the cloner, in order to know what objects are + * readonly for this resource. + * + * @return + */ + public MetamodelTags getTags() { + return tags; + } + + /** + * We have to extend the containment list used by XMIResourceImpl, in order + * to break the containment for readonly objects. + * Note that this hack does not prevent a regular Resource from removing + * + * @author ebousse + * + * @param + */ + protected class LooseContentsEList extends + ContentsEList { + + private static final long serialVersionUID = 1410188721350066354L; + + @Override + public NotificationChain inverseAdd(E object, + NotificationChain notifications) { + InternalEObject eObject = (InternalEObject) object; + // We only allow Readonly (from the cloning technique pov) objects + // to be in multiple resources at once + if (!(LooseResource.this.tags.getTagOf(eObject.eClass()) == ClassTag.COMPLETELY_SHAREABLE)) + notifications = eObject.eSetResource(LooseResource.this,notifications); + LooseResource.this.attached(eObject); + return notifications; + } + + @Override + public NotificationChain inverseRemove(E object, + NotificationChain notifications) { + InternalEObject eObject = (InternalEObject) object; + if (LooseResource.this.isLoaded || unloadingContents != null) { + LooseResource.this.detached(eObject); + } + // We only allow Readonly (from the cloning technique pov) objects + // to be in multiple resources at once + if (!(LooseResource.this.tags.getTagOf(eObject.eClass()) == ClassTag.COMPLETELY_SHAREABLE)) + return eObject.eSetResource(null, notifications); + else + return notifications; + } + + } + + protected EList realContents; + + @Override + /** + * "Overrides" the 'contents' property of the + * extended class. + */ + public EList getContents() { + if (realContents == null) { + realContents = new LooseContentsEList(); + } + return realContents; + } + + /** + * Change the resource of all "contained" readonly objects, and store their + * real resources + * + * Can maybe be optimized by only looking at objects referenced by this resource. + * + * Could maybe be optimized be looking at all references of the resource + * that go outside the resource (thus into another resource of the resource set) + * Such referenced objects are the only ones that should be contextified. + * @return The context, that is a set of objects and their theoretical resource, in order to restore it later. + */ + private Map changeContext() { + // We prepare a map to store the context + Map context = new HashMap(); + // For each resource of the model + for (Resource otherResource : this.getResourceSet().getResources()) { + // We must only look at LooseResources + if (otherResource instanceof LooseResource) { + // For each of the objects that the resource contains + for (EObject o : otherResource.getContents()) { + // If the object is readonly (and castable (?), we must handle the fact that + // this object does not consider this resource to be its resource + if (o instanceof InternalEObject + && ((((LooseResource)otherResource).tags.getTagOf(o.eClass()) == ClassTag.COMPLETELY_SHAREABLE))) { + // Then we store its actual resource + context.put(o, o.eResource()); + // And we change it temporarily + ((AbstractShareableEObject)o).setResourceNonInverse((Internal)otherResource); + } + } + } + } + // Finally we return the context, in order to restore it later + return context; + } + + /** + * Restores the context previously saved. + * @param context The context, that is a set of objects and their theoretical resource. + */ + private void restoreContext(Map context) { + for (EObject o : context.keySet()) + ((AbstractShareableEObject)o).setResourceNonInverse((Internal)context.get(o)); + } + + @Override + /** + * Overrides the main save method in order to make the contained + * objects believe that they are in this resource, temporarily. + * TODO other save methods ? + */ + public void save(Map options) throws IOException { + // Save context of all contents + Map context = changeContext(); + + // Do the save + super.save(options); + + // Restore the context of all contents + restoreContext(context); + } + +} diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/impl/ClonerImpl.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/impl/ClonerImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..7178bc4983f1d3cfb2bc88f0cf57d96cf17ae48e --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/impl/ClonerImpl.java @@ -0,0 +1,132 @@ +package fr.inria.diverse.cloning.cloner.impl; + +import java.io.File; +import java.util.Iterator; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil.Copier; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; + +import fr.inria.diverse.cloning.cloner.Cloner; +import fr.inria.diverse.cloning.cloner.common.ClassTag; +import fr.inria.diverse.cloning.cloner.common.CloningMaterial; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseCopier; +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseResource; + +/** + * Self containing class with the cloning algorithm. + * + * @author ebousse + * + */ +public class ClonerImpl implements Cloner { + + private CloningMaterial cloningMaterial; + + public ClonerImpl(CloningMaterial cm) { + super(); + cloningMaterial = cm; + } + + private ResourceSet clone(ResourceSet cloned, File outputFolder, String folderName, boolean light) { + + // Creating empty clone resource set + ResourceSet clone = new ResourceSetImpl(); + //clone.cre + + // Either we make a light clone, or not + Copier copier = null; + if (light) + copier = cloningMaterial.createLightCopier(); + else + copier = new LooseCopier(); + + // Getting the tags of the metamodel + MetamodelTags tags = cloningMaterial.getTags(); + + // Cloning all resources + for (Resource r : cloned.getResources()) { + + URI uri = null; + if (outputFolder == null) { + // Getting the complete file name + String filename = r.getURI().segmentsList().get(r.getURI().segmentsList().size() - 1); + // Preparing the URI of the new resource (with a specific 'folder') + uri = r.getURI().trimSegments(1).appendSegment(folderName).appendSegment(filename); + } else { + uri = URI.createFileURI(outputFolder.getAbsolutePath()); + } + + // Creating the new Resource... + Resource resourceClone = null; + // LooseResource if there are readonly objects that might be shared among models + if (tags.mayTagClassesShareable()) { + resourceClone = new LooseResource(tags); + resourceClone.setURI(uri); + clone.getResources().add(resourceClone); + } + // Or regular Resource, if not + else { + //resourceClone = clone.createResource(uri); + resourceClone = new XMIResourceImpl(uri); + //resourceClone.setURI(uri); + clone.getResources().add(resourceClone); + } + + // Copying objects (but not the references, and only tagged mutable ones) + for (Iterator i = r.getAllContents(); i.hasNext();) { + EObject o = i.next(); + ClassTag tag = tags.getTagOf(o.eClass()); + + // We only put the copied object in the resource if not contained already + if (o.eContainer() == null) { + switch (tag) { + case NOT_SHAREABLE: // here the copier should always produce a regular copy + resourceClone.getContents().add(copier.copy(o)); + break; + case PARTIALLY_SHAREABLE: // here the copier will decide whether a light version can/should be produced + resourceClone.getContents().add(copier.copy(o)); + break; + case COMPLETELY_SHAREABLE: // no copy, shared object + resourceClone.getContents().add(o); + break; + } + } else { + switch (tag) { + case NOT_SHAREABLE: // here the copier should always produce a regular copy + copier.copy(o); + break; + case PARTIALLY_SHAREABLE: // here the copier will decide whether a light version can/should be produced + copier.copy(o); + break; + case COMPLETELY_SHAREABLE: // no copy, shared object + break; + } + } + + } + } + + // Resolving references (all of them, even between resources of the clone and between the clone and the origin) + copier.copyReferences(); + + // Returning the obtained clone + return clone; + } + + @Override + public ResourceSet clone(ResourceSet cloned, File outputFolder, boolean light) { + return clone(cloned, outputFolder, "NOTHING", light); + } + + @Override + public ResourceSet clone(ResourceSet cloned, String folderName, boolean light) { + return clone(cloned, null, folderName, light); + } + +} \ No newline at end of file diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/Copy.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/Copy.java new file mode 100644 index 0000000000000000000000000000000000000000..77f8ad5cdf43d04b8204b5501dc8c9edb47d0ea3 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/Copy.java @@ -0,0 +1,220 @@ +package fr.inria.diverse.cloning.cloner.util; + +/* + + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.nio.file.*; + +import static java.nio.file.StandardCopyOption.*; + +import java.nio.file.attribute.*; + +import static java.nio.file.FileVisitResult.*; + +import java.io.IOException; +import java.util.*; + +/** + * Sample code that copies files in a similar manner to the cp(1) program. + */ + +public class Copy { + + /** + * Returns {@code true} if okay to overwrite a file ("cp -i") + */ + static boolean okayToOverwrite(Path file) { + String answer = System.console().readLine("overwrite %s (yes/no)? ", file); + return (answer.equalsIgnoreCase("y") || answer.equalsIgnoreCase("yes")); + } + + /** + * Copy source file to target location. If {@code prompt} is true then prompt user to overwrite target if it exists. + * The {@code preserve} parameter determines if file attributes should be copied/preserved. + */ + static void copyFile(Path source, Path target, boolean prompt, boolean preserve) { + CopyOption[] options = (preserve) ? new CopyOption[] { COPY_ATTRIBUTES, REPLACE_EXISTING } + : new CopyOption[] { REPLACE_EXISTING }; + if (!prompt || Files.notExists(target) || okayToOverwrite(target)) { + try { + Files.copy(source, target, options); + } catch (IOException x) { + System.err.format("Unable to copy: %s: %s%n", source, x); + } + } + } + + /** + * A {@code FileVisitor} that copies a file-tree ("cp -r") + */ + static class TreeCopier implements FileVisitor { + private final Path source; + private final Path target; + private final boolean prompt; + private final boolean preserve; + + TreeCopier(Path source, Path target, boolean prompt, boolean preserve) { + this.source = source; + this.target = target; + this.prompt = prompt; + this.preserve = preserve; + } + + @Override + public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) { + // before visiting entries in a directory we copy the directory + // (okay if directory already exists). + CopyOption[] options = (preserve) ? new CopyOption[] { COPY_ATTRIBUTES } : new CopyOption[0]; + + Path newdir = target.resolve(source.relativize(dir)); + try { + Files.copy(dir, newdir, options); + } catch (FileAlreadyExistsException x) { + // ignore + } catch (IOException x) { + System.err.format("Unable to create: %s: %s%n", newdir, x); + return SKIP_SUBTREE; + } + return CONTINUE; + } + + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { + copyFile(file, target.resolve(source.relativize(file)), prompt, preserve); + return CONTINUE; + } + + @Override + public FileVisitResult postVisitDirectory(Path dir, IOException exc) { + // fix up modification time of directory when done + if (exc == null && preserve) { + Path newdir = target.resolve(source.relativize(dir)); + try { + FileTime time = Files.getLastModifiedTime(dir); + Files.setLastModifiedTime(newdir, time); + } catch (IOException x) { + System.err.format("Unable to copy all attributes to: %s: %s%n", newdir, x); + } + } + return CONTINUE; + } + + @Override + public FileVisitResult visitFileFailed(Path file, IOException exc) { + if (exc instanceof FileSystemLoopException) { + System.err.println("cycle detected: " + file); + } else { + System.err.format("Unable to copy: %s: %s%n", file, exc); + } + return CONTINUE; + } + } + + static void usage() { + System.err.println("java Copy [-ip] source... target"); + System.err.println("java Copy -r [-ip] source-dir... target"); + System.exit(-1); + } + + public static void copyRecursive(Path source, Path dest) throws IOException { + EnumSet opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS); + TreeCopier tc = new TreeCopier(source, dest, false, false); + Files.walkFileTree(source, opts, Integer.MAX_VALUE, tc); + } + + public static void main(String[] args) throws IOException { + boolean recursive = false; + boolean prompt = false; + boolean preserve = false; + + // process options + int argi = 0; + while (argi < args.length) { + String arg = args[argi]; + if (!arg.startsWith("-")) + break; + if (arg.length() < 2) + usage(); + for (int i = 1; i < arg.length(); i++) { + char c = arg.charAt(i); + switch (c) { + case 'r': + recursive = true; + break; + case 'i': + prompt = true; + break; + case 'p': + preserve = true; + break; + default: + usage(); + } + } + argi++; + } + + // remaining arguments are the source files(s) and the target location + int remaining = args.length - argi; + if (remaining < 2) + usage(); + Path[] source = new Path[remaining - 1]; + int i = 0; + while (remaining > 1) { + source[i++] = Paths.get(args[argi++]); + remaining--; + } + Path target = Paths.get(args[argi]); + + // check if target is a directory + boolean isDir = Files.isDirectory(target); + + // copy each source file/directory to target + for (i = 0; i < source.length; i++) { + Path dest = (isDir) ? target.resolve(source[i].getFileName()) : target; + + if (recursive) { + // follow links when copying files + EnumSet opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS); + TreeCopier tc = new TreeCopier(source[i], dest, prompt, preserve); + Files.walkFileTree(source[i], opts, Integer.MAX_VALUE, tc); + } else { + // not recursive so source must not be a directory + if (Files.isDirectory(source[i])) { + System.err.format("%s: is a directory%n", source[i]); + continue; + } + copyFile(source[i], dest, prompt, preserve); + } + } + } +} diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/EcoreHelper.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/EcoreHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..cbfc583a2229501e37c9ac17e2bd66f7aeeafcac --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/EcoreHelper.java @@ -0,0 +1,120 @@ +package fr.inria.diverse.cloning.cloner.util; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +public class EcoreHelper { + + public static class NoSingleRootException extends Exception { + private static final long serialVersionUID = 1L; + private Set roots; + + public NoSingleRootException(Set foundRoots) { + roots = new HashSet(); + roots.addAll(foundRoots); + } + + @Override + public String getMessage() { + String message = "A single root is required. Roots found: "; + for (EClass aClass : roots) + message += aClass.getName() + ", "; + return message.substring(0, message.length() - 2) + "\n" + super.getMessage(); + } + + } + + public static Set findRoots(Set metamodel) { + + // Preparing result set + Set roots = new HashSet(); + + // Finding all contained classes + Set containedClasses = new HashSet(); + for (EClass aClass : metamodel) + for (EReference r : aClass.getEAllContainments()) + (containedClasses).add(r.getEReferenceType()); + + // Finding root classes, ie not contained classes + for (EClass aClass : metamodel) + if (!containedClasses.contains(aClass)) + roots.add(aClass); + return roots; + } + + public static EClass findRoot(Set treeMetamodel) throws NoSingleRootException { + return findRoots(treeMetamodel).iterator().next(); + } + + public static EClass findRoot(Resource treeMetamodel) throws NoSingleRootException { + return findRoot(findEClasses(treeMetamodel)); + } + + public static EClass findRoot(ResourceSet treeMetamodel) throws NoSingleRootException { + return findRoot(findEClasses(treeMetamodel)); + } + + public static Set findRoots(ResourceSet treeMetamodel) { + return findRoots(findEClasses(treeMetamodel)); + } + + public static Set findEClasses(ResourceSet metamodel) { + Set classes = new HashSet(); + for (Resource res : metamodel.getResources()) { + classes.addAll(findEClasses(res)); + } + return classes; + } + + public static Set findEClasses(Resource resource) { + Set classes = new HashSet(); + // Getting all the classes from the resource + for (Iterator i = resource.getAllContents(); i.hasNext();) { + EObject next = i.next(); + if (next instanceof EClass) + classes.add((EClass) next); + } + return classes; + } + + public static Set findEPackages(Resource resource) { + Set packages = new HashSet(); + // Getting all the classes from the resource + for (Iterator i = resource.getAllContents(); i.hasNext();) { + EObject next = i.next(); + if (next instanceof EPackage) + packages.add((EPackage) next); + } + return packages; + } + + public static Set findEPackages(ResourceSet metamodel) { + Set packages = new HashSet(); + for (Resource res : metamodel.getResources()) { + packages.addAll(findEPackages(res)); + } + return packages; + } + + public static String computeFullyQualifiedName(EPackage p) { + String result = p.getName(); + + if (p.getESuperPackage() != null) + result = computeFullyQualifiedName(p.getESuperPackage()) + "." + result; + + return result; + } + + public static String computeFullyQualifiedName(EClass c) { + return computeFullyQualifiedName(c.getEPackage())+"."+c.getName(); + } + +} diff --git a/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/Log.java b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/Log.java new file mode 100644 index 0000000000000000000000000000000000000000..b4060c609ab7e8925bbc723cfcae69b8ac39cb9c --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/Log.java @@ -0,0 +1,85 @@ +package fr.inria.diverse.cloning.cloner.util; + +public class Log { + private static int level = 0; + private static final String INFO = "INFO."; + private static final String ERROR = "ERROR"; + private static final String DEBUG = "DEBUG"; + private static final String ESCCHAR = "\u001b"; + private static final int GREEN = 32; + //private static final int RED = 31 + private static final int BRIGHTRED = 91; + private static final int RESET = 0; + private static boolean ansiColoring = false; + + private static boolean useProgress = false; + private static int progress = 0; + private static int maxProgress = 0; + + public static void enableAnsiColoring() { + ansiColoring = true; + } + + public static String shift() { + String shift = ""; + int i = 0; + while ((i = i + 1) < level) + shift = "| " + shift; + return shift; + } + + public static String color(String str, int color) { + if (ansiColoring) { + return ESCCHAR + "[" + color + "m" + str + ESCCHAR + "[" + RESET + "m"; + } + else + return str; + } + + public static String formatMessage(String type, String msg) { + return "[" + type + "] " + shift() + msg; + } + + public static void info(String msg) { + if (useProgress) + System.out.println(formatMessage(INFO+computeProgress(), msg)); + else + System.out.println(formatMessage(INFO, msg)); + } + + public static void debug(String msg) { + System.out.println(color(formatMessage(DEBUG, msg), GREEN)); + } + + public static void error(String msg) { + System.err.println(color(formatMessage(ERROR, msg), BRIGHTRED)); + } + + public static void plusLevel() { + level = level + 1; + } + + public static void minusLevel() { + level = level - 1; + } + + public static String computeProgress() { + double ratio = ((double)progress) / ((double)maxProgress); + return String.valueOf(String.format("%03d", (int)(ratio*100)))+"%"; + } + + public static void enableProgress(int maxValue) { + useProgress = true; + progress = 0; + maxProgress = maxValue; + } + + public static void disableProgress() { + useProgress = false; + } + + public static void incProgress() { + progress++; + } + +} \ No newline at end of file diff --git a/fr.inria.diverse.cloning.cloner/trashbin/DeepCloner.java b/fr.inria.diverse.cloning.cloner/trashbin/DeepCloner.java new file mode 100644 index 0000000000000000000000000000000000000000..8a2843a3d4c9b1bb51ca66989f14d77fc8a4fa40 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/trashbin/DeepCloner.java @@ -0,0 +1,49 @@ +package fr.diverse.fancyemfcloning.cloner.impl; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import fr.diverse.fancyemfcloning.cloner.Cloner; +import fr.diverse.fancyemfcloning.customemf.ClassTag; + +public class DeepCloner implements Cloner { + + @Override + public ResourceSet clone(ResourceSet cloned, String folder) { + + // Creating empty clone resource set + ResourceSet clone = new ResourceSetImpl(); + + // Preparing the copier, which will allow us to copy objects in new + // resources AND to resolve the references in the clone (even between resources) + EcoreUtil.Copier copier = new EcoreUtil.Copier(); + + // Cloning all resources + for (Resource r : cloned.getResources()) { + // Getting the complete file name + String filename = r.getURI().segmentsList().get(r.getURI().segmentsList().size() - 1); + // Preparing the URI of the new resource (with a specific 'folder') + URI uri = r.getURI().trimSegments(1).appendSegment(folder).appendSegment(filename); + // Creating the new Resource + Resource resourceClone = clone.createResource(uri); + // Copying objects (but not the references) + resourceClone.getContents().addAll(copier.copyAll(r.getContents())); + } + + // Resolving references (all of them, even between resources of the clone) + copier.copyReferences(); + + // Returning the obtained clone + return clone; + } + + @Override + public ClassTag getTagOf(EClass c) { + return ClassTag.completelyMutable; + } + +} diff --git a/fr.inria.diverse.cloning.cloner/trashbin/MutClassesOnlyCloner.java b/fr.inria.diverse.cloning.cloner/trashbin/MutClassesOnlyCloner.java new file mode 100644 index 0000000000000000000000000000000000000000..78309c72ce9f78757ccacd4f9d6e143756485dc5 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/trashbin/MutClassesOnlyCloner.java @@ -0,0 +1,82 @@ +package fr.diverse.fancyemfcloning.cloner.impl; + +import java.util.Iterator; +import java.util.Set; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import test.LooseCopier; +import test.LooseResource; +import fr.diverse.fancyemfcloning.cloner.Cloner; +import fr.diverse.fancyemfcloning.customemf.ClassTag; +import fr.diverse.fancyemfcloning.tagger.AbstractMetamodelTagger; +import fr.diverse.fancyemfcloning.tagger.MutClassesOnlyMetamodelTagger; + +public class MutClassesOnlyCloner implements Cloner { + + protected AbstractMetamodelTagger tagger; + + protected MutClassesOnlyCloner() { + } + + public MutClassesOnlyCloner(Set metamodel) { + this(); + this.tagger = new MutClassesOnlyMetamodelTagger(metamodel); + } + + @Override + public ResourceSet clone(ResourceSet cloned, String folder) { + + // Creating empty clone resource set + ResourceSet clone = new ResourceSetImpl(); + + // Preparing the copier, which will allow us to copy objects in new + // resources + // AND to resolve the references in the clone (even between resources) + EcoreUtil.Copier copier = new LooseCopier();// new EcoreUtil.Copier(); + + // Cloning all resources + for (Resource r : cloned.getResources()) { + // Getting the complete file name + String filename = r.getURI().segmentsList().get(r.getURI().segmentsList().size() - 1); + // Preparing the URI of the new resource (with a specific 'folder') + URI uri = r.getURI().trimSegments(1).appendSegment(folder).appendSegment(filename); + // Creating the new Resource (Loose, because objects might be + // shared) + Resource resourceClone = new LooseResource(this); + resourceClone.setURI(uri); + clone.getResources().add(resourceClone); + // Copying objects (but not the references, and only mutable ones) + // OLD for (EObject o : r.getContents()) { + for (Iterator i = r.getAllContents(); i.hasNext();) { + EObject o = i.next(); + ClassTag mutability = tagger.getTagOfEClass(o.eClass()); + if (mutability == ClassTag.canReachMutable || mutability == ClassTag.completelyMutable + || mutability == ClassTag.partiallyMutable) { + resourceClone.getContents().add(copier.copy(o)); + } else { + resourceClone.getContents().add(o); + } + + } + } + + // Resolving references (all of them, even between resources of the clone) + copier.copyReferences(); + + // Returning the obtained clone + return clone; + } + + @Override + public ClassTag getTagOf(EClass c) { + return tagger.getTagOfEClass(c); + } + +} diff --git a/fr.inria.diverse.cloning.cloner/trashbin/WeakMutClassesOnlyCloner.java b/fr.inria.diverse.cloning.cloner/trashbin/WeakMutClassesOnlyCloner.java new file mode 100644 index 0000000000000000000000000000000000000000..ee80ecbc20f35bd1ca796d49f50cde8b4143b3c9 --- /dev/null +++ b/fr.inria.diverse.cloning.cloner/trashbin/WeakMutClassesOnlyCloner.java @@ -0,0 +1,17 @@ +package fr.diverse.fancyemfcloning.cloner.impl; + +import java.util.Set; + +import org.eclipse.emf.ecore.resource.Resource; + +import fr.diverse.fancyemfcloning.tagger.WeakMutClassesOnlyMetamodelTagger; + +public class WeakMutClassesOnlyCloner extends MutClassesOnlyCloner{ + + + public WeakMutClassesOnlyCloner(Set metamodel) { + super(); + this.tagger = new WeakMutClassesOnlyMetamodelTagger(metamodel); + } + +} diff --git a/fr.inria.diverse.cloning.materialgenerator/.classpath b/fr.inria.diverse.cloning.materialgenerator/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..4ead142087a1d81b695056ceb63dc8624e835cf6 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/fr.inria.diverse.cloning.materialgenerator/.project b/fr.inria.diverse.cloning.materialgenerator/.project new file mode 100644 index 0000000000000000000000000000000000000000..b0578112b735fbc5b1c059bef78e69bdb4560739 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/.project @@ -0,0 +1,28 @@ + + + fr.inria.diverse.cloning.materialgenerator + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/fr.inria.diverse.cloning.materialgenerator/.settings/org.eclipse.jdt.core.prefs b/fr.inria.diverse.cloning.materialgenerator/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..7341ab1683c4f1bd2f33bbd3d102ebf032569b57 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/fr.inria.diverse.cloning.materialgenerator/META-INF/MANIFEST.MF b/fr.inria.diverse.cloning.materialgenerator/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..77e36eb248ee612d97a559b273d0b30d8912b204 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/META-INF/MANIFEST.MF @@ -0,0 +1,27 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: CloningMaterialGenerator +Bundle-SymbolicName: fr.inria.diverse.cloning.materialgenerator;singleton:=true +Bundle-Version: 1.0.0.qualifier +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.gmt.modisco.java.generation;bundle-version="0.11.1", + org.eclipse.emf.common, + org.eclipse.emf.ecore;bundle-version="2.9.1", + org.eclipse.modisco.java.discoverer;bundle-version="0.11.1", + org.eclipse.modisco.infra.discovery.core;bundle-version="0.11.1", + org.eclipse.core.resources;bundle-version="3.8.101", + org.eclipse.jdt.core;bundle-version="3.9.1", + org.eclipse.equinox.registry, + org.eclipse.gmt.modisco.java;bundle-version="0.11.1", + org.eclipse.emf.ecore.xmi;bundle-version="2.9.1", + org.eclipse.gmf.runtime.emf.core;bundle-version="1.7.0", + fr.inria.diverse.cloning.cloner;bundle-version="0.1.0", + org.eclipse.emf.codegen;bundle-version="2.9.0", + org.eclipse.emf.codegen.ecore;bundle-version="2.9.1", + org.eclipse.jface.text;bundle-version="3.8.101" +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Export-Package: fr.inria.diverse.cloning.materialgenerator.generators, + fr.inria.diverse.cloning.materialgenerator.metrics, + fr.inria.diverse.cloning.materialgenerator.tagger, + fr.inria.diverse.cloning.materialgenerator.tagger.impl, + fr.inria.diverse.cloning.materialgenerator.util diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/CloningMaterialClassGenerator.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/CloningMaterialClassGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..de07b3237bb1f7f7c8632dedf9c5b04098607191 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/CloningMaterialClassGenerator.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/Constants.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/Constants.class new file mode 100644 index 0000000000000000000000000000000000000000..0d7a6caefcfa447f8f8eb8ca2e49db2cf45b3e9e Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/Constants.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/EMFImpl2PImpl.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/EMFImpl2PImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..d0a064253b2b5343e76f1e08a4795d5433c0c859 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/EMFImpl2PImpl.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/LightCopierGenerator.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/LightCopierGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..9aca022fe9a2726c8ccd22211c1b8ea6c6d527cc Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/LightCopierGenerator.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/PImplGenerator.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/PImplGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..2f96b540776db3aa6cbec03554c927897bf913b3 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/PImplGenerator.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/TagsGenerator.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/TagsGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..36c49cbd5c1c1771d90a0154d822a03d93d7a957 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/TagsGenerator.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/main/Application.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/main/Application.class new file mode 100644 index 0000000000000000000000000000000000000000..fda04ad8fdac753ca9eab6f082a72788389c254f Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/main/Application.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/metrics/CloningMetrics.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/metrics/CloningMetrics.class new file mode 100644 index 0000000000000000000000000000000000000000..abcc9eafd3bee677a77afe23b5d4b8f4bc0e3951 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/metrics/CloningMetrics.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/Tagger.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/Tagger.class new file mode 100644 index 0000000000000000000000000000000000000000..cd55a5fb9dee09b66c9dfcfbe81accc07b21c283 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/Tagger.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/AbstractTagger$PropertiesMutability.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/AbstractTagger$PropertiesMutability.class new file mode 100644 index 0000000000000000000000000000000000000000..efa775f981418b158238a0672efd63095888bf52 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/AbstractTagger$PropertiesMutability.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/AbstractTagger.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/AbstractTagger.class new file mode 100644 index 0000000000000000000000000000000000000000..35e0c7e952152785065b2ef13da6f6cbec11381d Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/AbstractTagger.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/DeepTagger.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/DeepTagger.class new file mode 100644 index 0000000000000000000000000000000000000000..fcb2c0c6f744caeee5ece5639340271107fc0524 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/DeepTagger.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/MutClassesOnlyTagger$StronglyConnectedComponent.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/MutClassesOnlyTagger$StronglyConnectedComponent.class new file mode 100644 index 0000000000000000000000000000000000000000..e54f1eba9c4fa7ac3773d204d987b36af495bf8d Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/MutClassesOnlyTagger$StronglyConnectedComponent.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/MutClassesOnlyTagger.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/MutClassesOnlyTagger.class new file mode 100644 index 0000000000000000000000000000000000000000..6a2d5e2bd8c448e431d315036da8e9de2528715f Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/MutClassesOnlyTagger.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/WeakMutClassesOnlyTagger.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/WeakMutClassesOnlyTagger.class new file mode 100644 index 0000000000000000000000000000000000000000..7ea58a79f3743e0474abc06247cd0247bd5bce6d Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/WeakMutClassesOnlyTagger.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/util/CodeGeneration.class b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/util/CodeGeneration.class new file mode 100644 index 0000000000000000000000000000000000000000..79a8e09cf4792f62f0642d4e3b4b25df4e5eb3c6 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/util/CodeGeneration.class differ diff --git a/fr.inria.diverse.cloning.materialgenerator/build.properties b/fr.inria.diverse.cloning.materialgenerator/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..2b0d95b6b02b49d14dbb5f6940aa13b6f13bce29 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/build.properties @@ -0,0 +1,5 @@ +source.. = src/ +output.. = bin/ +bin.includes = plugin.xml,\ + META-INF/,\ + . diff --git a/fr.inria.diverse.cloning.materialgenerator/javamodel/javamodel.xmi b/fr.inria.diverse.cloning.materialgenerator/javamodel/javamodel.xmi new file mode 100644 index 0000000000000000000000000000000000000000..5453d0f5138ba4032ea5742d77b759f2e383f850 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/javamodel/javamodel.xmi @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.materialgenerator/plugin.xml b/fr.inria.diverse.cloning.materialgenerator/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..307adc0726e1bb3a08a1a53228204047719383a7 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/plugin.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.log b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.log new file mode 100644 index 0000000000000000000000000000000000000000..c2da61cbd188c447eff30b4eb7d36430c56c8ebb --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.log @@ -0,0 +1,46 @@ +!SESSION 2014-03-05 10:16:11.737 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.7.0_51 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR +Framework arguments: -application fr.inria.diverse.cloning.materialgenerator.application +Command-line arguments: -application fr.inria.diverse.cloning.materialgenerator.application -data /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.materialgenerator/runtime-data -dev file:/home/ebousse/Dev/modelCloning/emf/.metadata/.plugins/org.eclipse.pde.core/Run CloningMaterialGenerator/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog + +!ENTRY SomeMetamodel 4 0 2014-03-05 10:16:13.208 +!MESSAGE [SCR] Component definition XMLs not found in bundle SomeMetamodel. The component header value is component.xml + +!ENTRY SomeMetamodel 4 0 2014-03-05 10:16:13.209 +!MESSAGE [SCR] Component definition XMLs not found in bundle SomeMetamodel. The component header value is component.xml + +!ENTRY org.eclipse.osgi 2 1 2014-03-05 10:16:14.475 +!MESSAGE NLS unused message: line_separator_platform_mac_os_9 in: org.eclipse.core.internal.runtime.messages + +!ENTRY org.eclipse.osgi 2 1 2014-03-05 10:16:14.770 +!MESSAGE NLS unused message: LaunchConfigurationWorkingCopy_6 in: org.eclipse.debug.internal.core.DebugCoreMessages + +!ENTRY org.eclipse.osgi 2 1 2014-03-05 10:16:14.771 +!MESSAGE NLS unused message: LaunchConfigurationWorkingCopy_7 in: org.eclipse.debug.internal.core.DebugCoreMessages + +!ENTRY org.eclipse.osgi 2 1 2014-03-05 10:16:14.771 +!MESSAGE NLS unused message: LaunchConfigurationWorkingCopy_8 in: org.eclipse.debug.internal.core.DebugCoreMessages + +!ENTRY org.eclipse.osgi 2 1 2014-03-05 10:16:14.771 +!MESSAGE NLS unused message: LaunchConfigurationType_0 in: org.eclipse.debug.internal.core.DebugCoreMessages + +!ENTRY org.eclipse.osgi 2 1 2014-03-05 10:16:14.771 +!MESSAGE NLS unused message: LaunchConfigurationType_1 in: org.eclipse.debug.internal.core.DebugCoreMessages + +!ENTRY org.eclipse.osgi 2 1 2014-03-05 10:16:14.943 +!MESSAGE NLS unused message: TargetPlatformResetJob_resetTarget in: org.eclipse.pde.internal.core.pderesources + +!ENTRY org.eclipse.osgi 2 1 2014-03-05 10:16:15.293 +!MESSAGE NLS unused message: StandardVMType_Standard_VM_not_supported_on_MacOS__1 in: org.eclipse.jdt.internal.launching.LaunchingMessages + +!ENTRY org.apache.ivyde.eclipse 1 0 2014-03-05 10:16:18.508 +!MESSAGE starting IvyDE plugin + +!ENTRY org.apache.ivyde.eclipse 1 0 2014-03-05 10:16:18.568 +!MESSAGE IvyDE plugin started + +!ENTRY org.eclipse.osgi 2 1 2014-03-05 10:16:18.909 +!MESSAGE NLS unused message: JavaEditorPreferencePage_highlightMatchingBrackets in: org.eclipse.jdt.internal.ui.preferences.PreferencesMessages diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.location b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.location new file mode 100644 index 0000000000000000000000000000000000000000..2d206690093ceb5d54ee30e3d770aefbabb64cd6 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.location differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.markers.snap b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.markers.snap new file mode 100644 index 0000000000000000000000000000000000000000..91d6c541512db06197e1b732473d567ce4b92d6a Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.markers.snap differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.syncinfo.snap b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.syncinfo.snap new file mode 100644 index 0000000000000000000000000000000000000000..91d6c541512db06197e1b732473d567ce4b92d6a Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.syncinfo.snap differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.location b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.location new file mode 100644 index 0000000000000000000000000000000000000000..4e9298916d9b0882b568b3fd9f33dbd0edb09ed6 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.location differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.markers.snap b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.markers.snap new file mode 100644 index 0000000000000000000000000000000000000000..a9630afe381f5fa2a69cc142f796cc45991621ee Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.markers.snap differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.syncinfo.snap b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.syncinfo.snap new file mode 100644 index 0000000000000000000000000000000000000000..91d6c541512db06197e1b732473d567ce4b92d6a Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.syncinfo.snap differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..aed576eb7c0a0e3a5efc5bfe7cbe0cd5dd7e71f2 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version new file mode 100644 index 0000000000000000000000000000000000000000..6b2aaa7640726588bcd3d57e1de4b1315b7f315e --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap new file mode 100644 index 0000000000000000000000000000000000000000..0b368ce14fbcdffc79d020bc00b88646cda52674 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources new file mode 100644 index 0000000000000000000000000000000000000000..35e474e1770be86e319da3f7b7f1e3d754e7d14c Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.snap b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.snap new file mode 100644 index 0000000000000000000000000000000000000000..b3367921a9c234d7aac69d971a263820ac24ed43 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.snap differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.acceleo.common.prefs b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.acceleo.common.prefs new file mode 100644 index 0000000000000000000000000000000000000000..4eb477aebfb08178d4016dcbc27106656b878579 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.acceleo.common.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.acceleo.ui.notification=true diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..dffc6b51349681ffb272ab899b3ef7c402cf49f9 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +version=1 diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..f42de363afaae68bbd968318f1d331877f5514fc --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs new file mode 100644 index 0000000000000000000000000000000000000000..072405de468f774525cc6356db1c6db3ef96c3bb --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.launching.PREF_VM_XML=\n\n\n\n\n\n diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000000000000000000000000000000000..cc870f858381d8e83a5b4f78232b6f2dbe7e3f3a --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,12 @@ +content_assist_proposals_background=255,255,255 +content_assist_proposals_foreground=0,0,0 +eclipse.preferences.version=1 +fontPropagated=true +org.eclipse.jdt.ui.editor.tab.width= +org.eclipse.jdt.ui.formatterprofiles.version=12 +org.eclipse.jdt.ui.javadoclocations.migrated=true +proposalOrderMigrated=true +spelling_locale_initialized=true +tabWidthPropagated=true +useAnnotationsPrefPage=true +useQuickDiffPrefPage=true diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..f73dee8044c157702ca044964bd5a6652a0d0a98 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +platform_path=/usr/lib64/eclipse +workspace_target_handle=local\:1394010976306.target diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/.org.eclipse.jdt.core.external.folders/.project b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/.org.eclipse.jdt.core.external.folders/.project new file mode 100644 index 0000000000000000000000000000000000000000..8289607ac3cb18b4e0b599081cfa9948833df10c --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/.org.eclipse.jdt.core.external.folders/.project @@ -0,0 +1,33 @@ + + + .org.eclipse.jdt.core.external.folders + + + + + + + + + + .link0 + 2 + /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.cloner/bin + + + .link1 + 2 + /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.cloner + + + .link2 + 2 + /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.common/bin + + + .link3 + 2 + /home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.benchmark.common + + + diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/1974333096.index b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/1974333096.index new file mode 100644 index 0000000000000000000000000000000000000000..7117ecaa030b05168b6f72314605b19a240f210f Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/1974333096.index differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/2369791033.index b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/2369791033.index new file mode 100644 index 0000000000000000000000000000000000000000..5fe1ed0fed44f6c6328d6b8534d7fee6f502e60d Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/2369791033.index differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/241682911.index b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/241682911.index new file mode 100644 index 0000000000000000000000000000000000000000..0d59cb85ae2c70afcaffe08e68a1812f06bce0de Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/241682911.index differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/3765020915.index b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/3765020915.index new file mode 100644 index 0000000000000000000000000000000000000000..57e8c60a15b4c8862f192df9812d8114667d94d1 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/3765020915.index differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps new file mode 100644 index 0000000000000000000000000000000000000000..030a7b35fcdf0bbe718e1ac916391df842f06337 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt new file mode 100644 index 0000000000000000000000000000000000000000..85863977890401f7158f3d921ad9a3be30cee75c --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt @@ -0,0 +1 @@ +java \ No newline at end of file diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt new file mode 100644 index 0000000000000000000000000000000000000000..fa4fcd66e08b7bac146e0013b6740b400f65fff8 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt @@ -0,0 +1,4 @@ +INDEX VERSION 1.126+/home/ebousse/Dev/modelCloning/emf/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core +241682911.index +3765020915.index +1974333096.index diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat new file mode 100644 index 0000000000000000000000000000000000000000..9585d9bbcca5e2c8bfa53344ed929050550287bd Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml new file mode 100644 index 0000000000000000000000000000000000000000..40d990be1ac224c56c640f6f242bc0192c7815d0 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml @@ -0,0 +1,4 @@ + + + + diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml new file mode 100644 index 0000000000000000000000000000000000000000..21389a7788e3421b43e9bfee3e4aac96c1709773 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e390f501d055f97f1a023eb11d0916f4992c3e9 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml @@ -0,0 +1,2 @@ + + diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties new file mode 100644 index 0000000000000000000000000000000000000000..ec4c7b917dea721d3331a960739f08ab37ae4317 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties @@ -0,0 +1,2 @@ +#Cached timestamps +#Wed Mar 05 10:16:25 CET 2014 diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributions.1 b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributions.1 new file mode 100644 index 0000000000000000000000000000000000000000..f3ecb3b9b7f5a616191247143fdbf5f16937c87d Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributions.1 differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributors.1 b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributors.1 new file mode 100644 index 0000000000000000000000000000000000000000..a95d7d57e5b4f6c8c80fce9fcc231727a7d61eca Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributors.1 differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.extraData.1 b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.extraData.1 new file mode 100644 index 0000000000000000000000000000000000000000..e88ddafc1202c5f86aa3d2f91deaafaa75423b30 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.extraData.1 differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.mainData.1 b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.mainData.1 new file mode 100644 index 0000000000000000000000000000000000000000..7955560088c9119b4ae7619468c57bac25b99d3e Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.mainData.1 differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.7 b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.7 new file mode 100644 index 0000000000000000000000000000000000000000..34b8392012283a6a768a7d3b2b9aa2e9e410ecb5 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.7 @@ -0,0 +1,10 @@ +#safe table +#Wed Mar 05 10:16:25 CET 2014 +.contributors=0 +.table=0 +.mainData=0 +.namespaces=0 +.orphans=0 +.extraData=0 +.contributions=0 +.crcdca0d21f.v1 diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.8 b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.8 new file mode 100644 index 0000000000000000000000000000000000000000..b08a6e03e49f4e3a30d7fe5f30e4a11328c2871d --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.8 @@ -0,0 +1,10 @@ +#safe table +#Wed Mar 05 10:16:25 CET 2014 +.contributors=1 +.table=1 +.mainData=1 +.namespaces=1 +.orphans=1 +.extraData=1 +.contributions=1 +.crc949c286a.v1 diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTableLock b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTableLock new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.namespaces.1 b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.namespaces.1 new file mode 100644 index 0000000000000000000000000000000000000000..4147ff619211769d0b919e189d4610be1436bdc9 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.namespaces.1 differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.orphans.1 b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.orphans.1 new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.orphans.1 differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.table.1 b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.table.1 new file mode 100644 index 0000000000000000000000000000000000000000..2791b6939321841dfd4e2471f3538c3596f4c05d Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.table.1 differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.local_targets/1394010976306.target b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.local_targets/1394010976306.target new file mode 100644 index 0000000000000000000000000000000000000000..8a7a99cd5c855ae122c9c9a6680a140f59799b85 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.local_targets/1394010976306.target @@ -0,0 +1,15 @@ + + + + + + +linux +gtk +x86_64 +fr_FR + + +-Xms512m -Xmx2048m -Dorg.eclipse.swt.browser.UseWebKitGTK=true -Dhelp.lucene.tokenizer=standard -XX:CompileCommand=exclude,org/eclipse/core/internal/dtree/DataTreeNode,forwardDeltaWith -XX:CompileCommand=exclude,org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding,<init> -XX:CompileCommand=exclude,org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates,instantiateTemplate -XX:CompileCommand=exclude,org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage,addBinding -XX:CompileCommand=exclude,org/python/pydev/editor/codecompletion/revisited/PythonPathHelper,isValidSourceFile -XX:CompileCommand=exclude,org/eclipse/tycho/core/osgitools/EquinoxResolver,newState -Dorg.eclipse.equinox.p2.reconciler.dropins.directory=/usr/share/eclipse/dropins -Dorg.eclipse.swt.browser.DefaultType=mozilla -Declipse.p2.skipMovedInstallDetection=true + + diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.lazy b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.lazy new file mode 100644 index 0000000000000000000000000000000000000000..0996f0a7aac23efa2aee68dad283157da2a7266d Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.lazy differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.pluginInfo b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.pluginInfo new file mode 100644 index 0000000000000000000000000000000000000000..d171059baa56cd3ace707a484eb0198ab96841f9 --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.pluginInfo @@ -0,0 +1,6 @@ + + + + + + diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.state b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.state new file mode 100644 index 0000000000000000000000000000000000000000..bb63ddf87663b8814a28ed332152c4d52a909f54 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.state differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/517150724739.target/.lazy b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/517150724739.target/.lazy new file mode 100644 index 0000000000000000000000000000000000000000..bc66837561a6c7b0e82a24b356b1a01da4002242 Binary files /dev/null and b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/517150724739.target/.lazy differ diff --git a/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/517150724739.target/.pluginInfo b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/517150724739.target/.pluginInfo new file mode 100644 index 0000000000000000000000000000000000000000..52d27e4c1b7f02e27bad51c4f787676739fbd1de --- /dev/null +++ b/fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/517150724739.target/.pluginInfo @@ -0,0 +1,1692 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +