diff options
author | Jan Belle | 2018-11-12 21:45:40 +0000 |
---|---|---|
committer | Jan Belle | 2018-11-12 22:51:35 +0000 |
commit | e87eff0947948ebfe0dce7fd7982422859342b9a (patch) | |
tree | 9fd4bb23eb0eb4c9941182efd70c5997357eb15b /plugins | |
parent | a89500720d2619e13bbb8a6d1d8d4bd8c731d600 (diff) | |
download | org.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')
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) { |