Skip to content

Commit

Permalink
Fix strongly typing state input (#224)
Browse files Browse the repository at this point in the history
  • Loading branch information
longquanzheng committed Apr 16, 2024
1 parent b56c778 commit 5142b46
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 15 deletions.
22 changes: 11 additions & 11 deletions src/main/java/io/iworkflow/core/StateDecision.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,19 +64,19 @@ public static StateDecision forceFailWorkflow() {
}


public static <I> StateDecision forceCompleteIfInternalChannelEmptyOrElse(final String internalChannelName, final Class<? extends WorkflowState<? extends I>> orElseStateClass) {
public static <I> StateDecision forceCompleteIfInternalChannelEmptyOrElse(final String internalChannelName, final Class<? extends WorkflowState<I>> orElseStateClass) {
return forceCompleteIfInternalChannelEmptyOrElse(internalChannelName, orElseStateClass, null);
}

public static <I> StateDecision forceCompleteIfInternalChannelEmptyOrElse(final String internalChannelName, final Class<? extends WorkflowState<? extends I>> orElseStateClass, final I stateInput) {
public static <I> StateDecision forceCompleteIfInternalChannelEmptyOrElse(final String internalChannelName, final Class<? extends WorkflowState<I>> orElseStateClass, final I stateInput) {
return forceCompleteIfInternalChannelEmptyOrElse(null, internalChannelName, StateMovement.create(orElseStateClass, stateInput));
}

public static <I> StateDecision forceCompleteIfInternalChannelEmptyOrElse(final Object completionOutput, final String internalChannelName, final Class<? extends WorkflowState<? extends I>> orElseStateClass) {
public static <I> StateDecision forceCompleteIfInternalChannelEmptyOrElse(final Object completionOutput, final String internalChannelName, final Class<? extends WorkflowState<I>> orElseStateClass) {
return forceCompleteIfInternalChannelEmptyOrElse(completionOutput, internalChannelName, orElseStateClass, null);
}

public static <I> StateDecision forceCompleteIfInternalChannelEmptyOrElse(final Object completionOutput, final String internalChannelName, final Class<? extends WorkflowState<? extends I>> orElseStateClass, final I stateInput) {
public static <I> StateDecision forceCompleteIfInternalChannelEmptyOrElse(final Object completionOutput, final String internalChannelName, final Class<? extends WorkflowState<I>> orElseStateClass, final I stateInput) {
return forceCompleteIfInternalChannelEmptyOrElse(completionOutput, internalChannelName, StateMovement.create(orElseStateClass, stateInput));
}

Expand Down Expand Up @@ -107,19 +107,19 @@ public static StateDecision forceCompleteIfInternalChannelEmptyOrElse(final Obje
.build();
}

public static <I> StateDecision forceCompleteIfSignalChannelEmptyOrElse(final String signalChannelName, final Class<? extends WorkflowState<? extends I>> orElseStateClass) {
public static <I> StateDecision forceCompleteIfSignalChannelEmptyOrElse(final String signalChannelName, final Class<? extends WorkflowState<I>> orElseStateClass) {
return forceCompleteIfSignalChannelEmptyOrElse(signalChannelName, orElseStateClass, null);
}

public static <I> StateDecision forceCompleteIfSignalChannelEmptyOrElse(final String signalChannelName, final Class<? extends WorkflowState<? extends I>> orElseStateClass, final I stateInput) {
public static <I> StateDecision forceCompleteIfSignalChannelEmptyOrElse(final String signalChannelName, final Class<? extends WorkflowState<I>> orElseStateClass, final I stateInput) {
return forceCompleteIfSignalChannelEmptyOrElse(null, signalChannelName, StateMovement.create(orElseStateClass, stateInput));
}

public static <I> StateDecision forceCompleteIfSignalChannelEmptyOrElse(final Object completionOutput, final String signalChannelName, final Class<? extends WorkflowState<? extends I>> orElseStateClass) {
public static <I> StateDecision forceCompleteIfSignalChannelEmptyOrElse(final Object completionOutput, final String signalChannelName, final Class<? extends WorkflowState<I>> orElseStateClass) {
return forceCompleteIfSignalChannelEmptyOrElse(completionOutput, signalChannelName, orElseStateClass, null);
}

public static <I> StateDecision forceCompleteIfSignalChannelEmptyOrElse(final Object completionOutput, final String signalChannelName, final Class<? extends WorkflowState<? extends I>> orElseStateClass, final I stateInput) {
public static <I> StateDecision forceCompleteIfSignalChannelEmptyOrElse(final Object completionOutput, final String signalChannelName, final Class<? extends WorkflowState<I>> orElseStateClass, final I stateInput) {
return forceCompleteIfSignalChannelEmptyOrElse(completionOutput, signalChannelName, StateMovement.create(orElseStateClass, stateInput));
}

Expand Down Expand Up @@ -153,7 +153,7 @@ public static StateDecision forceCompleteIfSignalChannelEmptyOrElse(final Object
* @param stateOptionsOverride optional, can be null. It is used to override the defined one in the State class
* @return state decision
*/
public static <I> StateDecision singleNextState(final Class<? extends WorkflowState<? extends I>> stateClass, final I stateInput, final WorkflowStateOptions stateOptionsOverride) {
public static <I> StateDecision singleNextState(final Class<? extends WorkflowState<I>> stateClass, final I stateInput, final WorkflowStateOptions stateOptionsOverride) {
return singleNextState(stateClass.getSimpleName(), stateInput, stateOptionsOverride);
}

Expand All @@ -163,7 +163,7 @@ public static <I> StateDecision singleNextState(final Class<? extends WorkflowSt
* @param stateInput optional, can be null
* @return state decision
*/
public static <I> StateDecision singleNextState(final Class<? extends WorkflowState<? extends I>> stateClass, final I stateInput) {
public static <I> StateDecision singleNextState(final Class<? extends WorkflowState<I>> stateClass, final I stateInput) {
return singleNextState(stateClass, stateInput, null);
}

Expand All @@ -172,7 +172,7 @@ public static <I> StateDecision singleNextState(final Class<? extends WorkflowSt
* @param stateClass required
* @return state decision
*/
public static <I> StateDecision singleNextState(final Class<? extends WorkflowState<? extends I>> stateClass) {
public static <I> StateDecision singleNextState(final Class<? extends WorkflowState<I>> stateClass) {
return singleNextState(stateClass, null, null);
}

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/io/iworkflow/core/StateMovement.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public static StateMovement forceFailWorkflow(final Object output) {
* @param stateOptionsOverride optional, can be null. It is used to override the defined one in the State class
* @return state movement
*/
public static <I> StateMovement create(final Class<? extends WorkflowState<? extends I>> stateClass, final I stateInput, final WorkflowStateOptions stateOptionsOverride) {
public static <I> StateMovement create(final Class<? extends WorkflowState<I>> stateClass, final I stateInput, final WorkflowStateOptions stateOptionsOverride) {
return create(stateClass.getSimpleName(), stateInput, stateOptionsOverride);
}

Expand All @@ -70,7 +70,7 @@ public static <I> StateMovement create(final Class<? extends WorkflowState<? ext
* @param stateInput optional, can be null
* @return state movement
*/
public static <I> StateMovement create(final Class<? extends WorkflowState<? extends I>> stateClass, final I stateInput) {
public static <I> StateMovement create(final Class<? extends WorkflowState<I>> stateClass, final I stateInput) {
return create(stateClass, stateInput, null);
}

Expand All @@ -79,7 +79,7 @@ public static <I> StateMovement create(final Class<? extends WorkflowState<? ext
* @param stateClass required
* @return state movement
*/
public static <I> StateMovement create(final Class<? extends WorkflowState<? extends I>> stateClass) {
public static <I> StateMovement create(final Class<? extends WorkflowState<I>> stateClass) {
return create(stateClass, null, null);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@ public CommandRequest waitUntil(final Context context, final io.iworkflow.gen.mo
public StateDecision execute(final Context context, final io.iworkflow.gen.models.Context input, final CommandResults commandResults, Persistence persistence, final Communication communication) {
return StateDecision.gracefulCompleteWorkflow(1);
}
}
}

0 comments on commit 5142b46

Please sign in to comment.