Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Belle2018-11-12 21:45:40 +0000
committerJan Belle2018-11-12 22:51:35 +0000
commite87eff0947948ebfe0dce7fd7982422859342b9a (patch)
tree9fd4bb23eb0eb4c9941182efd70c5997357eb15b /plugins
parenta89500720d2619e13bbb8a6d1d8d4bd8c731d600 (diff)
downloadorg.eclipse.etrice-e87eff0947948ebfe0dce7fd7982422859342b9a.tar.gz
org.eclipse.etrice-e87eff0947948ebfe0dce7fd7982422859342b9a.tar.xz
org.eclipse.etrice-e87eff0947948ebfe0dce7fd7982422859342b9a.zip
[generator] Fix generator singleton issue
Wrong IDetailCodeTranslator is injected if multiple generator instances are created with the same injector. Change-Id: I313885bf4e52e31359efe339678e5dea39f2b0e4
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java8
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGenerator.java19
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/ModelLoader.java1
3 files changed, 6 insertions, 22 deletions
diff --git a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java
index 21075928c..4d17fe86e 100644
--- a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java
+++ b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java
@@ -77,7 +77,7 @@ public class GeneratorApplication {
private IHelpFormatter helpFormatter;
private Provider<Logger> loggerProvider;
private Provider<GeneratorFileIO> fileIOProvider;
- private Provider<IGenerator> generatorProvider;
+ private IGenerator generator;
private IGeneratorResourceLoader resourceLoader;
private IGeneratorResourceValidator resourceValidator;
@@ -85,7 +85,7 @@ public class GeneratorApplication {
public GeneratorApplication(@GeneratorName String name,
GeneratorOptions optionsModule, ICommandLineParser commandLineParser,
IHelpFormatter helpFormatter, Provider<Logger> loggerProvider,
- Provider<GeneratorFileIO> fileIOProvider, Provider<IGenerator> generatorProvider,
+ Provider<GeneratorFileIO> fileIOProvider, IGenerator generator,
IGeneratorResourceLoader resourceLoader, IGeneratorResourceValidator resourceValidator) {
this.name = name;
this.options = new Options(new GeneratorApplicationOptions(), optionsModule);
@@ -93,7 +93,7 @@ public class GeneratorApplication {
this.helpFormatter = helpFormatter;
this.loggerProvider = loggerProvider;
this.fileIOProvider = fileIOProvider;
- this.generatorProvider = generatorProvider;
+ this.generator = generator;
this.resourceLoader = resourceLoader;
this.resourceValidator = resourceValidator;
}
@@ -215,8 +215,6 @@ public class GeneratorApplication {
}
private void generate(List<Resource> resources, Arguments arguments, GeneratorFileIO fileIO, Logger logger) {
- // Create new generator to avoid problems with static states in eTrice AbstractGenerator
- IGenerator generator = generatorProvider.get();
generator.generate(resources, arguments, fileIO, logger);
}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGenerator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGenerator.java
index ba2fe6774..486c0f8c6 100644
--- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGenerator.java
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGenerator.java
@@ -78,19 +78,9 @@ public abstract class AbstractGenerator implements IGenerator, IDetailCodeTransl
public static final int GENERATOR_ERROR = 1;
protected static ILineOutput output = new LineOutput();
- private static AbstractGenerator instance = null;
private static Arguments settings = null;
/**
- * It is assumed (though not enforced) that the generator is a singleton.
- *
- * @return the singleton {@link AbstractGenerator}
- */
- public static AbstractGenerator getInstance() {
- return instance;
- }
-
- /**
* The generator settings can also be statically accessed using {@link #getInstance()} followed
* by a call to this method.
*
@@ -147,13 +137,6 @@ public abstract class AbstractGenerator implements IGenerator, IDetailCodeTransl
private HashMap<DetailCode, String> detailcode2string = new HashMap<DetailCode, String>();
private ResourceSet resourceSet = null;
- /**
- * The protected constructor is setting the {@link #instance} static member
- */
- protected AbstractGenerator() {
- instance = this;
- }
-
@Override
public void generate(List<Resource> resources, Arguments arguments, IGeneratorFileIO fileIO, ILogger logger) {
AbstractGenerator.settings = arguments;
@@ -173,6 +156,8 @@ public abstract class AbstractGenerator implements IGenerator, IDetailCodeTransl
logger.logInfo("-- terminating");
throw new GeneratorException("generator error");
}
+
+ detailcode2string.clear();
}
/**
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/ModelLoader.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/ModelLoader.java
index 3a1c657a7..b8f5e57ee 100644
--- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/ModelLoader.java
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/ModelLoader.java
@@ -105,6 +105,7 @@ public class ModelLoader implements IGeneratorResourceLoader {
((XtextResourceSet) resourceSet).setClasspathURIContext(getClass().getClassLoader());
}
modelURIs.clear();
+ mainModelURIs.clear();
loadedModelURIs.clear();
for (String uri : uriList) {

Back to the top