Explorar el Código

#899 removed outlet parameters from IExecutionFlowGenerator interface,
moved them to api package

Andreas Muelder hace 9 años
padre
commit
f732547e71
Se han modificado 14 ficheros con 98 adiciones y 76 borrados
  1. 8 7
      plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/CGenerator.xtend
  2. 8 5
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/IExecutionFlowGenerator.java
  3. 12 2
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/ISGraphGenerator.java
  4. 6 1
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/filesystem/ISCTFileSystemAccess.java
  5. 1 0
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractSExecModelGenerator.java
  6. 9 6
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractSGraphModelGenerator.java
  7. 7 6
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/CppGenerator.xtend
  8. 1 1
      plugins/org.yakindu.sct.generator.csharp/src/org/yakindu/sct/generator/csharp/CSharpGenerator.xtend
  9. 4 5
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/IStatemachine.xtend
  10. 6 6
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/ITimer.xtend
  11. 7 7
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/ITimerCallback.xtend
  12. 4 4
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/JavaGenerator.xtend
  13. 22 23
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/StatemachineInterface.xtend
  14. 3 3
      plugins/org.yakindu.sct.generator.runner/src/org/yakindu/sct/generator/runner/GenericJavaBasedGenerator.java

+ 8 - 7
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/CGenerator.xtend

@@ -13,11 +13,12 @@ package org.yakindu.sct.generator.c
 import com.google.inject.Inject
 import com.google.inject.name.Named
 import org.eclipse.xtext.generator.IFileSystemAccess
-import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator
-import org.yakindu.sct.model.sexec.ExecutionFlow
-import org.yakindu.sct.model.sgen.GeneratorEntry
 import org.yakindu.sct.generator.c.GenArtifactConfigurations.GenArtifactConfiguration
+import org.yakindu.sct.generator.core.IExecutionFlowGenerator
 import org.yakindu.sct.generator.core.library.ICoreLibraryHelper
+import org.yakindu.sct.model.sexec.ExecutionFlow
+import org.yakindu.sct.model.sgen.GeneratorEntry
+import static org.yakindu.sct.generator.core.filesystem.ISCTFileSystemAccess.*;
 
 /**
  * This is the C code generators main class. 
@@ -68,22 +69,22 @@ class CGenerator implements IExecutionFlowGenerator {
 	
 	def protected getHeaderOutput(GeneratorEntry entry) {
 		if (entry.apiTargetFolderValue != null) {
-			IExecutionFlowGenerator.API_TARGET_FOLDER_OUTPUT
+			API_TARGET_FOLDER_OUTPUT
 		} else {
-			IExecutionFlowGenerator.TARGET_FOLDER_OUTPUT
+			TARGET_FOLDER_OUTPUT
 		}
 	}
 
 	def protected getLibraryOutput(GeneratorEntry entry) {
 		if (entry.libraryTargetFolderValue != null) {
-			IExecutionFlowGenerator.LIBRARY_TARGET_FOLDER_OUTPUT
+			LIBRARY_TARGET_FOLDER_OUTPUT
 		} else {
 			entry.headerOutput
 		}
 	}
 	
 	def protected getSourceOutput(GeneratorEntry entry) {
-		IExecutionFlowGenerator.TARGET_FOLDER_OUTPUT
+		TARGET_FOLDER_OUTPUT
 	}
 	
 }

+ 8 - 5
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/IExecutionFlowGenerator.java

@@ -8,18 +8,21 @@
  * committers of YAKINDU - initial API and implementation
  *
 */
-package org.yakindu.sct.generator.core.impl;
+package org.yakindu.sct.generator.core;
 
 import org.eclipse.xtext.generator.IFileSystemAccess;
 import org.yakindu.sct.model.sexec.ExecutionFlow;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
 
+/**
+ * Basic interface for all CodeGenerators that are built on top of the
+ * {@link ExecutionFlow}
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
 public interface IExecutionFlowGenerator {
 
-	String TARGET_FOLDER_OUTPUT = IFileSystemAccess.DEFAULT_OUTPUT;
-	String LIBRARY_TARGET_FOLDER_OUTPUT = "LIBRARY_TARGET_FOLDER";
-	String API_TARGET_FOLDER_OUTPUT = "API_TARGET_FOLDER";
-
 	/**
 	 * 
 	 * @param flow

+ 12 - 2
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/ISGraphGenerator.java

@@ -8,11 +8,21 @@
  * committers of YAKINDU - initial API and implementation
  *
 */
-package org.yakindu.sct.generator.core.impl;
+package org.yakindu.sct.generator.core;
 
+import org.eclipse.xtext.generator.IFileSystemAccess;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
 import org.yakindu.sct.model.sgraph.Statechart;
 
+/**
+ * Basic interface for all CodeGenerators that are build for {@link Statechart}s
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+
 public interface ISGraphGenerator {
-	abstract void generate(Statechart statechart, GeneratorEntry entry);
+
+	void generate(Statechart statechart, GeneratorEntry entry, IFileSystemAccess fsa);
+
 }

+ 6 - 1
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/filesystem/ISCTFileSystemAccess.java

@@ -30,7 +30,12 @@ import org.eclipse.xtext.generator.OutputConfiguration;
  *
  */
 public interface ISCTFileSystemAccess {
-
+	
+	String TARGET_FOLDER_OUTPUT = IFileSystemAccess.DEFAULT_OUTPUT;
+	String LIBRARY_TARGET_FOLDER_OUTPUT = "LIBRARY_TARGET_FOLDER";
+	String API_TARGET_FOLDER_OUTPUT = "API_TARGET_FOLDER";
+	
+	
 	/**
 	 * Provides an absolute URI for further processing.
 	 * 

+ 1 - 0
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractSExecModelGenerator.java

@@ -30,6 +30,7 @@ import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.yakindu.sct.generator.core.IExecutionFlowGenerator;
 import org.yakindu.sct.model.sexec.ExecutionFlow;
 import org.yakindu.sct.model.sexec.transformation.FlowOptimizer;
 import org.yakindu.sct.model.sexec.transformation.IModelSequencer;

+ 9 - 6
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractSGraphModelGenerator.java

@@ -11,12 +11,15 @@
  */
 package org.yakindu.sct.generator.core.impl;
 
+import static org.yakindu.sct.generator.core.filesystem.ISCTFileSystemAccess.API_TARGET_FOLDER_OUTPUT;
+import static org.yakindu.sct.generator.core.filesystem.ISCTFileSystemAccess.LIBRARY_TARGET_FOLDER_OUTPUT;
 import static org.yakindu.sct.generator.core.library.ICoreLibraryConstants.OUTLET_FEATURE_TARGET_PROJECT;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.xtext.generator.IFileSystemAccess;
 import org.eclipse.xtext.generator.OutputConfiguration;
 import org.yakindu.sct.generator.core.ISCTGenerator;
+import org.yakindu.sct.generator.core.ISGraphGenerator;
 import org.yakindu.sct.generator.core.filesystem.ISCTFileSystemAccess;
 import org.yakindu.sct.generator.core.library.ICoreLibraryHelper;
 import org.yakindu.sct.model.sexec.ExecutionFlow;
@@ -33,7 +36,7 @@ import com.google.inject.util.Modules;
  * abstract base class for all code generators that want to generate code based
  * on the {@link ExecutionFlow}
  * 
- * @author Andreas Mülder - Initial contribution and API
+ * @author Andreas Mülder - Initial contribution and API
  * @author Johannes Dicks - decouple EFS
  * 
  */
@@ -49,7 +52,7 @@ public abstract class AbstractSGraphModelGenerator implements ISCTGenerator {
 	protected void runGenerator(Statechart statechart, GeneratorEntry entry) {
 		if (this instanceof ISGraphGenerator) {
 			ISGraphGenerator graphGenerator = (ISGraphGenerator) this;
-			graphGenerator.generate(statechart, entry);
+			graphGenerator.generate(statechart, entry, sctFsa.getIFileSystemAccess());
 		}
 	}
 
@@ -193,12 +196,12 @@ public abstract class AbstractSGraphModelGenerator implements ISCTGenerator {
 	protected void initLibraryTargetFolder(GeneratorEntry entry) {
 		FeatureParameterValue libraryTargetFolderValue = coreFeatureHelper.getLibraryTargetFolderValue(entry);
 		if (libraryTargetFolderValue != null) {
-			sctFsa.setOutputPath(IExecutionFlowGenerator.LIBRARY_TARGET_FOLDER_OUTPUT,
+			sctFsa.setOutputPath(LIBRARY_TARGET_FOLDER_OUTPUT,
 					libraryTargetFolderValue.getStringValue());
 		}
 
 		OutputConfiguration librarytargetFolderOutputConfiguration = sctFsa.getOutputConfigurations()
-				.get(IExecutionFlowGenerator.LIBRARY_TARGET_FOLDER_OUTPUT);
+				.get(LIBRARY_TARGET_FOLDER_OUTPUT);
 		if (librarytargetFolderOutputConfiguration != null) {
 			librarytargetFolderOutputConfiguration.setCreateOutputDirectory(true);
 			// do not overwrite existing resources and ensure the folder is not
@@ -211,11 +214,11 @@ public abstract class AbstractSGraphModelGenerator implements ISCTGenerator {
 	protected void initApiTargetFolder(GeneratorEntry entry) {
 		FeatureParameterValue apiTargetFolderValue = coreFeatureHelper.getApiTargetFolderValue(entry);
 		if (apiTargetFolderValue != null) {
-			sctFsa.setOutputPath(IExecutionFlowGenerator.API_TARGET_FOLDER_OUTPUT,
+			sctFsa.setOutputPath(API_TARGET_FOLDER_OUTPUT,
 					apiTargetFolderValue.getStringValue());
 		}
 		OutputConfiguration apiTargetFolderOutputConfiguration = sctFsa.getOutputConfigurations()
-				.get(IExecutionFlowGenerator.API_TARGET_FOLDER_OUTPUT);
+				.get(API_TARGET_FOLDER_OUTPUT);
 		if (apiTargetFolderOutputConfiguration != null) {
 			apiTargetFolderOutputConfiguration.setCreateOutputDirectory(true);
 		}

+ 7 - 6
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/CppGenerator.xtend

@@ -15,10 +15,11 @@ import com.google.inject.name.Named
 import org.eclipse.xtext.generator.IFileSystemAccess
 import org.yakindu.sct.generator.c.GenArtifactConfigurations.GenArtifactConfiguration
 import org.yakindu.sct.generator.c.IGenArtifactConfigurations
-import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator
+import org.yakindu.sct.generator.core.IExecutionFlowGenerator
+import org.yakindu.sct.generator.core.library.ICoreLibraryHelper
 import org.yakindu.sct.model.sexec.ExecutionFlow
 import org.yakindu.sct.model.sgen.GeneratorEntry
-import org.yakindu.sct.generator.core.library.ICoreLibraryHelper
+import static org.yakindu.sct.generator.core.filesystem.ISCTFileSystemAccess.*;
 
 /**
  * This is the CPP code generators main class. 
@@ -74,22 +75,22 @@ class CppGenerator implements IExecutionFlowGenerator {
 	
 	def protected getHeaderOutput(GeneratorEntry entry) {
 		if (entry.apiTargetFolderValue != null) {
-			IExecutionFlowGenerator.API_TARGET_FOLDER_OUTPUT
+			API_TARGET_FOLDER_OUTPUT
 		} else {
-			IExecutionFlowGenerator.TARGET_FOLDER_OUTPUT
+			TARGET_FOLDER_OUTPUT
 		}
 	}
 
 	def protected getLibraryOutput(GeneratorEntry entry) {
 		if (entry.libraryTargetFolderValue != null) {
-			IExecutionFlowGenerator.LIBRARY_TARGET_FOLDER_OUTPUT
+			LIBRARY_TARGET_FOLDER_OUTPUT
 		} else {
 			entry.headerOutput
 		}
 	}
 	
 	def protected getSourceOutput(GeneratorEntry entry) {
-		IExecutionFlowGenerator.TARGET_FOLDER_OUTPUT
+		TARGET_FOLDER_OUTPUT
 	}
 	
 }

+ 1 - 1
plugins/org.yakindu.sct.generator.csharp/src/org/yakindu/sct/generator/csharp/CSharpGenerator.xtend

@@ -11,7 +11,7 @@ package org.yakindu.sct.generator.csharp
 
 import com.google.inject.Inject
 import org.eclipse.xtext.generator.IFileSystemAccess
-import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator
+import org.yakindu.sct.generator.core.IExecutionFlowGenerator
 import org.yakindu.sct.model.sexec.ExecutionFlow
 import org.yakindu.sct.model.sgen.GeneratorEntry
 

+ 4 - 5
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/IStatemachine.xtend

@@ -11,11 +11,10 @@ package org.yakindu.sct.generator.java
 
 import com.google.inject.Inject
 import org.eclipse.xtext.generator.IFileSystemAccess
-import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator
+import org.yakindu.sct.generator.core.library.ICoreLibraryHelper
 import org.yakindu.sct.model.sexec.ExecutionFlow
 import org.yakindu.sct.model.sgen.GeneratorEntry
-
-import org.yakindu.sct.generator.core.library.ICoreLibraryHelper
+import static org.yakindu.sct.generator.core.filesystem.ISCTFileSystemAccess.*
 
 class IStatemachine {
 	
@@ -31,11 +30,11 @@ class IStatemachine {
 		if (outletFeatureHelper.getLibraryTargetFolderValue(entry) != null) {
 			// generate into library target folder in case one is specified, as the contents are static
 			fsa.generateFile(entry.basePackagePath + '/' + iStatemachine.java,
-				IExecutionFlowGenerator.LIBRARY_TARGET_FOLDER_OUTPUT, content(entry))
+				LIBRARY_TARGET_FOLDER_OUTPUT, content(entry))
 		} else if (outletFeatureHelper.getApiTargetFolderValue(entry) != null) {
 			// generate into API target folder in case one is specified, as it is an interface
 			fsa.generateFile(entry.basePackagePath + '/' + iStatemachine.java,
-				IExecutionFlowGenerator.API_TARGET_FOLDER_OUTPUT, content(entry))
+				API_TARGET_FOLDER_OUTPUT, content(entry))
 		} else {
 			// use default target folder path in case no library or API target folder is specified (the file will be overwritten there)
 			fsa.generateFile(entry.basePackagePath + '/' + iStatemachine.java, content(entry))

+ 6 - 6
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/ITimer.xtend

@@ -11,11 +11,11 @@ package org.yakindu.sct.generator.java
 
 import com.google.inject.Inject
 import org.eclipse.xtext.generator.IFileSystemAccess
-import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator
-
-import org.yakindu.sct.model.sgen.GeneratorEntry
-import org.yakindu.sct.model.sexec.ExecutionFlow
 import org.yakindu.sct.generator.core.library.ICoreLibraryHelper
+import org.yakindu.sct.model.sexec.ExecutionFlow
+import org.yakindu.sct.model.sgen.GeneratorEntry
+
+import static org.yakindu.sct.generator.core.filesystem.ISCTFileSystemAccess.*
 
 class ITimer {
 	
@@ -31,11 +31,11 @@ class ITimer {
 		if (outletFeatureHelper.getLibraryTargetFolderValue(entry) != null) {
 			// generate into library target folder in case one is specified, as the contents are static
 			fsa.generateFile(entry.basePackagePath + '/' + iTimer.java,
-				IExecutionFlowGenerator.LIBRARY_TARGET_FOLDER_OUTPUT, content(entry))
+				LIBRARY_TARGET_FOLDER_OUTPUT, content(entry))
 		} else if (outletFeatureHelper.getApiTargetFolderValue(entry) != null) {
 			// generate into API target folder in case one is specified, as it is an interface
 			fsa.generateFile(entry.basePackagePath + '/' + iTimer.java,
-				IExecutionFlowGenerator.API_TARGET_FOLDER_OUTPUT, content(entry))
+				API_TARGET_FOLDER_OUTPUT, content(entry))
 		} else {
 			// use default target folder path in case no library target folder is specified (the file will be overwritten there)
 			fsa.generateFile(entry.basePackagePath + '/' + iTimer.java, content(entry))

+ 7 - 7
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/ITimerCallback.xtend

@@ -11,7 +11,7 @@ package org.yakindu.sct.generator.java
 
 import com.google.inject.Inject
 import org.eclipse.xtext.generator.IFileSystemAccess
-import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator
+import static org.yakindu.sct.generator.core.filesystem.ISCTFileSystemAccess.*;
 import org.yakindu.sct.model.sgen.GeneratorEntry
 import org.yakindu.sct.model.sexec.ExecutionFlow
 import org.yakindu.sct.generator.core.library.ICoreLibraryHelper
@@ -23,18 +23,18 @@ class ITimerCallback {
 
 	@Inject
 	extension GenmodelEntries
-	
+
 	@Inject ICoreLibraryHelper outletFeatureHelper
 
 	def generateITimerCallback(ExecutionFlow flow, GeneratorEntry entry, IFileSystemAccess fsa) {
 		if (outletFeatureHelper.getLibraryTargetFolderValue(entry) != null) {
 			// generate into library target folder in case one is specified, as the contents are static
-			fsa.generateFile(entry.basePackagePath + '/' + iTimerCallback.java,
-				IExecutionFlowGenerator.LIBRARY_TARGET_FOLDER_OUTPUT, content(entry))
+			fsa.generateFile(entry.basePackagePath + '/' + iTimerCallback.java, LIBRARY_TARGET_FOLDER_OUTPUT,
+				content(entry))
 		} else if (outletFeatureHelper.getApiTargetFolderValue(entry) != null) {
 			// generate into API target folder in case one is specified, as it is an interface
-			fsa.generateFile(entry.basePackagePath + '/' + iTimerCallback.java,
-				IExecutionFlowGenerator.API_TARGET_FOLDER_OUTPUT, content(entry))
+			fsa.generateFile(entry.basePackagePath + '/' + iTimerCallback.java, API_TARGET_FOLDER_OUTPUT,
+				content(entry))
 		} else {
 			// use default target folder path in case no library or API target folder is specified (the file will be overwritten there)
 			fsa.generateFile(entry.basePackagePath + '/' + iTimerCallback.java, content(entry))
@@ -61,4 +61,4 @@ class ITimerCallback {
 			}
 		'''
 	}
-}
+}

+ 4 - 4
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/JavaGenerator.xtend

@@ -11,12 +11,12 @@ package org.yakindu.sct.generator.java
 
 import com.google.inject.Inject
 import org.eclipse.xtext.generator.IFileSystemAccess
-import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator
-import org.yakindu.sct.model.sexec.ExecutionFlow
-import org.yakindu.sct.model.sgen.GeneratorEntry
-import org.yakindu.sct.generator.java.features.EventBasedRunnableFeature
+import org.yakindu.sct.generator.core.IExecutionFlowGenerator
 import org.yakindu.sct.generator.java.features.CycleBasedWrapperFeature
+import org.yakindu.sct.generator.java.features.EventBasedRunnableFeature
+import org.yakindu.sct.model.sexec.ExecutionFlow
 import org.yakindu.sct.model.sexec.naming.INamingService
+import org.yakindu.sct.model.sgen.GeneratorEntry
 
 /**
  * This is the Java code generators main class.

+ 22 - 23
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/StatemachineInterface.xtend

@@ -1,12 +1,12 @@
 /**
-  Copyright (c) 2012 committers of YAKINDU and others.
-  All rights reserved. This program and the accompanying materials
-  are made available under the terms of the Eclipse Public License v1.0
-  which accompanies this distribution, and is available at
-  http://www.eclipse.org/legal/epl-v10.html
-  Contributors:
-  	Markus Muehlbrandt - Initial contribution and API
-*/
+ *   Copyright (c) 2012 committers of YAKINDU and others.
+ *   All rights reserved. This program and the accompanying materials
+ *   are made available under the terms of the Eclipse Public License v1.0
+ *   which accompanies this distribution, and is available at
+ *   http://www.eclipse.org/legal/epl-v10.html
+ *   Contributors:
+ *   	Markus Muehlbrandt - Initial contribution and API
+ */
 package org.yakindu.sct.generator.java
 
 import com.google.inject.Inject
@@ -15,6 +15,7 @@ import org.yakindu.base.types.Direction
 import org.yakindu.base.types.Parameter
 import org.yakindu.base.types.typesystem.GenericTypeSystem
 import org.yakindu.base.types.typesystem.ITypeSystem
+import org.yakindu.sct.generator.core.library.ICoreLibraryHelper
 import org.yakindu.sct.generator.core.types.ICodegenTypeSystemAccess
 import org.yakindu.sct.model.sexec.ExecutionFlow
 import org.yakindu.sct.model.sgen.GeneratorEntry
@@ -23,8 +24,7 @@ import org.yakindu.sct.model.stext.stext.InterfaceScope
 import org.yakindu.sct.model.stext.stext.InternalScope
 import org.yakindu.sct.model.stext.stext.OperationDefinition
 import org.yakindu.sct.model.stext.stext.VariableDefinition
-import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator
-import org.yakindu.sct.generator.core.library.ICoreLibraryHelper
+import static org.yakindu.sct.generator.core.filesystem.ISCTFileSystemAccess.*;
 
 class StatemachineInterface {
 
@@ -36,7 +36,7 @@ class StatemachineInterface {
 	@Inject extension ICodegenTypeSystemAccess
 	@Inject extension ExpressionCode
 	@Inject Beautifier beautifier
-	
+
 	@Inject ICoreLibraryHelper outletFeatureHelper
 
 	def generateStatemachineInterface(ExecutionFlow flow, GeneratorEntry entry, IFileSystemAccess fsa) {
@@ -44,7 +44,7 @@ class StatemachineInterface {
 		var content = beautifier.format(filename, content(flow, entry))
 		if (outletFeatureHelper.getApiTargetFolderValue(entry) != null) {
 			// generate into API target folder in case one is specified, as it is an interface
-			fsa.generateFile(filename, IExecutionFlowGenerator.API_TARGET_FOLDER_OUTPUT, content)
+			fsa.generateFile(filename, API_TARGET_FOLDER_OUTPUT, content)
 		} else {
 			fsa.generateFile(filename, content)
 		}
@@ -64,11 +64,11 @@ class StatemachineInterface {
 			
 			public interface «flow.statemachineInterfaceName» extends «flow.statemachineInterfaceExtensions» {
 				«IF flow.internalScope != null»
-				
-				«var constants = flow.internalScope.declarations.filter(VariableDefinition).filter[const]»
-				«FOR constant : constants»
-					«constant.constantFieldDeclaration()»
-				«ENDFOR»
+					
+					«var constants = flow.internalScope.declarations.filter(VariableDefinition).filter[const]»
+					«FOR constant : constants»
+						«constant.constantFieldDeclaration()»
+					«ENDFOR»
 				«ENDIF»
 				«FOR scope : flow.scopes»
 					«scope.createScope(entry)»
@@ -76,10 +76,9 @@ class StatemachineInterface {
 			}
 		'''
 	}
-	
-	
-	
-	def protected constantFieldDeclaration(VariableDefinition variable){
+
+	def protected constantFieldDeclaration(
+		VariableDefinition variable) {
 		'''public static final «variable.type.targetLanguageName» «variable.identifier» = «variable.initialValue.code»;'''
 	}
 
@@ -120,7 +119,7 @@ class StatemachineInterface {
 				public interface «scope.interfaceName» {
 				«var constants = scope.declarations.filter(VariableDefinition).filter[const]»
 				«FOR constant : constants»
-					«constant.constantFieldDeclaration()»
+				«constant.constantFieldDeclaration()»
 				«ENDFOR»
 				«scope.eventAccessors»
 				«scope.variableAccessors»
@@ -171,7 +170,7 @@ class StatemachineInterface {
 		'''
 			«FOR event : scope.eventDefinitions»
 				«IF event.direction == Direction::IN»
-				«IF event.type != null && !isSame(event.type, getType(GenericTypeSystem.VOID))»
+					«IF event.type != null && !isSame(event.type, getType(GenericTypeSystem.VOID))»
 						public void raise«event.name.asName»(«event.type.targetLanguageName» value);
 					«ELSE»
 						public void raise«event.name.asName»();

+ 3 - 3
plugins/org.yakindu.sct.generator.runner/src/org/yakindu/sct/generator/runner/GenericJavaBasedGenerator.java

@@ -21,9 +21,9 @@ import org.eclipse.core.runtime.Path;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.xtext.util.Strings;
 import org.yakindu.sct.commons.WorkspaceClassLoaderFactory;
+import org.yakindu.sct.generator.core.IExecutionFlowGenerator;
+import org.yakindu.sct.generator.core.ISGraphGenerator;
 import org.yakindu.sct.generator.core.impl.AbstractSExecModelGenerator;
-import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator;
-import org.yakindu.sct.generator.core.impl.ISGraphGenerator;
 import org.yakindu.sct.model.sexec.ExecutionFlow;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
@@ -112,7 +112,7 @@ public class GenericJavaBasedGenerator extends AbstractSExecModelGenerator {
 			}
 			if (delegate instanceof ISGraphGenerator) {
 				ISGraphGenerator graphGenerator = (ISGraphGenerator) delegate;
-				graphGenerator.generate(statechart, entry);
+				graphGenerator.generate(statechart, entry, sctFsa.getIFileSystemAccess());
 			}
 		} catch (Exception e) {
 			e.printStackTrace();