| Loading java2kdm Models - Best Practices? [message #899847] |
Thu, 02 August 2012 10:56  |
Benjamin Klatt Messages: 30 Registered: September 2010 |
Member |
|
|
Hi,
we are using the Java and Inventory Discoverer to get complete models of our java projects.
For the further processing in our tools we use the following code to load the _java2kdm.xmi model and to ensure that all referenced submodels are resolved:
JavaapplicationPackage.eINSTANCE.eClass();
JavaPackage.eINSTANCE.eClass();
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.eAdapters().add(new ECrossReferenceAdapter());
EObject model = ModelUtils.load(java2kdmModelFile, resourceSet);
However, the ModelUtils class comes from the EMFCompare project and as you can see we need to explicitly reference the packages to ensure they are registered before the model is loaded.
Is there any recommended way or any utility offered by MoDisco to simplify loading java2kdm models and resolving all references? Could you provide some example code how this can be done better and even without any dependency on EMF Compare?
Thanks a lot
Benjamin
|
|
|
| Re: Loading java2kdm Models - Best Practices? [message #900245 is a reply to message #899847] |
Mon, 06 August 2012 03:12   |
Fabien Giquel Messages: 134 Registered: July 2009 |
Senior Member |
|
|
Hello Benjamin,
you may try the resolveAll services from org.eclipse.emf.ecore.EcoreUtil.
For Example :
ResourceSet rs = new ResourceSetImpl();
Resource r = rs.createResource(URI.createFileURI("D:/myPath/my_java2kdm.xmi"));
r.load(null);
EcoreUtil.resolveAll(rs);
----------------------------------------------------
Fabien GIQUEL
R&D Engineer
Mia-Software
4, rue du Château de l'Eraudiere
44324 NANTES CEDEX 03
----------------------------------------------------
|
|
|
|
| Re: Loading java2kdm Models - Best Practices? [message #900731 is a reply to message #900537] |
Wed, 08 August 2012 06:37  |
Benjamin Klatt Messages: 30 Registered: September 2010 |
Member |
|
|
Ok, I found the issue.
Due to the JUnit test environment (not a Junit Plugin Test), there was no default resource factory registered.
Explicitly registering the resource solved the problem:
// load the required meta class packages
JavaapplicationPackage.eINSTANCE.eClass();
JavaPackage.eINSTANCE.eClass();
// register the factory to be able to read xmi files
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap()
.put(Resource.Factory.Registry.DEFAULT_EXTENSION,new XMIResourceFactoryImpl());
// load the resource and resolve the proxies
ResourceSet rs = new ResourceSetImpl();
Resource r = rs.createResource(URI.createFileURI(java2kdmModelFile.getAbsolutePath()));
r.load(null);
EcoreUtil.resolveAll(rs) ;
|
|
|
Powered by
FUDForum. Page generated in 0.03193 seconds