Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsboyko2014-11-20 10:09:30 +0000
committersboyko2014-11-20 10:09:30 +0000
commitde499dbfbd960a63f62c4938d9dc71172e075120 (patch)
treeddd2ed5e5207cb55db90d6772ff3145bd467f333 /plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler
parent261c5df3c86e33aa35c6d43f05f384c8c1dd3db3 (diff)
downloadorg.eclipse.qvto-de499dbfbd960a63f62c4938d9dc71172e075120.tar.gz
org.eclipse.qvto-de499dbfbd960a63f62c4938d9dc71172e075120.tar.xz
org.eclipse.qvto-de499dbfbd960a63f62c4938d9dc71172e075120.zip
[376644] - URI map resolution should fall back to EPackage registry
[441094] - MetamodelRegistry does not keep track of EPackageRegistryImpl delegate [326651] - Unable to update a metamodel in the MetamodelRegistry cherry-picked from cgerking/misc: I95268f0f9ef8d52c00bcc89bf244e7cfe9ecfd1c
Diffstat (limited to 'plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler')
-rw-r--r--plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler/CompilerUtils.java24
-rw-r--r--plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler/QVTOCompiler.java28
2 files changed, 16 insertions, 36 deletions
diff --git a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler/CompilerUtils.java b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler/CompilerUtils.java
index 494c58852..7d0569b4c 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler/CompilerUtils.java
+++ b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler/CompilerUtils.java
@@ -31,7 +31,6 @@ import org.eclipse.m2m.internal.qvt.oml.NLS;
import org.eclipse.m2m.internal.qvt.oml.QvtMessage;
import org.eclipse.m2m.internal.qvt.oml.common.io.CResourceRepositoryContext;
import org.eclipse.m2m.internal.qvt.oml.common.io.eclipse.WorkspaceMetamodelRegistryProvider;
-import org.eclipse.m2m.internal.qvt.oml.emf.util.mmregistry.EmfStandaloneMetamodelProvider;
import org.eclipse.m2m.internal.qvt.oml.emf.util.mmregistry.IMetamodelProvider;
import org.eclipse.m2m.internal.qvt.oml.emf.util.mmregistry.IMetamodelRegistryProvider;
import org.eclipse.m2m.internal.qvt.oml.emf.util.mmregistry.MetamodelRegistry;
@@ -106,7 +105,7 @@ public class CompilerUtils {
if(metamodelRegistry != null) {
packageRegistry = metamodelRegistry.toEPackageRegistry();
} else {
- packageRegistry = new EPackageRegistryImpl();
+ packageRegistry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
}
return packageRegistry;
@@ -132,7 +131,7 @@ public class CompilerUtils {
static class Eclipse {
static QVTOCompiler createCompiler() {
- return new QVTOCompiler(new WorkspaceMetamodelRegistryProvider(createResourceSet()));
+ return new QVTOCompiler(createMetamodelRegistryProvider(createResourceSet()));
}
static Monitor createMonitor(Monitor monitor, int ticks) {
@@ -151,23 +150,12 @@ public class CompilerUtils {
static WorkspaceMetamodelRegistryProvider createMetamodelRegistryProvider(final EPackage.Registry packageRegistry, ResourceSet metamodelResourceSet) {
return new WorkspaceMetamodelRegistryProvider(metamodelResourceSet) {
- IMetamodelProvider registry = new EmfStandaloneMetamodelProvider(packageRegistry);
+
@Override
- public MetamodelRegistry getRegistry(IRepositoryContext context) {
- MetamodelRegistry result = super.getRegistry(context);
- if(result == MetamodelRegistry.getInstance()) {
- // FIXME - get rid of this hack by providing
- // a protected method WorkspaceProvider::getDelegateRegistry();
- // which by default returns MetamodelRegistry.getInstance()
- result = new MetamodelRegistry(registry);
- } else if(result != null) {
- MetamodelRegistry customRegistry = new MetamodelRegistry(registry);
- customRegistry.merge(result);
- result = customRegistry;
- }
- return result;
+ protected IMetamodelProvider createDelegateMetamodelProvider() {
+ return MetamodelRegistry.getDefaultMetamodelProvider(packageRegistry);
}
};
- }
+ }
}
}
diff --git a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler/QVTOCompiler.java b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler/QVTOCompiler.java
index 99d5e5c77..8fde40c53 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler/QVTOCompiler.java
+++ b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/compiler/QVTOCompiler.java
@@ -37,7 +37,6 @@ import org.eclipse.emf.common.util.UniqueEList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EPackage.Registry;
-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.URIConverter;
@@ -63,7 +62,6 @@ import org.eclipse.m2m.internal.qvt.oml.cst.ImportCS;
import org.eclipse.m2m.internal.qvt.oml.cst.UnitCS;
import org.eclipse.m2m.internal.qvt.oml.cst.parser.AbstractQVTParser;
import org.eclipse.m2m.internal.qvt.oml.emf.util.EmfUtil;
-import org.eclipse.m2m.internal.qvt.oml.emf.util.mmregistry.EmfStandaloneMetamodelProvider;
import org.eclipse.m2m.internal.qvt.oml.emf.util.mmregistry.IMetamodelRegistryProvider;
import org.eclipse.m2m.internal.qvt.oml.emf.util.mmregistry.MetamodelRegistry;
import org.eclipse.m2m.internal.qvt.oml.expressions.ModelType;
@@ -121,6 +119,7 @@ public class QVTOCompiler {
public static QVTOCompiler createCompiler(EPackage.Registry registry) {
ResourceSetImpl rs = new ResourceSetImpl();
+
if(registry != null) {
rs.setPackageRegistry(registry);
@@ -139,11 +138,8 @@ public class QVTOCompiler {
rs.setURIResourceMap(uriResourceMap);
}
}
-
- final EPackageRegistryImpl packageRegistryImpl = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
- packageRegistryImpl.putAll(registry);
-
- IMetamodelRegistryProvider metamodelRegistryProvider = createMetamodelRegistryProvider(packageRegistryImpl, rs);
+
+ IMetamodelRegistryProvider metamodelRegistryProvider = createMetamodelRegistryProvider(registry, rs);
return new QVTOCompiler(metamodelRegistryProvider);
}
@@ -569,7 +565,7 @@ public class QVTOCompiler {
private CompiledUnit loadBlackboxUnit(UnitProxy unit) throws IOException {
ModelContents contents = (ModelContents) unit.getContents();
- List<EObject> topElements = contents.loadElements(CompilerUtils.getEPackageRegistry(unit.getURI(), fMetamodelRegistryProvider));
+ List<EObject> topElements = contents.loadElements(getEPackageRegistry(unit.getURI()));
List<QvtOperationalModuleEnv> modelEnvs = new ArrayList<QvtOperationalModuleEnv>(topElements.size());
for (EObject nextElement : topElements) {
@@ -746,15 +742,7 @@ public class QVTOCompiler {
}
private static IMetamodelRegistryProvider createMetamodelRegistryProvider(ResourceSet metamodelResourceSet) {
- if(EMFPlugin.IS_ECLIPSE_RUNNING && EMFPlugin.IS_RESOURCES_BUNDLE_AVAILABLE) {
- return Eclipse.createMetamodelRegistryProvider(metamodelResourceSet);
- }
-
- return new IMetamodelRegistryProvider() {
- public MetamodelRegistry getRegistry(IRepositoryContext context) {
- return new MetamodelRegistry(new EmfStandaloneMetamodelProvider());
- }
- };
+ return createMetamodelRegistryProvider(EPackage.Registry.INSTANCE, metamodelResourceSet);
}
private static IMetamodelRegistryProvider createMetamodelRegistryProvider(final EPackage.Registry packageRegistry, ResourceSet metamodelResourceSet) {
@@ -762,9 +750,13 @@ public class QVTOCompiler {
return Eclipse.createMetamodelRegistryProvider(packageRegistry, metamodelResourceSet);
}
+ return createStandaloneMetamodelRegistryProvider(packageRegistry);
+ }
+
+ private static IMetamodelRegistryProvider createStandaloneMetamodelRegistryProvider(final EPackage.Registry packageRegistry) {
return new IMetamodelRegistryProvider() {
public MetamodelRegistry getRegistry(IRepositoryContext context) {
- return new MetamodelRegistry(new EmfStandaloneMetamodelProvider(packageRegistry));
+ return new MetamodelRegistry(packageRegistry);
}
};
}

Back to the top