Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Belle2018-09-05 08:45:56 +0000
committerJan Belle2018-09-05 08:45:56 +0000
commite7ee5f01c807c86a6088ed321be578af10ce73bf (patch)
tree37113500de61f8ac72f87a5162db401ec4344d21
parent939c36bfa9fda11e14101a3552400f0137ced60c (diff)
downloadorg.eclipse.etrice-e7ee5f01c807c86a6088ed321be578af10ce73bf.tar.gz
org.eclipse.etrice-e7ee5f01c807c86a6088ed321be578af10ce73bf.tar.xz
org.eclipse.etrice-e7ee5f01c807c86a6088ed321be578af10ce73bf.zip
[generator.base] Separate emf setup from generator interface
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java21
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/IGenerator.java7
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/GeneratorResourceLoader.java18
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/IGeneratorEMFSetup.java25
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/setup/GeneratorBaseModule.java10
-rw-r--r--plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/Main.java6
-rw-r--r--plugins/org.eclipse.etrice.generator.cpp/src/org/eclipse/etrice/generator/cpp/Main.java6
-rw-r--r--plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/Main.java6
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/Main.java6
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGenerator.java27
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGeneratorBaseModule.java9
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/EMFSetup.java35
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/ModelLoader.java13
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)) {

Back to the top