Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsboyko2016-04-28 14:11:21 +0000
committersboyko2016-04-28 14:11:21 +0000
commite7b359b0e1572ff44f0b91503a71855f3ffddde0 (patch)
tree3bc1fb47a83dc5e72e90b0c8183f385055326799
parentb5769e42394113ffba4c7d26f3915a772f160b9f (diff)
downloadorg.eclipse.qvto-e7b359b0e1572ff44f0b91503a71855f3ffddde0.tar.gz
org.eclipse.qvto-e7b359b0e1572ff44f0b91503a71855f3ffddde0.tar.xz
org.eclipse.qvto-e7b359b0e1572ff44f0b91503a71855f3ffddde0.zip
[490424] Assigning incompatible enumeration values does not produce an
error
-rw-r--r--plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/ast/parser/QvtOperationalParserUtil.java10
-rw-r--r--tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug490424/bug490424.qvto18
-rw-r--r--tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug490424/test1.ecore18
-rw-r--r--tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/ParserTests.java15
-rw-r--r--tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/TestQvtParser.java19
-rw-r--r--tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/DebugExecutorTest.java42
-rw-r--r--tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/TestQvtStandaloneExecutor.java2
-rw-r--r--tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/TransformationExecutorTest.java44
-rw-r--r--tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/util/TestUtil.java48
9 files changed, 129 insertions, 87 deletions
diff --git a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/ast/parser/QvtOperationalParserUtil.java b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/ast/parser/QvtOperationalParserUtil.java
index c46fd14cb..90fefb62b 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/ast/parser/QvtOperationalParserUtil.java
+++ b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/ast/parser/QvtOperationalParserUtil.java
@@ -337,8 +337,8 @@ public class QvtOperationalParserUtil {
// FIXME - better be handled in OCL itself
// check was added due to https://bugs.eclipse.org/bugs/show_bug.cgi?id=275824
- if (variableType instanceof EDataType && initialiserType instanceof EDataType && variableType instanceof PredefinedType<?> == false) {
- if (((EDataType) variableType).getInstanceClass() == ((EDataType) initialiserType).getInstanceClass()) {
+ if (variableType instanceof EDataType && initialiserType instanceof EDataType && variableType instanceof PredefinedType == false) {
+ if (variableType.getInstanceClass() == initialiserType.getInstanceClass() && variableType.getInstanceClass() != null) {
return true;
}
if (initialiserType instanceof EEnum &&
@@ -447,7 +447,7 @@ public class QvtOperationalParserUtil {
actualType = ((CollectionType) actualType).getElementType();
}
- if (!QvtOperationalParserUtil.isAssignableToFrom(env, baseType, actualType)) {
+ if (!isAssignableToFrom(env, baseType, actualType)) {
QvtOperationalUtil.reportError(env, NLS.bind(ValidationMessages.SemanticUtil_5,
new Object[] { leftName, QvtOperationalTypesUtil.getTypeFullName(baseType),
QvtOperationalTypesUtil.getTypeFullName(actualType) }), rValueCS);
@@ -461,7 +461,7 @@ public class QvtOperationalParserUtil {
actualType = ((CollectionType) actualType).getElementType();
}
- if (!QvtOperationalParserUtil.isAssignableToFrom(env, baseType, actualType)) {
+ if (!isAssignableToFrom(env, baseType, actualType)) {
QvtOperationalUtil.reportError(env, NLS.bind(ValidationMessages.SemanticUtil_5,
new Object[] { leftName, QvtOperationalTypesUtil.getTypeFullName(baseType),
QvtOperationalTypesUtil.getTypeFullName(actualType) }), rValueCS);
@@ -469,7 +469,7 @@ public class QvtOperationalParserUtil {
}
}
else {
- if (!QvtOperationalParserUtil.isAssignableToFrom(env, leftType, rightType)) {
+ if (!isAssignableToFrom(env, leftType, rightType)) {
QvtOperationalUtil.reportError(env, NLS.bind(ValidationMessages.SemanticUtil_8, new Object[] { leftName,
QvtOperationalTypesUtil.getTypeFullName(leftType),
QvtOperationalTypesUtil.getTypeFullName(rightType) }), rValueCS);
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug490424/bug490424.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug490424/bug490424.qvto
new file mode 100644
index 000000000..4c542e311
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug490424/bug490424.qvto
@@ -0,0 +1,18 @@
+modeltype test1 "strict" uses "http://example.org/test1";
+modeltype imperativeOCL "strict" uses "http://www.eclipse.org/qvt/1.0/ImperativeOCL";
+
+transformation bug490424;
+
+main() {
+ object XExpression {
+ operator := test1::XOperator::DoX;
+ operator := /*<error>*/test1::YOperator::DoY/*</error>*/;
+ operator := /*<error>*/imperativeOCL::SeverityKind::error/*</error>*/;
+ };
+
+ object YExpression {
+ operator := /*<error>*/test1::XOperator::DoX/*</error>*/;
+ operator := test1::YOperator::DoY;
+ operator := /*<error>*/imperativeOCL::SeverityKind::error/*</error>*/;
+ };
+}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug490424/test1.ecore b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug490424/test1.ecore
new file mode 100644
index 000000000..47ab11404
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug490424/test1.ecore
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="test1" nsURI="http://example.org/test1" nsPrefix="test1">
+ <eClassifiers xsi:type="ecore:EClass" name="XExpression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" lowerBound="1"
+ eType="#//XOperator"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="XOperator">
+ <eLiterals name="DoX" literal="DoX"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="YOperator">
+ <eLiterals name="DoY" value="11" literal="DoY"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="YExpression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" lowerBound="1"
+ eType="#//YOperator"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/ParserTests.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/ParserTests.java
index d39fcf9e9..055ac4013 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/ParserTests.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/ParserTests.java
@@ -13,6 +13,10 @@
*******************************************************************************/
package org.eclipse.m2m.tests.qvt.oml;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@@ -33,6 +37,12 @@ public class ParserTests {
usesSourceAnnotations = false;
}
+ public TestData includeMetamodel(String relativePath) {
+ URI relativeURI = URI.createURI(relativePath);
+ ecoreFileMetamodels.add(relativeURI);
+ return this;
+ }
+
public String getDir() { return myDir; }
public int getErrCount() { return myErrCount; }
public int getWarnCount() { return myWarnCount; }
@@ -45,6 +55,10 @@ public class ParserTests {
return usesSourceAnnotations;
}
+ public List<URI> getMetamodels() {
+ return ecoreFileMetamodels;
+ }
+
@Override
public String toString() {
return getDir();
@@ -53,6 +67,7 @@ public class ParserTests {
private final String myDir;
private final int myErrCount;
private final int myWarnCount;
+ protected final List<URI> ecoreFileMetamodels = new ArrayList<URI>();
private boolean usesSourceAnnotations;
/**
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/TestQvtParser.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/TestQvtParser.java
index c549c9098..8367897ae 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/TestQvtParser.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/TestQvtParser.java
@@ -32,11 +32,13 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.emf.common.util.BasicMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.m2m.internal.qvt.oml.QvtMessage;
import org.eclipse.m2m.internal.qvt.oml.common.MDAConstants;
import org.eclipse.m2m.internal.qvt.oml.common.io.FileUtil;
import org.eclipse.m2m.internal.qvt.oml.compiler.CompiledUnit;
-import org.eclipse.m2m.internal.qvt.oml.compiler.CompilerUtils;
import org.eclipse.m2m.internal.qvt.oml.compiler.QVTOCompiler;
import org.eclipse.m2m.internal.qvt.oml.compiler.QvtCompilerOptions;
import org.eclipse.m2m.internal.qvt.oml.compiler.UnitProxy;
@@ -218,6 +220,7 @@ public class TestQvtParser extends TestCase {
TestData.createSourceChecked("bug484020", 14, 0), //$NON-NLS-1$
TestData.createSourceChecked("bug473151", 0, 5), //$NON-NLS-1$
new TestData("bug488742", 0), //$NON-NLS-1$
+ TestData.createSourceChecked("bug490424", 4, 0).includeMetamodel("test1.ecore"), //$NON-NLS-1$ //$NON-NLS-2$
}
);
}
@@ -257,10 +260,17 @@ public class TestQvtParser extends TestCase {
public void runTest() throws Exception {
copyData("sources/" + myData.getDir(), "parserTestData/sources/" + myData.getDir()); //$NON-NLS-1$ //$NON-NLS-2$
- File folder = getDestinationFolder(); //$NON-NLS-1$
+ final File folder = getDestinationFolder();
assertTrue("Invalid folder " + folder, folder.exists() && folder.isDirectory()); //$NON-NLS-1$
- //System.err.println("testParsing: " + folder.getName()); //$NON-NLS-1$
+ resSet = TestUtil.getMetamodelResolutionRS(new ResourceSetImpl(), myData.getMetamodels(), new TestUtil.UriProvider() {
+
+ public URI getModelUri(String model) {
+ String absolutePath = getFile(folder, model).getAbsolutePath();
+ return URI.createFileURI(absolutePath);
+ }
+ });
+
myCompiled = compile(folder);
assertTrue("No results", myCompiled.length > 0); //$NON-NLS-1$
@@ -368,7 +378,7 @@ public class TestQvtParser extends TestCase {
final String topName = folder.getName() + MDAConstants.QVTO_FILE_EXTENSION_WITH_DOT;
getFile(folder, topName);
WorkspaceUnitResolver resolver = new WorkspaceUnitResolver(Collections.singletonList(getIFolder(folder)));
- QVTOCompiler compiler = CompilerUtils.createCompiler();
+ QVTOCompiler compiler = QVTOCompiler.createCompiler(resSet.getPackageRegistry());
QvtCompilerOptions options = new QvtCompilerOptions();
options.setGenerateCompletionData(false);
@@ -405,4 +415,5 @@ public class TestQvtParser extends TestCase {
private final TestData myData;
private TestProject myProject;
private CompiledUnit[] myCompiled;
+ private ResourceSet resSet;
}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/DebugExecutorTest.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/DebugExecutorTest.java
index 180d8c6b7..835472502 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/DebugExecutorTest.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/DebugExecutorTest.java
@@ -26,9 +26,6 @@ import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.common.util.WrappedException;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EPackage.Registry;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -215,41 +212,12 @@ public class DebugExecutorTest extends TestCase {
}
protected ResourceSet getMetamodelResolutionRS() {
- ResourceSet resSet = new ResourceSetImpl();
-
- if (myData.getEcoreMetamodels().isEmpty()) {
- return resSet;
- }
-
- EPackage.Registry packageRegistry = resSet.getPackageRegistry();
-
- for (URI ecoreFileURI : myData.getEcoreMetamodels()) {
- URI absoluteURI = ecoreFileURI;
- if(ecoreFileURI.isRelative()) {
- absoluteURI = getModelUri(ecoreFileURI.toString());
- }
-
- EPackage metamodelPackage = null;
- try {
- Resource ecoreResource = resSet.getResource(absoluteURI, true);
- if(!ecoreResource.getContents().isEmpty()) {
- EObject obj = ecoreResource.getContents().get(0);
- if(obj instanceof EPackage) {
- metamodelPackage = (EPackage) obj;
- }
- }
- } catch (WrappedException e) {
- TestCase.fail("Failed to load metamodel EPackage. " + e.getMessage()); //$NON-NLS-1$
+ return TestUtil.getMetamodelResolutionRS(new ResourceSetImpl(), myData.getEcoreMetamodels(), new TestUtil.UriProvider() {
+
+ public URI getModelUri(String model) {
+ return DebugExecutorTest.this.getModelUri(model);
}
-
- if(metamodelPackage == null) {
- TestCase.fail("No metamodel EPackage available in " + absoluteURI); //$NON-NLS-1$
- }
-
- packageRegistry.put(metamodelPackage.getNsURI(), metamodelPackage);
- }
-
- return resSet;
+ });
}
private void copyModelData() throws Exception {
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/TestQvtStandaloneExecutor.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/TestQvtStandaloneExecutor.java
index 3bfa5f81f..29c887711 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/TestQvtStandaloneExecutor.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/TestQvtStandaloneExecutor.java
@@ -88,7 +88,7 @@ public class TestQvtStandaloneExecutor extends TestQvtExecutor {
return URI.createFileURI(new File("").getAbsolutePath()).appendSegment(getTestDataFolder()).appendSegment(ModelTestData.MODEL_FOLDER).appendSegment(getName()).appendSegment(getName()).appendFileExtension(MDAConstants.QVTO_FILE_EXTENSION);
}
- URI getModelUri(String name) {
+ public URI getModelUri(String name) {
return URI.createFileURI(new File("").getAbsolutePath()).appendSegment(getTestDataFolder()).appendSegment(ModelTestData.MODEL_FOLDER).appendSegment(getName()).appendSegment(name);
}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/TransformationExecutorTest.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/TransformationExecutorTest.java
index 378362399..c6c576c0c 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/TransformationExecutorTest.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/callapi/TransformationExecutorTest.java
@@ -21,9 +21,6 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.common.util.WrappedException;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
@@ -45,6 +42,7 @@ import org.eclipse.m2m.qvt.oml.TransformationExecutor;
import org.eclipse.m2m.qvt.oml.util.Trace;
import org.eclipse.m2m.tests.qvt.oml.transform.FileToFileData;
import org.eclipse.m2m.tests.qvt.oml.transform.ModelTestData;
+import org.eclipse.m2m.tests.qvt.oml.util.TestUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -67,7 +65,7 @@ public abstract class TransformationExecutorTest extends TestCase {
ResourceSet resSet;
- static class UriCreator extends FileToFileData {
+ static class UriCreator extends FileToFileData implements TestUtil.UriProvider {
UriCreator(String name) {
super(name);
}
@@ -78,7 +76,7 @@ public abstract class TransformationExecutorTest extends TestCase {
+ MDAConstants.QVTO_FILE_EXTENSION_WITH_DOT, true);
}
- URI getModelUri(String name) {
+ public URI getModelUri(String name) {
return URI.createPlatformPluginURI(getBundle() + IPath.SEPARATOR + getTestDataFolder() + IPath.SEPARATOR
+ ModelTestData.MODEL_FOLDER + IPath.SEPARATOR + getName() + IPath.SEPARATOR + name, true);
}
@@ -206,41 +204,7 @@ public abstract class TransformationExecutorTest extends TestCase {
}
protected ResourceSet getMetamodelResolutionRS() {
- ResourceSet resSet = createResourceSet();
-
- if (getEcoreMetamodels().isEmpty()) {
- return resSet;
- }
-
- EPackage.Registry packageRegistry = resSet.getPackageRegistry();
-
- for (URI ecoreFileURI : getEcoreMetamodels()) {
- URI absoluteURI = ecoreFileURI;
- if(ecoreFileURI.isRelative()) {
- absoluteURI = uriCreator.getModelUri(ecoreFileURI.toString());
- }
-
- EPackage metamodelPackage = null;
- try {
- Resource ecoreResource = resSet.getResource(absoluteURI, true);
- if(!ecoreResource.getContents().isEmpty()) {
- EObject obj = ecoreResource.getContents().get(0);
- if(obj instanceof EPackage) {
- metamodelPackage = (EPackage) obj;
- }
- }
- } catch (WrappedException e) {
- TestCase.fail("Failed to load metamodel EPackage. " + e.getMessage()); //$NON-NLS-1$
- }
-
- if(metamodelPackage == null) {
- TestCase.fail("No metamodel EPackage available in " + absoluteURI); //$NON-NLS-1$
- }
-
- packageRegistry.put(metamodelPackage.getNsURI(), metamodelPackage);
- }
-
- return resSet;
+ return TestUtil.getMetamodelResolutionRS(createResourceSet(), getEcoreMetamodels(), uriCreator);
}
}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/util/TestUtil.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/util/TestUtil.java
index 37b6fa97e..cda97e1f8 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/util/TestUtil.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/util/TestUtil.java
@@ -42,7 +42,11 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.m2m.internal.qvt.oml.common.MdaException;
@@ -310,4 +314,48 @@ public class TestUtil extends Assert {
catch (ClassNotFoundException e) {
}
}
+
+
+ public interface UriProvider {
+
+ URI getModelUri(String model);
+
+ }
+
+ public static ResourceSet getMetamodelResolutionRS(ResourceSet resSet, List<URI> metamodels, UriProvider uriProv) {
+ if (metamodels.isEmpty()) {
+ return resSet;
+ }
+
+ EPackage.Registry packageRegistry = resSet.getPackageRegistry();
+
+ for (URI ecoreFileURI : metamodels) {
+ URI absoluteURI = ecoreFileURI;
+ if(ecoreFileURI.isRelative()) {
+ absoluteURI = uriProv.getModelUri(ecoreFileURI.toString());
+ }
+
+ EPackage metamodelPackage = null;
+ try {
+ Resource ecoreResource = resSet.getResource(absoluteURI, true);
+ if(!ecoreResource.getContents().isEmpty()) {
+ EObject obj = ecoreResource.getContents().get(0);
+ if(obj instanceof EPackage) {
+ metamodelPackage = (EPackage) obj;
+ }
+ }
+ } catch (WrappedException e) {
+ TestCase.fail("Failed to load metamodel EPackage. " + e.getMessage()); //$NON-NLS-1$
+ }
+
+ if(metamodelPackage == null) {
+ TestCase.fail("No metamodel EPackage available in " + absoluteURI); //$NON-NLS-1$
+ }
+
+ packageRegistry.put(metamodelPackage.getNsURI(), metamodelPackage);
+ }
+
+ return resSet;
+ }
+
}

Back to the top