diff --git a/src/main/scala/org/rosi_project/model_sync/generator/EcoreLoader.scala b/src/main/scala/org/rosi_project/model_sync/generator/EcoreLoader.scala index 6bd33b84fa74494b769718936aa11b759e4c5bea..350de718158c9b7cd5516c26ebca0695ac1a80e5 100644 --- a/src/main/scala/org/rosi_project/model_sync/generator/EcoreLoader.scala +++ b/src/main/scala/org/rosi_project/model_sync/generator/EcoreLoader.scala @@ -1,13 +1,16 @@ package org.rosi_project.model_sync.generator +import org.eclipse.emf.common.util.URI +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl import org.eclipse.emf.ecore.{EObject, EPackage} -import scroll.internal.ecore.ECoreImporter /** Simple service to load an ECORE model from a file. * * @author Rico Bergmann */ -class EcoreLoader extends ECoreImporter { +class EcoreLoader { /** Fetches an ecore model from XML. * @@ -15,8 +18,13 @@ class EcoreLoader extends ECoreImporter { * @return the model described by the XML */ def loadEcore(path: String = "assets/ttc17.ecore"): EPackage = { - this.path = path - val res = loadModel() + // see https://github.com/max-leuthaeuser/SCROLL/blob/dd269d5620257be1ea2f2044f398c090e9755fb3/core/src/main/scala/scroll/internal/ecore/ECoreImporter.scala + require(null != path && path.nonEmpty) + val resourceSet = new ResourceSetImpl() + val _ = resourceSet.getResourceFactoryRegistry.getExtensionToFactoryMap.put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl()) + val res = resourceSet.getResource(URI.createFileURI(path), true) + require(null != res) + require(!res.getContents.isEmpty) res.getContents.toArray(new Array[EObject](0)).toList.find(_.isInstanceOf[EPackage]).map((p: EObject) => p.asInstanceOf[EPackage]).orNull }