瀏覽代碼

Extract 'isEventDriven' into helper extension

René Beckmann 7 年之前
父節點
當前提交
fe75387042

+ 2 - 1
plugins/org.yakindu.sct.generator.core/META-INF/MANIFEST.MF

@@ -13,7 +13,8 @@ Require-Bundle: org.yakindu.sct.model.sexec;visibility:=reexport,
  org.yakindu.sct.domain,
  com.google.guava,
  org.eclipse.xtext.xbase,
- org.eclipse.core.runtime;visibility:=reexport
+ org.eclipse.core.runtime;visibility:=reexport,
+ org.yakindu.sct.model.stext.lib
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
 Export-Package: org.yakindu.sct.generator.core;

+ 15 - 0
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/extensions/AnnotationExtensions.java

@@ -0,0 +1,15 @@
+package org.yakindu.sct.generator.core.extensions;
+
+import static org.yakindu.sct.model.stext.lib.StatechartAnnotations.EVENT_DRIVEN_ANNOTATION;
+
+import org.yakindu.base.types.Annotation;
+import org.yakindu.sct.model.sgen.GeneratorEntry;
+import org.yakindu.sct.model.sgraph.Statechart;
+
+public class AnnotationExtensions {
+	public boolean isEventDriven(GeneratorEntry entry) {
+		Statechart statechart = (Statechart) entry.getElementRef();
+		Annotation eventDrivenAnnotation = statechart.getAnnotationOfType(EVENT_DRIVEN_ANNOTATION);
+		return eventDrivenAnnotation != null;
+	}
+}

+ 2 - 7
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/CppCodeGeneratorModule.java

@@ -12,9 +12,7 @@ package org.yakindu.sct.generator.cpp;
 
 import static org.yakindu.sct.generator.cpp.features.CPPFeatureConstants.FEATURE_INCLUDES;
 import static org.yakindu.sct.generator.cpp.features.CPPFeatureConstants.PARAMETER_INCLUDES_USE_RELATIVE_PATHS;
-import static org.yakindu.sct.model.stext.lib.StatechartAnnotations.EVENT_DRIVEN_ANNOTATION;
 
-import org.yakindu.base.types.Annotation;
 import org.yakindu.base.types.inferrer.ITypeSystemInferrer;
 import org.yakindu.sct.generator.c.DefaultGenArtifactConfigurations;
 import org.yakindu.sct.generator.c.IGenArtifactConfigurations;
@@ -25,6 +23,7 @@ import org.yakindu.sct.generator.c.extensions.Naming;
 import org.yakindu.sct.generator.c.types.CTypeSystemAccess;
 import org.yakindu.sct.generator.core.IExecutionFlowGenerator;
 import org.yakindu.sct.generator.core.IGeneratorModule;
+import org.yakindu.sct.generator.core.extensions.AnnotationExtensions;
 import org.yakindu.sct.generator.core.types.ICodegenTypeSystemAccess;
 import org.yakindu.sct.generator.cpp.eventdriven.EventDrivenCppIncludeProvider;
 import org.yakindu.sct.generator.cpp.eventdriven.EventDrivenEventCode;
@@ -34,7 +33,6 @@ import org.yakindu.sct.generator.cpp.eventdriven.EventDrivenStatemachineImplemen
 import org.yakindu.sct.model.sexec.naming.INamingService;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
-import org.yakindu.sct.model.sgraph.Statechart;
 import org.yakindu.sct.model.stext.inferrer.STextTypeInferrer;
 
 import com.google.inject.Binder;
@@ -73,10 +71,7 @@ public class CppCodeGeneratorModule implements IGeneratorModule {
 	}
 
 	protected void bindEventDrivenClasses(GeneratorEntry entry, Binder binder) {
-		Statechart statechart = (Statechart) entry.getElementRef();
-		Annotation eventDrivenAnnotation = statechart.getAnnotationOfType(EVENT_DRIVEN_ANNOTATION);
-
-		if (eventDrivenAnnotation != null) {
+		if ((new AnnotationExtensions()).isEventDriven(entry)) {
 			binder.bind(StatemachineHeader.class).to(EventDrivenStatemachineHeader.class);
 			binder.bind(StatemachineImplementation.class).to(EventDrivenStatemachineImplementation.class);
 			binder.bind(CppExpressionsGenerator.class).to(EventDrivenExpressionCode.class);

+ 10 - 17
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/JavaGeneratorModule.java

@@ -10,62 +10,55 @@
  */
 package org.yakindu.sct.generator.java;
 
-import org.yakindu.sct.generator.core.IGeneratorModule;
-
-import static org.yakindu.sct.model.stext.lib.StatechartAnnotations.EVENT_DRIVEN_ANNOTATION;
-
-import org.yakindu.base.types.Annotation;
 import org.yakindu.sct.generator.core.IExecutionFlowGenerator;
+import org.yakindu.sct.generator.core.IGeneratorModule;
+import org.yakindu.sct.generator.core.extensions.AnnotationExtensions;
 import org.yakindu.sct.generator.core.types.ICodegenTypeSystemAccess;
 import org.yakindu.sct.generator.java.eventdriven.EventDrivenStatemachine;
 import org.yakindu.sct.generator.java.types.JavaTypeSystemAccess;
 import org.yakindu.sct.generator.java.types.OldJavaTypeSystemAccess;
 import org.yakindu.sct.model.sexec.naming.INamingService;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
-import org.yakindu.sct.model.sgraph.Statechart;
 
 import com.google.inject.Binder;
 import com.google.inject.Scopes;
 
 /**
- * 
+ *
  * @author andreas muelder - Initial contribution and API
  * @author terfloth - extensions for event driven execution
- * 
+ *
  */
 public class JavaGeneratorModule implements IGeneratorModule {
 
 	@Override
 	public void configure(GeneratorEntry entry, Binder binder) {
-		
+
 		configureGeneratorRoot(entry, binder);
 		configureForExecutionStyle(entry, binder);
 		configureServices(entry, binder);
 	}
 
-	
+
 	public void configureGeneratorRoot(GeneratorEntry entry, Binder binder) {
 		binder.bind(IExecutionFlowGenerator.class).to(JavaGenerator.class);
 	}
 
 	public void configureForExecutionStyle(GeneratorEntry entry, Binder binder) {
-		Statechart statechart = (Statechart) entry.getElementRef();
-		Annotation eventDrivenAnnotation = statechart.getAnnotationOfType(EVENT_DRIVEN_ANNOTATION);
-
-		if ( eventDrivenAnnotation != null ) {
+		if ((new AnnotationExtensions()).isEventDriven(entry)) {
 			binder.bind(Statemachine.class).to(EventDrivenStatemachine.class);
 		}
 	}
 
 	public void configureServices(GeneratorEntry entry, Binder binder) {
-		
+
 		final GenmodelEntries entries = new GenmodelEntries();
 		if (entries.useJavaInt(entry)) {
 			binder.bind(ICodegenTypeSystemAccess.class).to(OldJavaTypeSystemAccess.class);
 		} else {
 			binder.bind(ICodegenTypeSystemAccess.class).to(JavaTypeSystemAccess.class);
 		}
-		binder.bind(INamingService.class).to(JavaNamingService.class).in(Scopes.SINGLETON);		
+		binder.bind(INamingService.class).to(JavaNamingService.class).in(Scopes.SINGLETON);
 	}
-	
+
 }