diff --git a/bundles/tools.vitruv.dsls.reactions.runtime/src/tools/vitruv/dsls/reactions/runtime/routines/AbstractRoutine.xtend b/bundles/tools.vitruv.dsls.reactions.runtime/src/tools/vitruv/dsls/reactions/runtime/routines/AbstractRoutine.xtend index 36bf9e4b..da870660 100644 --- a/bundles/tools.vitruv.dsls.reactions.runtime/src/tools/vitruv/dsls/reactions/runtime/routines/AbstractRoutine.xtend +++ b/bundles/tools.vitruv.dsls.reactions.runtime/src/tools/vitruv/dsls/reactions/runtime/routines/AbstractRoutine.xtend @@ -16,20 +16,20 @@ import org.eclipse.xtend.lib.annotations.Accessors import tools.vitruv.change.correspondence.view.EditableCorrespondenceModelView import tools.vitruv.dsls.reactions.runtime.correspondence.ReactionsCorrespondence -abstract class AbstractRoutine extends CallHierarchyHaving implements Routine { - val AbstractRoutinesFacade routinesFacade +abstract class AbstractRoutine extends CallHierarchyHaving implements Routine { + val T routinesFacade @Accessors(PROTECTED_GETTER) extension val ReactionExecutionState executionState - new(AbstractRoutinesFacade routinesFacade, ReactionExecutionState executionState, CallHierarchyHaving calledBy) { + new(T routinesFacade, ReactionExecutionState executionState, CallHierarchyHaving calledBy) { super(calledBy) this.routinesFacade = routinesFacade this.executionState = executionState } // generic return type for convenience; the requested type has to match the type of the facade provided during construction - protected def T getRoutinesFacade() { - return routinesFacade as T + protected def T getRoutinesFacade() { + return routinesFacade } override boolean execute() { diff --git a/bundles/tools.vitruv.dsls.reactions/src/tools/vitruv/dsls/reactions/codegen/classgenerators/RoutineClassGenerator.xtend b/bundles/tools.vitruv.dsls.reactions/src/tools/vitruv/dsls/reactions/codegen/classgenerators/RoutineClassGenerator.xtend index 997627da..d781ea24 100644 --- a/bundles/tools.vitruv.dsls.reactions/src/tools/vitruv/dsls/reactions/codegen/classgenerators/RoutineClassGenerator.xtend +++ b/bundles/tools.vitruv.dsls.reactions/src/tools/vitruv/dsls/reactions/codegen/classgenerators/RoutineClassGenerator.xtend @@ -96,7 +96,7 @@ class RoutineClassGenerator extends ClassGenerator { val executeMethod = generateMethodExecuteRoutine() generatedClass => [ documentation = getCommentWithoutMarkers(routine.documentation) - superTypes += typeRef(AbstractRoutine) + superTypes += typeRef(AbstractRoutine, typeRef(routinesFacadeQualifiedName)) if(hasInputValues) members += routine.toField(INPUT_VALUES_FIELD_NAME, typeRef(inputValuesClass)) members += if (!matchBlockClassGenerator.empty) routine.toField(RETRIEVED_VALUES_FIELD_NAME,