Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2014-02-24 08:26:07 +0000
committerHenrik Rentz-Reichert2014-02-24 08:26:49 +0000
commit1f81f9e363e580b505f77ccfb92dd98b000e34b4 (patch)
treead1211e7d697af3bb6f18328d3bb9cd879612e59 /plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice
parent947660dfd751a29e72ace1652364b156a3a9b08e (diff)
downloadorg.eclipse.etrice-1f81f9e363e580b505f77ccfb92dd98b000e34b4.tar.gz
org.eclipse.etrice-1f81f9e363e580b505f77ccfb92dd98b000e34b4.tar.xz
org.eclipse.etrice-1f81f9e363e580b505f77ccfb92dd98b000e34b4.zip
Bug 428336: [core.room] import dependency loader incorrect for different path representations of the same model resource
https://bugs.eclipse.org/428336 Implemented an extensible model resolution machanism
Diffstat (limited to 'plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice')
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/Main.java145
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/setup/GeneratorModule.java4
2 files changed, 64 insertions, 85 deletions
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/Main.java b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/Main.java
index b6c5980a3..d577eb9f9 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/Main.java
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/Main.java
@@ -15,16 +15,12 @@ package org.eclipse.etrice.generator.java;
import java.util.Iterator;
import org.eclipse.emf.common.EMFPlugin;
-import org.eclipse.emf.ecore.EObject;
import org.eclipse.etrice.core.etmap.ETMapStandaloneSetup;
-import org.eclipse.etrice.core.etmap.eTMap.MappingModel;
import org.eclipse.etrice.core.etmap.util.ETMapUtil;
import org.eclipse.etrice.core.etphys.ETPhysStandaloneSetup;
-import org.eclipse.etrice.core.etphys.eTPhys.PhysicalModel;
import org.eclipse.etrice.core.genmodel.etricegen.Root;
import org.eclipse.etrice.generator.base.AbstractGenerator;
import org.eclipse.etrice.generator.base.IDataConfiguration;
-import org.eclipse.etrice.generator.base.IResourceURIAcceptor;
import org.eclipse.etrice.generator.java.gen.GlobalSettings;
import org.eclipse.etrice.generator.java.gen.Validator;
import org.eclipse.etrice.generator.java.setup.GeneratorModule;
@@ -131,88 +127,71 @@ public class Main extends AbstractGenerator {
setupMappingModel();
setupPhysicalModel();
- if (!loadModels(getSettings().getInputModelURIs())) {
- logger.logInfo("loading of models failed");
- logger.logError("-- terminating", null);
- return GENERATOR_ERROR;
- }
-
- if (!validateModels()) {
- logger.logInfo("validation failed");
- logger.logError("-- terminating", null);
- return GENERATOR_ERROR;
- }
-
- if (!dataConfig.setResources(getResourceSet(), logger)) {
- logger.logInfo("configuration errors");
- logger.logError("-- terminating", null);
- return GENERATOR_ERROR;
- }
-
- Root genModel = createGeneratorModel(getSettings().isGenerateAsLibrary(), getSettings().getGeneratorModelPath());
- if (diagnostician.isFailed() || genModel==null) {
- logger.logInfo("errors during build of generator model");
- logger.logError("-- terminating", null);
- return GENERATOR_ERROR;
- }
-
- if (!validator.validate(genModel)) {
- logger.logInfo("validation failed during build of generator model");
- logger.logError("-- terminating", null);
- return GENERATOR_ERROR;
- }
-
- ETMapUtil.processModels(genModel, getResourceSet(), diagnostician);
- if (getSettings().isDebugMode()) {
- logger.logInfo("-- begin dump of mappings");
- logger.logInfo(ETMapUtil.dumpMappings());
- logger.logInfo("-- end dump of mappings");
- }
- if (diagnostician.isFailed() || genModel==null) {
- logger.logInfo("errors in mapping");
- logger.logError("-- terminating", null);
- return GENERATOR_ERROR;
- }
-
- logger.logInfo("-- starting code generation");
- fileAccess.setOutputPath("src-gen/");
- mainGenerator.doGenerate(genModel.eResource(), fileAccess);
-
- if (getSettings().isGenerateDocumentation()) {
- mainDocGenerator.doGenerate(genModel.eResource(), fileAccess);
- }
-
- if (diagnostician.isFailed()) {
- logger.logInfo("errors during code generation");
- logger.logError("-- terminating", null);
- return GENERATOR_ERROR;
- }
- logger.logInfo("-- finished code generation");
-
- return GENERATOR_OK;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.etrice.generator.base.AbstractGenerator#addReferencedModels(org.eclipse.emf.ecore.resource.Resource, java.util.List)
- */
- @Override
- protected void addReferencedModels(EObject root, IResourceURIAcceptor acceptor) {
- super.addReferencedModels(root, acceptor);
-
- if (root instanceof PhysicalModel) {
- for (org.eclipse.etrice.core.etphys.eTPhys.Import imp : ((PhysicalModel)root).getImports()) {
- String importURI = uriResolver.resolve(imp);
- acceptor.addResourceURI(importURI);
+ try {
+ activateModelLocator();
+
+ if (!loadModels(getSettings().getInputModelURIs())) {
+ logger.logInfo("loading of models failed");
+ logger.logError("-- terminating", null);
+ return GENERATOR_ERROR;
}
- }
- else if (root instanceof MappingModel) {
- for (org.eclipse.etrice.core.etmap.eTMap.Import imp : ((MappingModel)root).getImports()) {
- String importURI = uriResolver.resolve(imp);
- acceptor.addResourceURI(importURI);
+
+ if (!validateModels()) {
+ logger.logInfo("validation failed");
+ logger.logError("-- terminating", null);
+ return GENERATOR_ERROR;
+ }
+
+ if (!dataConfig.setResources(getResourceSet(), logger)) {
+ logger.logInfo("configuration errors");
+ logger.logError("-- terminating", null);
+ return GENERATOR_ERROR;
}
+
+ Root genModel = createGeneratorModel(getSettings().isGenerateAsLibrary(), getSettings().getGeneratorModelPath());
+ if (diagnostician.isFailed() || genModel==null) {
+ logger.logInfo("errors during build of generator model");
+ logger.logError("-- terminating", null);
+ return GENERATOR_ERROR;
+ }
+
+ if (!validator.validate(genModel)) {
+ logger.logInfo("validation failed during build of generator model");
+ logger.logError("-- terminating", null);
+ return GENERATOR_ERROR;
+ }
+
+ ETMapUtil.processModels(genModel, getResourceSet(), diagnostician);
+ if (getSettings().isDebugMode()) {
+ logger.logInfo("-- begin dump of mappings");
+ logger.logInfo(ETMapUtil.dumpMappings());
+ logger.logInfo("-- end dump of mappings");
+ }
+ if (diagnostician.isFailed() || genModel==null) {
+ logger.logInfo("errors in mapping");
+ logger.logError("-- terminating", null);
+ return GENERATOR_ERROR;
+ }
+
+ logger.logInfo("-- starting code generation");
+ fileAccess.setOutputPath("src-gen/");
+ mainGenerator.doGenerate(genModel.eResource(), fileAccess);
+
+ if (getSettings().isGenerateDocumentation()) {
+ mainDocGenerator.doGenerate(genModel.eResource(), fileAccess);
+ }
+
+ if (diagnostician.isFailed()) {
+ logger.logInfo("errors during code generation");
+ logger.logError("-- terminating", null);
+ return GENERATOR_ERROR;
+ }
+ logger.logInfo("-- finished code generation");
}
- else {
- dataConfig.addReferencedModels(acceptor, root);
+ finally {
+ deactivateModelLocator();
}
+
+ return GENERATOR_OK;
}
}
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/setup/GeneratorModule.java b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/setup/GeneratorModule.java
index ecc113388..42547d9ae 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/setup/GeneratorModule.java
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/setup/GeneratorModule.java
@@ -12,7 +12,7 @@
package org.eclipse.etrice.generator.java.setup;
-import org.eclipse.etrice.core.scoping.NormalizingUriResolver;
+import org.eclipse.etrice.core.scoping.ModelLocatorUriResolver;
import org.eclipse.etrice.generator.base.AbstractGenerator;
import org.eclipse.etrice.generator.base.AbstractGeneratorBaseModule;
import org.eclipse.etrice.generator.base.GlobalGeneratorSettings;
@@ -42,7 +42,7 @@ public class GeneratorModule extends AbstractGeneratorBaseModule {
binder.bind(AbstractGenerator.class).to(Main.class);
binder.bind(IGenerator.class).to(MainGen.class);
- binder.bind(ImportUriResolver.class).to(NormalizingUriResolver.class);
+ binder.bind(ImportUriResolver.class).to(ModelLocatorUriResolver.class);
binder.bind(GlobalGeneratorSettings.class).to(GlobalSettings.class);
}

Back to the top