diff options
author | Jan Belle | 2018-09-05 08:45:56 +0000 |
---|---|---|
committer | Jan Belle | 2018-09-05 08:45:56 +0000 |
commit | e7ee5f01c807c86a6088ed321be578af10ce73bf (patch) | |
tree | 37113500de61f8ac72f87a5162db401ec4344d21 | |
parent | 939c36bfa9fda11e14101a3552400f0137ced60c (diff) | |
download | org.eclipse.etrice-e7ee5f01c807c86a6088ed321be578af10ce73bf.tar.gz org.eclipse.etrice-e7ee5f01c807c86a6088ed321be578af10ce73bf.tar.xz org.eclipse.etrice-e7ee5f01c807c86a6088ed321be578af10ce73bf.zip |
[generator.base] Separate emf setup from generator interface
Change-Id: Ib3d142d93889e57c602423e0d53284cd414e216f
13 files changed, 116 insertions, 73 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 e3795bd8a..2f9dbbbde 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 @@ -19,7 +19,6 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.util.List; -import org.eclipse.emf.common.EMFPlugin; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.etrice.generator.base.args.Arguments; import org.eclipse.etrice.generator.base.args.Options; @@ -71,7 +70,6 @@ public class GeneratorApplication { } private final Options options; - private boolean initializedEMF = EMFPlugin.IS_ECLIPSE_RUNNING; private ICommandLineParser commandLineParser; private IHelpFormatter helpFormatter; private Provider<Logger> loggerProvider; @@ -86,7 +84,6 @@ public class GeneratorApplication { Provider<IncrementalGeneratorFileIO> fileIOProvider, Provider<IGenerator> generatorProvider, IGeneratorResourceLoader resourceLoader, IGeneratorResourceValidator resourceValidator) { this.options = new Options(optionsModule); - this.initializedEMF = EMFPlugin.IS_ECLIPSE_RUNNING; this.commandLineParser = commandLineParser; this.helpFormatter = helpFormatter; this.loggerProvider = loggerProvider; @@ -164,16 +161,11 @@ public class GeneratorApplication { try { logger.logDebug(arguments.toString()); - // Create new generator to avoid problems with static states in eTrice AbstractGenerator - IGenerator generator = generatorProvider.get(); - - doEMFRegistration(generator); - List<Resource> resources = load(arguments.getFiles(), arguments, logger); validate(resources, arguments, logger); - generate(generator, resources, arguments, fileIO, logger); + generate(resources, arguments, fileIO, logger); } catch (Exception e) { logException(e, logger); @@ -202,13 +194,6 @@ public class GeneratorApplication { return fileIO; } - private void doEMFRegistration(IGenerator generator) { - if(!initializedEMF) { - generator.doEMFRegistration(); - initializedEMF = true; - } - } - private List<Resource> load(List<String> files, Arguments arguments, ILogger logger) { return resourceLoader.load(arguments, logger); } @@ -217,7 +202,9 @@ public class GeneratorApplication { resourceValidator.validate(models, arguments, logger); } - private void generate(IGenerator generator, List<Resource> resources, Arguments arguments, IGeneratorFileIO fileIO, ILogger logger) { + private void generate(List<Resource> resources, Arguments arguments, IGeneratorFileIO fileIO, ILogger 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.base/src/org/eclipse/etrice/generator/base/IGenerator.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/IGenerator.java index 32c0719b9..39c2c958a 100644 --- a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/IGenerator.java +++ b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/IGenerator.java @@ -26,12 +26,7 @@ import org.eclipse.etrice.generator.base.logging.ILogger; * A generator that produces code from an emf resource. */ public interface IGenerator { - - /** - * Registers the required EMF packages of the generator. - */ - void doEMFRegistration(); - + /** * Generates code for the passed resources. * diff --git a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/GeneratorResourceLoader.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/GeneratorResourceLoader.java index b0bd76461..753115d22 100644 --- a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/GeneratorResourceLoader.java +++ b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/GeneratorResourceLoader.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import org.eclipse.emf.common.EMFPlugin; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.AdapterImpl; @@ -41,14 +42,22 @@ import com.google.inject.Provider; public class GeneratorResourceLoader implements IGeneratorResourceLoader { private Provider<ResourceSet> resourceSetProvider; + private IGeneratorEMFSetup emfSetup; + + private boolean initializedEMF; @Inject - public GeneratorResourceLoader(Provider<ResourceSet> resourceSetProvider) { + public GeneratorResourceLoader(Provider<ResourceSet> resourceSetProvider, IGeneratorEMFSetup emfSetup) { this.resourceSetProvider = resourceSetProvider; + this.emfSetup = emfSetup; + + initializedEMF = EMFPlugin.IS_ECLIPSE_RUNNING; } @Override public List<Resource> load(Arguments arguments, ILogger logger) throws GeneratorException { + doEMFRegistration(); + List<Resource> models = new ArrayList<>(arguments.getFiles().size()); ResourceSet resourceSet = resourceSetProvider.get(); Adapter resourceAddedAdapter = new ResourceAddedAdapter(logger); @@ -64,6 +73,13 @@ public class GeneratorResourceLoader implements IGeneratorResourceLoader { return models; } + private void doEMFRegistration() { + if(!initializedEMF) { + emfSetup.doEMFRegistration(); + initializedEMF = true; + } + } + private Resource loadResource(String file, ResourceSet rs, ILogger logger) { try { URI uri = createURI(file); diff --git a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/IGeneratorEMFSetup.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/IGeneratorEMFSetup.java new file mode 100644 index 000000000..380ba8a42 --- /dev/null +++ b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/IGeneratorEMFSetup.java @@ -0,0 +1,25 @@ +/******************************************************************************* +* Copyright (c) 2018 protos software gmbh (http://www.protos.de). +* All rights reserved. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* CONTRIBUTORS: +* Jan Belle (initial contribution) +* + *******************************************************************************/ + +package org.eclipse.etrice.generator.base.io; + +public interface IGeneratorEMFSetup { + + /** + * Registers the required EMF packages of the generator. + */ + void doEMFRegistration(); + +} diff --git a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/setup/GeneratorBaseModule.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/setup/GeneratorBaseModule.java index 96270f23e..7fae814dd 100644 --- a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/setup/GeneratorBaseModule.java +++ b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/setup/GeneratorBaseModule.java @@ -16,7 +16,6 @@ package org.eclipse.etrice.generator.base.setup; import org.eclipse.emf.ecore.resource.ResourceSet; -import org.eclipse.etrice.generator.base.IGenerator; import org.eclipse.xtext.parser.IEncodingProvider; import org.eclipse.xtext.resource.XtextResourceSet; @@ -32,15 +31,6 @@ public abstract class GeneratorBaseModule implements Module { public void configure(Binder binder) { binder.bind(ResourceSet.class).to(XtextResourceSet.class); binder.bind(IEncodingProvider.class).to(IEncodingProvider.Runtime.class); - - binder.bind(IGenerator.class).to(bindIGenerator()); } - - /** - * Binds the {@link IGenerator}. - * - * @return the class of the generator implementation - */ - public abstract Class<? extends IGenerator> bindIGenerator(); } diff --git a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/Main.java b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/Main.java index a6a4b8f2c..56e704dea 100644 --- a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/Main.java +++ b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/Main.java @@ -22,6 +22,8 @@ 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.args.Arguments; +import org.eclipse.etrice.generator.base.io.IGeneratorFileIO; +import org.eclipse.etrice.generator.base.logging.ILogger; import org.eclipse.etrice.generator.base.logging.Loglevel; import org.eclipse.etrice.generator.c.gen.MainGen; import org.eclipse.etrice.generator.c.gen.Validator; @@ -102,14 +104,14 @@ public class Main extends AbstractGenerator { return genModelResult; } - protected int runGenerator(List<Resource> resources, Arguments arguments) { + protected int runGenerator(List<Resource> resources, Arguments arguments, IGeneratorFileIO fileIO, ILogger logger) { if (!dataConfig.setResources(getResourceSet(), logger)) { logger.logError("configuration errors"); return GENERATOR_ERROR; } - Root genModel = createGeneratorModel(resources, arguments); + Root genModel = createGeneratorModel(resources, arguments, logger); if (diagnostician.isFailed() || genModel==null) { logger.logError("errors during build of generator model"); return GENERATOR_ERROR; diff --git a/plugins/org.eclipse.etrice.generator.cpp/src/org/eclipse/etrice/generator/cpp/Main.java b/plugins/org.eclipse.etrice.generator.cpp/src/org/eclipse/etrice/generator/cpp/Main.java index 1a1fa6037..97a442ffd 100644 --- a/plugins/org.eclipse.etrice.generator.cpp/src/org/eclipse/etrice/generator/cpp/Main.java +++ b/plugins/org.eclipse.etrice.generator.cpp/src/org/eclipse/etrice/generator/cpp/Main.java @@ -22,6 +22,8 @@ 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.args.Arguments; +import org.eclipse.etrice.generator.base.io.IGeneratorFileIO; +import org.eclipse.etrice.generator.base.logging.ILogger; import org.eclipse.etrice.generator.base.logging.Loglevel; import org.eclipse.etrice.generator.cpp.gen.MainGen; import org.eclipse.etrice.generator.cpp.gen.Validator; @@ -53,14 +55,14 @@ public class Main extends AbstractGenerator { @Inject protected IDataConfiguration dataConfig; - protected int runGenerator(List<Resource> resources, Arguments arguments) { + protected int runGenerator(List<Resource> resources, Arguments arguments, IGeneratorFileIO fileIO, ILogger logger) { if (!dataConfig.setResources(getResourceSet(), logger)) { logger.logError("configuration errors"); return GENERATOR_ERROR; } - Root genModel = createGeneratorModel(resources, arguments); + Root genModel = createGeneratorModel(resources, arguments, logger); if (diagnostician.isFailed() || genModel==null) { logger.logError("errors during build of generator model"); return GENERATOR_ERROR; diff --git a/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/Main.java b/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/Main.java index 85ee29e3c..aa25169d7 100644 --- a/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/Main.java +++ b/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/Main.java @@ -20,6 +20,8 @@ import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.etrice.core.genmodel.etricegen.Root; import org.eclipse.etrice.generator.base.AbstractGenerator; import org.eclipse.etrice.generator.base.args.Arguments; +import org.eclipse.etrice.generator.base.io.IGeneratorFileIO; +import org.eclipse.etrice.generator.base.logging.ILogger; import org.eclipse.etrice.generator.doc.gen.InstanceDiagramGen; import org.eclipse.etrice.generator.doc.gen.MainGen; import org.eclipse.etrice.generator.doc.setup.GeneratorModule; @@ -44,9 +46,9 @@ public class Main extends AbstractGenerator { @Inject protected InstanceDiagramGen instanceDiagramGenerator; - protected int runGenerator(List<Resource> resources, Arguments arguments) { + protected int runGenerator(List<Resource> resources, Arguments arguments, IGeneratorFileIO fileIO, ILogger logger) { - Root genModel = createGeneratorModel(resources, arguments); + Root genModel = createGeneratorModel(resources, arguments, logger); if (diagnostician.isFailed() || genModel==null) { logger.logError("errors during build of generator model"); return GENERATOR_ERROR; 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 07e4577b3..a7ed4a64d 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 @@ -22,6 +22,8 @@ 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.args.Arguments; +import org.eclipse.etrice.generator.base.io.IGeneratorFileIO; +import org.eclipse.etrice.generator.base.logging.ILogger; import org.eclipse.etrice.generator.base.logging.Loglevel; import org.eclipse.etrice.generator.java.gen.MainGen; import org.eclipse.etrice.generator.java.gen.Validator; @@ -68,14 +70,14 @@ public class Main extends AbstractGenerator { /* (non-Javadoc) * @see org.eclipse.etrice.generator.base.AbstractGenerator#runGenerator() */ - protected int runGenerator(List<Resource> resources, Arguments arguments) { + protected int runGenerator(List<Resource> resources, Arguments arguments, IGeneratorFileIO fileIO, ILogger logger) { if (!dataConfig.setResources(getResourceSet(), logger)) { logger.logError("configuration errors"); return GENERATOR_ERROR; } - Root genModel = createGeneratorModel(resources, arguments); + Root genModel = createGeneratorModel(resources, arguments, logger); if (diagnostician.isFailed() || genModel==null) { logger.logError("errors during build of generator model"); return GENERATOR_ERROR; 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 75530d15f..78e752205 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 @@ -27,12 +27,7 @@ import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; -import org.eclipse.etrice.core.ConfigStandaloneSetup; -import org.eclipse.etrice.core.RoomStandaloneSetup; -import org.eclipse.etrice.core.etmap.ETMapStandaloneSetup; -import org.eclipse.etrice.core.etphys.ETPhysStandaloneSetup; import org.eclipse.etrice.core.fsm.fSM.DetailCode; -import org.eclipse.etrice.core.genmodel.SetupGenmodel; import org.eclipse.etrice.core.genmodel.builder.GeneratorModelBuilder; import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass; import org.eclipse.etrice.core.genmodel.etricegen.Root; @@ -49,6 +44,7 @@ import org.eclipse.etrice.generator.base.logging.ILogger; import org.eclipse.etrice.generator.fsm.generic.IDetailCodeTranslator; import org.eclipse.etrice.generator.generic.RoomExtensions; import org.eclipse.etrice.generator.generic.TestInstanceCreator; + import com.google.inject.Inject; import com.google.inject.Module; @@ -134,12 +130,6 @@ public abstract class AbstractGenerator implements IGenerator, IDetailCodeTransl } /** - * The injected logger - */ - @Inject - protected ILogger logger; - - /** * The injected diagnostician */ @Inject @@ -162,15 +152,6 @@ public abstract class AbstractGenerator implements IGenerator, IDetailCodeTransl } @Override - public void doEMFRegistration() { - RoomStandaloneSetup.doSetup(); - SetupGenmodel.doSetup(); - ConfigStandaloneSetup.doSetup(); - ETMapStandaloneSetup.doSetup(); - ETPhysStandaloneSetup.doSetup(); - } - - @Override public void generate(List<Resource> resources, Arguments arguments, IGeneratorFileIO fileIO, ILogger logger) { AbstractGenerator.settings = arguments; RoomExtensions.setGenDir(arguments.get(AbstractGeneratorOptions.GEN_DIR)); @@ -184,7 +165,7 @@ public abstract class AbstractGenerator implements IGenerator, IDetailCodeTransl } resourceSet = resources.get(0).getResourceSet(); - int ret = runGenerator(resources, arguments); + int ret = runGenerator(resources, arguments, fileIO, logger); if(ret == GENERATOR_OK) { logger.logInfo("-- finished"); } @@ -200,7 +181,7 @@ public abstract class AbstractGenerator implements IGenerator, IDetailCodeTransl * @param arguments the generator arguments * @return GENERATOR_OK or GENERATOR_ERROR */ - protected abstract int runGenerator(List<Resource> resources, Arguments arguments); + protected abstract int runGenerator(List<Resource> resources, Arguments arguments, IGeneratorFileIO fileIO, ILogger logger); /** * This resource set combines all resources processed by the generator @@ -215,7 +196,7 @@ public abstract class AbstractGenerator implements IGenerator, IDetailCodeTransl * @param arguments the generator arguments * @return the {@link Root} object of the generator model (is added to a new Resource also) */ - protected Root createGeneratorModel(List<Resource> resources, Arguments arguments) { + protected Root createGeneratorModel(List<Resource> resources, Arguments arguments, ILogger logger) { boolean doTranslate = !arguments.get(AbstractGeneratorOptions.NOTRANSLATE); boolean asLibrary = arguments.get(AbstractGeneratorOptions.LIB); String genModelPath = arguments.get(AbstractGeneratorOptions.SAVE_GEN_MODEL); diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGeneratorBaseModule.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGeneratorBaseModule.java index 124a93edc..566c34d42 100644 --- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGeneratorBaseModule.java +++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGeneratorBaseModule.java @@ -17,6 +17,7 @@ package org.eclipse.etrice.generator.base; import org.eclipse.emf.ecore.EValidator; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.etrice.core.genmodel.fsm.IDiagnostician; +import org.eclipse.etrice.generator.base.io.IGeneratorEMFSetup; import org.eclipse.etrice.generator.base.io.IGeneratorResourceLoader; import org.eclipse.etrice.generator.base.io.IncrementalGeneratorFileIO; import org.eclipse.etrice.generator.base.logging.Logger; @@ -67,8 +68,9 @@ public abstract class AbstractGeneratorBaseModule extends GeneratorBaseModule { binder.bind(Logger.class).in(Singleton.class); binder.bind(IncrementalGeneratorFileIO.class).in(Singleton.class); + binder.bind(IGenerator.class).to(AbstractGenerator.class); binder.bind(GeneratorBaseOptions.class).to(AbstractGeneratorOptions.class); - + binder.bind(IGeneratorEMFSetup.class).to(EMFSetup.class); binder.bind(IGeneratorResourceLoader.class).to(ModelLoader.class); binder.bind(IGeneratorResourceValidator.class).to(ModelValidator.class); @@ -96,11 +98,6 @@ public abstract class AbstractGeneratorBaseModule extends GeneratorBaseModule { binder.bind(EValidator.Registry.class).toInstance(EValidator.Registry.INSTANCE); binder.bind(org.eclipse.emf.ecore.util.Diagnostician.class).to(GenerationEMFDiagnostician.class).asEagerSingleton(); } - - @Override - public Class<? extends IGenerator> bindIGenerator() { - return AbstractGenerator.class; - } /** * Abstract method that retrieves a class to which {@link AbstractGenerator} is bound diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/EMFSetup.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/EMFSetup.java new file mode 100644 index 000000000..476b66a94 --- /dev/null +++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/EMFSetup.java @@ -0,0 +1,35 @@ +/******************************************************************************* +* Copyright (c) 05.09.2018 protos software gmbh (http://www.protos.de). +* All rights reserved. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* CONTRIBUTORS: +* Jan Belle (initial contribution) +* + *******************************************************************************/ +package org.eclipse.etrice.generator.base; + +import org.eclipse.etrice.core.ConfigStandaloneSetup; +import org.eclipse.etrice.core.RoomStandaloneSetup; +import org.eclipse.etrice.core.etmap.ETMapStandaloneSetup; +import org.eclipse.etrice.core.etphys.ETPhysStandaloneSetup; +import org.eclipse.etrice.core.genmodel.SetupGenmodel; +import org.eclipse.etrice.generator.base.io.IGeneratorEMFSetup; + +public class EMFSetup implements IGeneratorEMFSetup { + + @Override + public void doEMFRegistration() { + RoomStandaloneSetup.doSetup(); + SetupGenmodel.doSetup(); + ConfigStandaloneSetup.doSetup(); + ETMapStandaloneSetup.doSetup(); + ETPhysStandaloneSetup.doSetup(); + } + +} 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 97caa4fd7..1b074a2c3 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 @@ -22,12 +22,14 @@ import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; +import org.eclipse.emf.common.EMFPlugin; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.etrice.core.common.scoping.ModelLocatorUriResolver; import org.eclipse.etrice.generator.base.args.Arguments; +import org.eclipse.etrice.generator.base.io.IGeneratorEMFSetup; import org.eclipse.etrice.generator.base.io.IGeneratorResourceLoader; import org.eclipse.etrice.generator.base.logging.ILogger; import org.eclipse.etrice.generator.base.logging.NullLogger; @@ -44,8 +46,6 @@ import com.google.inject.Provider; * */ public class ModelLoader implements IGeneratorResourceLoader { - - protected ILogger logger; /** * The injected resource set provider @@ -59,6 +59,11 @@ public class ModelLoader implements IGeneratorResourceLoader { @Inject protected ModelLocatorUriResolver uriResolver; + @Inject + private IGeneratorEMFSetup emfSetup; + + protected ILogger logger; + private boolean initializedEMF = EMFPlugin.IS_ECLIPSE_RUNNING; private ResourceSet resourceSet; private HashSet<URI> modelURIs = new HashSet<URI>(); private HashSet<URI> mainModelURIs = new HashSet<URI>(); @@ -66,6 +71,10 @@ public class ModelLoader implements IGeneratorResourceLoader { @Override public List<Resource> load(Arguments arguments, ILogger logger) { + if(!initializedEMF) { + emfSetup.doEMFRegistration(); + } + logger.logInfo("-- reading models"); if(loadModels(arguments.getFiles(), logger)) { |