浏览代码

Share project "org.yakindu.sct.generator.java.test" into "https://svn.codespot.com/a/eclipselabs.org/yakindu"

markus.muehlbrandt@itemis.de 14 年之前
父节点
当前提交
dd4d13c3b3
共有 17 个文件被更改,包括 709 次插入0 次删除
  1. 7 0
      test-plugins/org.yakindu.sct.generator.java.test/.classpath
  2. 28 0
      test-plugins/org.yakindu.sct.generator.java.test/.project
  3. 8 0
      test-plugins/org.yakindu.sct.generator.java.test/.settings/org.eclipse.jdt.core.prefs
  4. 14 0
      test-plugins/org.yakindu.sct.generator.java.test/META-INF/MANIFEST.MF
  5. 4 0
      test-plugins/org.yakindu.sct.generator.java.test/build.properties
  6. 119 0
      test-plugins/org.yakindu.sct.generator.java.test/resources/example.sct
  7. 238 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/ExampleAbstractBaseStatemachine.java
  8. 25 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/ExampleCyleBasedStatemachine.java
  9. 25 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/ExampleEventBasedStatemachine.java
  10. 7 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/IDataRepository.java
  11. 17 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/IEventReceiver.java
  12. 12 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/Interface.java
  13. 30 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/InterfaceA.java
  14. 24 0
      test-plugins/org.yakindu.sct.generator.java.test/src-gen/InterfaceB.java
  15. 30 0
      test-plugins/org.yakindu.sct.generator.java.test/src/org/yakindu/sct/generator/java/plain/test/Activator.java
  16. 53 0
      test-plugins/org.yakindu.sct.generator.java.test/src/org/yakindu/sct/generator/java/plain/test/generator/AbstractGeneratorTest.java
  17. 68 0
      test-plugins/org.yakindu.sct.generator.java.test/src/org/yakindu/sct/generator/java/plain/test/generator/JavaGeneratorTest.java

+ 7 - 0
test-plugins/org.yakindu.sct.generator.java.test/.classpath

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 28 - 0
test-plugins/org.yakindu.sct.generator.java.test/.project

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.yakindu.sct.generator.java.test</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

+ 8 - 0
test-plugins/org.yakindu.sct.generator.java.test/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,8 @@
+#Wed Oct 12 10:11:31 CEST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6

+ 14 - 0
test-plugins/org.yakindu.sct.generator.java.test/META-INF/MANIFEST.MF

@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Java Generator Test Plugin
+Bundle-SymbolicName: org.yakindu.sct.generator.java.test
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.yakindu.sct.generator.java.plain.test.Activator
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;bundle-version="3.7.100",
+ org.yakindu.sct.model.sgraph;bundle-version="1.0.0",
+ org.yakindu.sct.model.sexec;bundle-version="1.0.0",
+ org.yakindu.sct.model.stext;bundle-version="1.0.0",
+ org.yakindu.sct.generator.base;bundle-version="1.0.0",
+ org.junit4;bundle-version="4.8.1"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+ 4 - 0
test-plugins/org.yakindu.sct.generator.java.test/build.properties

@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .

+ 119 - 0
test-plugins/org.yakindu.sct.generator.java.test/resources/example.sct

@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:sgraph="http://www.yakindu.org/sct/2.0.0" xmlns:stext="http://www.yakindu.org/sct/statechart/SText">
+  <sgraph:Statechart xmi:id="_g9KqMP78EeCTNZx8j-fbNg" name="example" expression="interface A:&#xD;&#xA;var a : integer&#xD;&#xA;&#xD;&#xA;interface:&#xD;&#xA;var b : integer&#xD;&#xA;&#xD;&#xA;internal :&#xD;&#xA;event A">
+    <scopes xsi:type="stext:InterfaceScope" xmi:id="_5WQU8P78EeCTNZx8j-fbNg" name="A">
+      <declarations xsi:type="stext:VariableDefinition" xmi:id="_5WQU8f78EeCTNZx8j-fbNg" name="a" type="integer"/>
+    </scopes>
+    <scopes xsi:type="stext:InterfaceScope" xmi:id="_5WQU8v78EeCTNZx8j-fbNg">
+      <declarations xsi:type="stext:VariableDefinition" xmi:id="_5WQU8_78EeCTNZx8j-fbNg" name="b" type="integer"/>
+    </scopes>
+    <scopes xsi:type="stext:InternalScope" xmi:id="_5WQU9P78EeCTNZx8j-fbNg">
+      <declarations xsi:type="stext:EventDefinition" xmi:id="_5WQU9f78EeCTNZx8j-fbNg" name="A"/>
+    </scopes>
+    <regions xmi:id="_g9KqM_78EeCTNZx8j-fbNg" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_g9KqPf78EeCTNZx8j-fbNg">
+        <outgoingTransitions xmi:id="_g9UbM_78EeCTNZx8j-fbNg" target="_g9KqSP78EeCTNZx8j-fbNg"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_g9KqSP78EeCTNZx8j-fbNg" name="S1" incomingTransitions="_g9UbM_78EeCTNZx8j-fbNg">
+        <outgoingTransitions xmi:id="_tgGmUP78EeCTNZx8j-fbNg" expression="/a = 2;" target="_sHlUMP78EeCTNZx8j-fbNg">
+          <effect xsi:type="stext:ReactionEffect" xmi:id="_5WQU9_78EeCTNZx8j-fbNg">
+            <actions xsi:type="stext:Assignment" xmi:id="_5WQU-P78EeCTNZx8j-fbNg" varRef="_5WQU8f78EeCTNZx8j-fbNg">
+              <expression xsi:type="stext:PrimitiveValueExpression" xmi:id="_5WQU-f78EeCTNZx8j-fbNg" value="2"/>
+            </actions>
+          </effect>
+        </outgoingTransitions>
+        <scopes xmi:id="_5WQU9v78EeCTNZx8j-fbNg"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_sHlUMP78EeCTNZx8j-fbNg" name="S2" incomingTransitions="_tgGmUP78EeCTNZx8j-fbNg">
+        <scopes xmi:id="_5WaF8P78EeCTNZx8j-fbNg"/>
+      </vertices>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_g9KqMf78EeCTNZx8j-fbNg" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_g9KqMP78EeCTNZx8j-fbNg" measurementUnit="Pixel">
+    <children xmi:id="_g9KqNP78EeCTNZx8j-fbNg" type="Region" element="_g9KqM_78EeCTNZx8j-fbNg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_g9KqN_78EeCTNZx8j-fbNg" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_g9KqOP78EeCTNZx8j-fbNg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_g9KqOf78EeCTNZx8j-fbNg"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_g9KqOv78EeCTNZx8j-fbNg" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_g9KqPv78EeCTNZx8j-fbNg" type="Entry" element="_g9KqPf78EeCTNZx8j-fbNg">
+          <children xmi:id="_g9KqQf78EeCTNZx8j-fbNg" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_g9KqRP78EeCTNZx8j-fbNg" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_g9KqRf78EeCTNZx8j-fbNg"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_g9KqRv78EeCTNZx8j-fbNg"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_g9KqQv78EeCTNZx8j-fbNg" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_g9KqQ_78EeCTNZx8j-fbNg"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_g9KqP_78EeCTNZx8j-fbNg" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_g9KqR_78EeCTNZx8j-fbNg" x="70" y="20"/>
+        </children>
+        <children xmi:id="_g9KqSv78EeCTNZx8j-fbNg" type="State" element="_g9KqSP78EeCTNZx8j-fbNg">
+          <children xsi:type="notation:DecorationNode" xmi:id="_g9KqTv78EeCTNZx8j-fbNg" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_g9KqT_78EeCTNZx8j-fbNg"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_g9KqUP78EeCTNZx8j-fbNg"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_g9KqUf78EeCTNZx8j-fbNg" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_g9KqUv78EeCTNZx8j-fbNg" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_g9KqU_78EeCTNZx8j-fbNg"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_g9UbMP78EeCTNZx8j-fbNg" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_g9KqS_78EeCTNZx8j-fbNg" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_g9KqTP78EeCTNZx8j-fbNg"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_g9UbMf78EeCTNZx8j-fbNg"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_g9UbMv78EeCTNZx8j-fbNg" x="40" y="80"/>
+        </children>
+        <children xmi:id="_sHvFMP78EeCTNZx8j-fbNg" type="State" element="_sHlUMP78EeCTNZx8j-fbNg">
+          <children xsi:type="notation:DecorationNode" xmi:id="_sHvFNP78EeCTNZx8j-fbNg" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_sHvFNf78EeCTNZx8j-fbNg"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_sHvFNv78EeCTNZx8j-fbNg"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_sHvFN_78EeCTNZx8j-fbNg" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_sHvFOP78EeCTNZx8j-fbNg" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_sHvFOf78EeCTNZx8j-fbNg"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_sHvFOv78EeCTNZx8j-fbNg" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_sHvFMf78EeCTNZx8j-fbNg" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_sHvFMv78EeCTNZx8j-fbNg"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_sHvFO_78EeCTNZx8j-fbNg"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_sHvFM_78EeCTNZx8j-fbNg" x="242" y="87"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_g9KqO_78EeCTNZx8j-fbNg"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_g9KqNf78EeCTNZx8j-fbNg" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_g9KqPP78EeCTNZx8j-fbNg" x="220" y="10" width="400" height="400"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_g9UbO_78EeCTNZx8j-fbNg" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_g9UbPf78EeCTNZx8j-fbNg" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_g9UbPv78EeCTNZx8j-fbNg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_g9UbP_78EeCTNZx8j-fbNg"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_g9UbQP78EeCTNZx8j-fbNg" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_g9UbQf78EeCTNZx8j-fbNg"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_g9UbQv78EeCTNZx8j-fbNg" x="10" y="10" width="200" height="400"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_g9KqMv78EeCTNZx8j-fbNg"/>
+    <edges xmi:id="_g9UbNP78EeCTNZx8j-fbNg" type="Transition" element="_g9UbM_78EeCTNZx8j-fbNg" source="_g9KqPv78EeCTNZx8j-fbNg" target="_g9KqSv78EeCTNZx8j-fbNg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_g9UbOP78EeCTNZx8j-fbNg" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_g9UbOf78EeCTNZx8j-fbNg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_g9UbOv78EeCTNZx8j-fbNg" y="40"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_g9UbNf78EeCTNZx8j-fbNg" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_g9UbN_78EeCTNZx8j-fbNg" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_g9UbNv78EeCTNZx8j-fbNg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    </edges>
+    <edges xmi:id="_tgQXUP78EeCTNZx8j-fbNg" type="Transition" element="_tgGmUP78EeCTNZx8j-fbNg" source="_g9KqSv78EeCTNZx8j-fbNg" target="_sHvFMP78EeCTNZx8j-fbNg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_tgQXVP78EeCTNZx8j-fbNg" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_tgQXVf78EeCTNZx8j-fbNg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_tgQXVv78EeCTNZx8j-fbNg" x="6" y="-23"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_tgQXUf78EeCTNZx8j-fbNg" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_tgQXU_78EeCTNZx8j-fbNg" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_tgQXUv78EeCTNZx8j-fbNg" points="[9, 5, -182, 0]$[189, -25, -2, -30]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_tg2NMP78EeCTNZx8j-fbNg" id="(0.775,0.5245901639344263)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>

+ 238 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/ExampleAbstractBaseStatemachine.java

@@ -0,0 +1,238 @@
+
+package org.yakindu.sct.runtime.java.custom;
+
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.Set;
+
+import org.yakindu.sct.runtime.java.base.DataType;
+import org.yakindu.sct.runtime.java.base.IStatemachine;
+
+public abstract class ExampleAbstractBaseStatemachine implements IStatemachine {
+
+	public enum Event {
+		
+  		e1,
+		
+  		e2,
+		
+  		e3,
+		
+  		e4,
+		
+  		e5,
+		
+  		e6,
+		
+  		i1,
+		
+	};
+
+	public enum State {
+	      S1,
+	      S2,
+	      S3,
+	      S4,
+	    
+	};
+
+	private Set<State> activeStates = EnumSet.noneOf(State.class);
+
+
+  
+private bool condition_S1_tr0(Collection<Event> occuredEvents) {
+  return (	 eventSet.check( ev_e1)  );
+}
+  
+
+  
+private bool condition_S2_tr0(Collection<Event> occuredEvents) {
+  return (	 eventSet.check( ev_e2)  );
+}
+  
+
+  
+private bool condition_S3_tr0(Collection<Event> occuredEvents) {
+  return (	 eventSet.check( ev_e3)  );
+}
+  
+
+  
+private bool condition_S4_tr0(Collection<Event> occuredEvents) {
+  return (	 eventSet.check( ev_e4)  );
+}
+  
+
+
+
+  
+private void actions_S1_tr0() {
+  
+  
+activeStates.remove(S1);
+
+activeStates.add(S2);
+
+
+}
+  
+
+  
+private void actions_S2_tr0() {
+  
+  
+activeStates.remove(S2);
+
+activeStates.add(S1);
+
+
+}
+  
+
+  
+private void actions_S3_tr0() {
+  
+  
+activeStates.remove(S3);
+
+activeStates.add(S4);
+
+
+}
+  
+
+  
+private void actions_S4_tr0() {
+  
+  
+activeStates.remove(S4);
+
+activeStates.add(S3);
+
+
+}
+  
+
+
+
+private void cycle_S1(Collection<Event> occuredEvents)
+{
+	 
+
+if (    condition_S1_tr0(Collection<Event> occuredEvents) ) { 
+  
+actions_S1_tr0();
+
+}
+else {
+  
+}
+
+
+}
+
+private void cycle_S2(Collection<Event> occuredEvents)
+{
+	
+}
+
+private void cycle_S3(Collection<Event> occuredEvents)
+{
+	 
+
+if (    condition_S3_tr0(Collection<Event> occuredEvents) ) { 
+  
+actions_S3_tr0();
+
+}
+else {
+  
+}
+
+
+}
+
+private void cycle_S4(Collection<Event> occuredEvents)
+{
+	 
+
+if (    condition_S4_tr0(Collection<Event> occuredEvents) ) { 
+  
+actions_S4_tr0();
+
+}
+else {
+  
+}
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+	
+	public void init() {
+		
+activeStates.add(S1);
+
+	}
+	
+	protected abstract Collection<Event> getOccuredEvents();
+
+	public void raiseEvent(DataType event) {
+		getOccuredEvents().add(Event.valueOf(event.getName()));
+	}
+
+	public boolean eventOccured(DataType event) {
+		return getOccuredEvents().contains(Event.valueOf(event.getName()));
+	}
+
+	public boolean eventOccured() {
+		return !getOccuredEvents().isEmpty();
+	}
+
+	public void runCycle(Collection<Event> events) {
+		for (State state : activeStates) {
+			switch (state) {
+			
+    		case S1:
+        		cycle_S1(events);
+        		break;
+			
+    		case S2:
+        		cycle_S2(events);
+        		break;
+			
+    		case S3:
+        		cycle_S3(events);
+        		break;
+			
+    		case S4:
+        		cycle_S4(events);
+        		break;
+			
+			default:
+				// no state found
+			}
+		}
+	}
+}
+

+ 25 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/ExampleCyleBasedStatemachine.java

@@ -0,0 +1,25 @@
+
+package org.yakindu.sct.runtime.java.custom;
+
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.Set;
+
+public class ExampleCyleBasedStatemachine extends ExampleAbstractBaseStatemachine {
+
+	private Set<Event> occuredEvents = EnumSet.noneOf(Event.class);
+
+	@Override
+	protected Collection<Event> getOccuredEvents() {
+		return occuredEvents;
+	}
+
+	public void runCycle() {
+		if (eventOccured()) {
+			runCycle(occuredEvents);
+			// remove all events
+			occuredEvents.clear();
+		}
+	}
+}
+

+ 25 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/ExampleEventBasedStatemachine.java

@@ -0,0 +1,25 @@
+
+package org.yakindu.sct.runtime.java.custom;
+
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.Set;
+
+public class ExampleEventBasedStatemachine extends ExampleAbstractBaseStatemachine {
+
+	private Queue<Event> eventQueue = new LinkedList<Event>();
+	
+	@Override
+	protected Collection<Event> getOccuredEvents() {
+		return eventQueue;
+	}
+	
+	@Override
+	public void runCycle() {
+		if (eventOccured()) {
+			Event event = eventQueue.poll();
+			runCycle(Collections.singletonList(event));
+		}
+	}
+}
+

+ 7 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/IDataRepository.java

@@ -0,0 +1,7 @@
+
+package org.yakindu.sct.runtime.java.base;
+
+public interface IDataRepository {
+	
+	public DataType<?> getDataType(String name);
+}

+ 17 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/IEventReceiver.java

@@ -0,0 +1,17 @@
+
+package org.yakindu.sct.runtime.java.base;
+
+public interface IStatemachine {
+	
+	public void init();
+
+	public void runCycle();
+	
+	public IDataRepository getEventRepository();
+	
+	public IDataRepository getVariableRepository();
+	
+	public void setTimerHandler(ITimerHandler timerHandler);
+	
+	public ITimerHandler getTimerHandler();
+}

+ 12 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/Interface.java

@@ -0,0 +1,12 @@
+
+package org.yakindu.sct.runtime.java.custom;
+
+import java.util.Collection;
+
+import org.yakindu.sct.runtime.java.custom.ExampleAbstractBaseStatemachine.Events;
+
+public interface Interface {
+	public Collection<Events> getOutEvents();
+	public Collection<Events> getOccuredEvents();
+}
+

+ 30 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/InterfaceA.java

@@ -0,0 +1,30 @@
+
+package org.yakindu.sct.runtime.java.custom;
+
+
+public interface InterfaceA {
+	
+	
+	INEvent
+	
+	INEvent
+	
+	INEvent
+	
+	INEvent
+	
+	
+	public void raiseE1(int value);
+	
+	public void raiseE2();
+	
+	public void raiseE3();
+	
+	public void raiseE4();
+	
+	public void setVarC(int value);
+	
+	public int getVarC();
+
+}
+

+ 24 - 0
test-plugins/org.yakindu.sct.generator.java.test/src-gen/InterfaceB.java

@@ -0,0 +1,24 @@
+
+package org.yakindu.sct.runtime.java.custom;
+
+
+public interface InterfaceB {
+	
+	
+	OutEvent
+	
+	
+	public void raiseE1(int value);
+	
+	public void raiseE2();
+	
+	public void raiseE3();
+	
+	public void raiseE4();
+	
+	public void setVarC(int value);
+	
+	public int getVarC();
+
+}
+

+ 30 - 0
test-plugins/org.yakindu.sct.generator.java.test/src/org/yakindu/sct/generator/java/plain/test/Activator.java

@@ -0,0 +1,30 @@
+package org.yakindu.sct.generator.java.plain.test;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}

+ 53 - 0
test-plugins/org.yakindu.sct.generator.java.test/src/org/yakindu/sct/generator/java/plain/test/generator/AbstractGeneratorTest.java

@@ -0,0 +1,53 @@
+package org.yakindu.sct.generator.java.plain.test.generator;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class AbstractGeneratorTest {
+
+	public static void copyUrlFileToIFile(URL url, IFile file) throws Exception {
+		InputStream stream = null;
+		try {
+			stream = url.openStream();
+			file.create(stream, true, new NullProgressMonitor());
+		} finally {
+			if (stream != null) {
+				try {
+					stream.close();
+				} catch (IOException e) {
+				}
+			}
+		}
+	}
+
+	/**
+	 * Creates a new Test project Project
+	 */
+	protected IProject createTestProject(String projectName,
+			boolean deleteIfExists) throws Exception {
+		final IProject project = ResourcesPlugin.getWorkspace().getRoot()
+				.getProject(projectName);
+
+		if (project.exists() && deleteIfExists) {
+			project.delete(true, true, new NullProgressMonitor());
+		}
+
+		if (!project.exists() || deleteIfExists) {
+			project.create(new NullProgressMonitor());
+			project.open(new NullProgressMonitor());
+		}
+
+		return project;
+	}
+}

+ 68 - 0
test-plugins/org.yakindu.sct.generator.java.test/src/org/yakindu/sct/generator/java/plain/test/generator/JavaGeneratorTest.java

@@ -0,0 +1,68 @@
+package org.yakindu.sct.generator.java.plain.test.generator;
+
+import java.io.File;
+import java.net.URL;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.URI;
+import org.junit.Before;
+import org.junit.Test;
+import org.yakindu.sct.generator.base.util.GeneratorBaseUtil;
+import org.yakindu.sct.model.sexec.ExecutionFlow;
+import org.yakindu.sct.model.sexec.transformation.SequencerModule;
+import org.yakindu.sct.model.sgraph.Statechart;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * @author axel terfloth
+ * 
+ */
+public class JavaGeneratorTest extends AbstractGeneratorTest {
+
+	@Before
+	public void setup() {
+		Injector injector = Guice.createInjector(new SequencerModule());
+		injector.injectMembers(this);
+	}
+
+	
+	@Test
+	public void testExecuteGenerator() throws Exception {
+
+		IProject project = super.createTestProject("JavaGeneratorTest", true);
+		final IFile target = project.getFile("example.sct");
+		URL entry = Platform.getBundle("org.yakindu.sct.generator.java.plain.test")
+				.getEntry("resources/example.sct");
+		copyUrlFileToIFile(entry, target);
+
+		URI uri = URI.createPlatformResourceURI(
+				target.getFullPath().toString(), true);
+
+		String templatePath = "org::yakindu::sct::generator::java::plain::templates::Main::main";
+		Statechart statechart = GeneratorBaseUtil.loadStatechart(uri);
+		ExecutionFlow executionFlow = GeneratorBaseUtil
+				.createExecutionFlowModel(statechart);
+		
+		String targetFolder = "src-gen";
+		
+		String absoluteTargetFolder = ResourcesPlugin.getWorkspace().getRoot()
+				.getLocation().toOSString()
+				+ File.separator
+				+ project.getFullPath().toOSString()
+				+ File.separator + targetFolder;
+		
+		GeneratorBaseUtil.generate(executionFlow, templatePath, project,
+				absoluteTargetFolder);
+		
+//		assertNotNull(((RegularEventSpec) ((ReactionTrigger) statechart.getRegions().get(0).getVertices().get(0).getOutgoingTransitions().get(0).getTrigger()).getTriggers().get(0)).getEvent());
+//		assertNotNull(((ElementReferenceExpression) ((If) executionFlow.getStates().get(0).getCycle().getSteps().get(0)).getCheck().getCondition()).getValue());
+	}
+}