added support for key override.metamodel.uri in build.properties
The new build.properties key override.metamodel.uri can be used to
specify a different metamodel than the one used for parser generation
for injection & extraction.
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java
index 6647afb..c3a66e3 100644
--- a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java
@@ -173,11 +173,18 @@
ecoreFile = project.getFile("Metamodel/" + name + ".ecore");
metamodelCache = new ModelCache() {
private long timestamp;
+ private String metamodelOverrideURI = properties.getProperty("override.metamodel.uri");
protected Object loadModel(ModelFactory factory) {
try {
- Object ret = factory.loadMetamodel(name, ecoreFile.getContents());
- this.timestamp = ecoreFile.getModificationStamp();
+ Object location;
+ if(metamodelOverrideURI != null) {
+ location = URI.createURI(metamodelOverrideURI);
+ } else {
+ location = ecoreFile.getContents();
+ this.timestamp = ecoreFile.getModificationStamp();
+ }
+ Object ret = factory.loadMetamodel(name, location);
return ret;
} catch (CoreException e) {
throw new RuntimeException(e);
@@ -185,10 +192,16 @@
}
protected boolean shouldReload() {
- return ecoreFile.getModificationStamp() != timestamp;
+ String newMetamodelOverrideURI = getProperty("override.metamodel.uri");
+ if(metamodelOverrideURI != newMetamodelOverrideURI) {
+ metamodelOverrideURI = newMetamodelOverrideURI;
+ return true;
+ } else {
+ return ecoreFile.getModificationStamp() != timestamp;
+ }
}
};
-
+
antlrFile = project.getFile("Syntax/" + name + "_ANTLR3.g");
jarFile = project.getFile("Syntax/" + name + "-parser.jar");