diff --git a/build.sbt b/build.sbt index 24e4b959b4ea8a41f46d545de3fd7d7da6e30203..39aae81e9e9a67cb23e38f3459c7d59f7f2fe092 100644 --- a/build.sbt +++ b/build.sbt @@ -2,7 +2,7 @@ import sbt.Keys.{libraryDependencies, scalacOptions, version} val emfcommonVersion = "2.12.0" val emfecoreVersion = "2.12.0" -val scrollVersion = "1.6" +val scrollVersion = "1.8" val scoptVersion = "3.7.0" val liftVersion = "3.3.0" @@ -14,6 +14,7 @@ lazy val generator = (project in file(".")) version := "0.1", scalaVersion := "2.12.6", libraryDependencies ++= Seq( + "com.github.max-leuthaeuser" %% "scroll" % scrollVersion, "org.scala-lang" % "scala-reflect" % scalaVersion.value, "org.scala-lang" % "scala-compiler" % scalaVersion.value, "org.eclipse.emf" % "org.eclipse.emf.common" % emfcommonVersion, diff --git a/lib/ModelSyncProvider b/lib/ModelSyncProvider index ace8bdf5799dd89bd66d01782237123172bb0ec0..619bbf1efcfee406a134412275928322d9d28e05 160000 --- a/lib/ModelSyncProvider +++ b/lib/ModelSyncProvider @@ -1 +1 @@ -Subproject commit ace8bdf5799dd89bd66d01782237123172bb0ec0 +Subproject commit 619bbf1efcfee406a134412275928322d9d28e05 diff --git a/lib/SCROLL b/lib/SCROLL deleted file mode 160000 index 623765816af6d27387efb82dfb890bc4318c58a2..0000000000000000000000000000000000000000 --- a/lib/SCROLL +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 623765816af6d27387efb82dfb890bc4318c58a2 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 }