Browse Source

Added default implementations for interfaces.

markus.muehlbrandt@gmail.com 10 years ago
parent
commit
f25940a42f

+ 2 - 3
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/container/DefaultExecutionContextInitializer.xtend

@@ -37,7 +37,7 @@ import org.yakindu.sct.simulation.core.sruntime.ExecutionSlot
 import org.yakindu.sct.simulation.core.sruntime.impl.CompositeSlotImpl
 import org.yakindu.sct.simulation.core.sruntime.impl.CompositeSlotImpl
 import org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl
 import org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl
 import org.yakindu.sct.simulation.core.sruntime.impl.ExecutionVariableImpl
 import org.yakindu.sct.simulation.core.sruntime.impl.ExecutionVariableImpl
-import org.yakindu.base.types.interpreter.ITypeSystemInterpreter
+import org.yakindu.base.types.ITypeSystemRegistry
 
 
 /**
 /**
  * 
  * 
@@ -47,9 +47,8 @@ import org.yakindu.base.types.interpreter.ITypeSystemInterpreter
 class DefaultExecutionContextInitializer implements IExecutionContextInitializer {
 class DefaultExecutionContextInitializer implements IExecutionContextInitializer {
 
 
 	@Inject extension IQualifiedNameProvider
 	@Inject extension IQualifiedNameProvider
-	@Inject extension ITypeSystem
+	@Inject extension ITypeSystemRegistry
 	@Inject extension ITypeSystemInferrer
 	@Inject extension ITypeSystemInferrer
-	@Inject extension ITypeSystemInterpreter
 
 
 	override initialize(ExecutionContext context, ExecutionFlow flow) {
 	override initialize(ExecutionContext context, ExecutionFlow flow) {
 		flow.scopes.forEach[context.slots += transform]
 		flow.scopes.forEach[context.slots += transform]

+ 3 - 0
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/container/IExecutionContextInitializer.java

@@ -15,11 +15,14 @@ import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
 import org.yakindu.sct.simulation.core.sruntime.ExecutionEvent;
 import org.yakindu.sct.simulation.core.sruntime.ExecutionEvent;
 import org.yakindu.sct.simulation.core.sruntime.ExecutionVariable;
 import org.yakindu.sct.simulation.core.sruntime.ExecutionVariable;
 
 
+import com.google.inject.ImplementedBy;
+
 /**
 /**
  * 
  * 
  * @author andreas muelder - Initial contribution and API
  * @author andreas muelder - Initial contribution and API
  * 
  * 
  */
  */
+@ImplementedBy(DefaultExecutionContextInitializer.class)
 public interface IExecutionContextInitializer {
 public interface IExecutionContextInitializer {
 	/**
 	/**
 	 * Called before the interpreter is started to initialize the
 	 * Called before the interpreter is started to initialize the

+ 3 - 0
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/IStatementInterpreter.java

@@ -13,11 +13,14 @@ package org.yakindu.sct.simulation.core.sexec.interpreter;
 import org.yakindu.base.expressions.expressions.Expression;
 import org.yakindu.base.expressions.expressions.Expression;
 import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
 import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
 
 
+import com.google.inject.ImplementedBy;
+
 /**
 /**
  * 
  * 
  * @author andreas muelder - Initial contribution and API
  * @author andreas muelder - Initial contribution and API
  * 
  * 
  */
  */
+@ImplementedBy(StextStatementInterpreter.class)
 public interface IStatementInterpreter {
 public interface IStatementInterpreter {
 	
 	
 	public Object evaluateStatement(Expression statement, ExecutionContext context);
 	public Object evaluateStatement(Expression statement, ExecutionContext context);

+ 5 - 5
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/StextStatementInterpreter.xtend

@@ -40,10 +40,10 @@ import org.yakindu.base.expressions.expressions.ShiftExpression
 import org.yakindu.base.expressions.expressions.StringLiteral
 import org.yakindu.base.expressions.expressions.StringLiteral
 import org.yakindu.base.expressions.expressions.TypeCastExpression
 import org.yakindu.base.expressions.expressions.TypeCastExpression
 import org.yakindu.base.types.Enumerator
 import org.yakindu.base.types.Enumerator
+import org.yakindu.base.types.ITypeSystemRegistry
 import org.yakindu.base.types.Operation
 import org.yakindu.base.types.Operation
 import org.yakindu.base.types.Type
 import org.yakindu.base.types.Type
 import org.yakindu.base.types.typesystem.DefaultTypeSystem
 import org.yakindu.base.types.typesystem.DefaultTypeSystem
-import org.yakindu.base.types.typesystem.ITypeSystem
 import org.yakindu.sct.model.stext.stext.ActiveStateReferenceExpression
 import org.yakindu.sct.model.stext.stext.ActiveStateReferenceExpression
 import org.yakindu.sct.model.stext.stext.EventRaisingExpression
 import org.yakindu.sct.model.stext.stext.EventRaisingExpression
 import org.yakindu.sct.model.stext.stext.EventValueReferenceExpression
 import org.yakindu.sct.model.stext.stext.EventValueReferenceExpression
@@ -63,12 +63,12 @@ class StextStatementInterpreter extends AbstractStatementInterpreter {
 
 
 	@Inject
 	@Inject
 	extension IQualifiedNameProvider provider
 	extension IQualifiedNameProvider provider
-	@Inject
+	@Inject (optional = true)
 	protected IOperationMockup operationDelegate
 	protected IOperationMockup operationDelegate
 	@Inject
 	@Inject
 	protected extension IExecutionSlotResolver resolver
 	protected extension IExecutionSlotResolver resolver
 	@Inject
 	@Inject
-	protected extension ITypeSystem ts;
+	protected extension ITypeSystemRegistry ts;
 
 
 	protected ExecutionContext context
 	protected ExecutionContext context
 
 
@@ -158,7 +158,7 @@ class StextStatementInterpreter extends AbstractStatementInterpreter {
 	def dispatch Object execute(ElementReferenceExpression expression) {
 	def dispatch Object execute(ElementReferenceExpression expression) {
 		var parameter = expression.args.map(it|execute)
 		var parameter = expression.args.map(it|execute)
 		if (expression.operationCall || expression.reference instanceof OperationDefinition) {
 		if (expression.operationCall || expression.reference instanceof OperationDefinition) {
-			if (operationDelegate.canExecute(expression.reference as Operation, parameter.toArray)) {
+			if (operationDelegate!=null && operationDelegate.canExecute(expression.reference as Operation, parameter.toArray)) {
 				return operationDelegate.execute((expression.reference as Operation), parameter.toArray)
 				return operationDelegate.execute((expression.reference as Operation), parameter.toArray)
 			}
 			}
 		}
 		}
@@ -271,7 +271,7 @@ class StextStatementInterpreter extends AbstractStatementInterpreter {
 			var parameter = call.args.map(it|execute)
 			var parameter = call.args.map(it|execute)
 			if (call.feature instanceof Operation) {
 			if (call.feature instanceof Operation) {
 				var Operation operation = call.feature as Operation
 				var Operation operation = call.feature as Operation
-				if (operationDelegate.canExecute(operation, parameter)) {
+				if (operationDelegate!=null && operationDelegate.canExecute(operation, parameter)) {
 					return operationDelegate.execute(operation, parameter)
 					return operationDelegate.execute(operation, parameter)
 				}
 				}
 			}
 			}