Skip to content

Commit

Permalink
[REFACTOR]:[rename failover to fail]
Browse files Browse the repository at this point in the history
这里不是故障恢复,只是出错回调
  • Loading branch information
Ivan97 committed Oct 10, 2022
1 parent e4da460 commit 935b811
Show file tree
Hide file tree
Showing 10 changed files with 58 additions and 55 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.alibaba.cola.statemachine.builder;

import com.alibaba.cola.statemachine.exception.TransitionFailException;

/**
* Alert fail callback, throw an {@code TransitionFailException}
*
* @author 龙也
* @date 2022/9/15 12:02 PM
*/
public class AlertFailCallback<S, E, C> implements FailCallback<S, E, C> {

@Override
public void onFail(S sourceState, E event, C context) {
throw new TransitionFailException(
"Cannot fire event [" + event + "] on current state [" + sourceState + "] with context [" + context + "]"
);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
package com.alibaba.cola.statemachine.builder;

/**
* FailCallback
*
* @author 龙也
* @date 2022/9/15 12:02 PM
*/
@FunctionalInterface
public interface FailoverCallback<S, E, C> {
public interface FailCallback<S, E, C> {

/**
* Callback function to execute on failover
* Callback function to execute if failed to trigger an Event
*
* @param sourceState
* @param event
* @param context
*/
void onFailover(S sourceState, E event, C context);
void onFail(S sourceState, E event, C context);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.alibaba.cola.statemachine.builder;

/**
* Default fail callback, do nothing.
*
* @author 龙也
* @date 2022/9/15 12:02 PM
*/
public class NumbFailCallback<S, E, C> implements FailCallback<S, E, C> {

@Override
public void onFail(S sourceState, E event, C context) {
//do nothing
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ public interface StateMachineBuilder<S, E, C> {
InternalTransitionBuilder<S, E, C> internalTransition();

/**
* set up failover callback, default do nothing {@code NumbFailoverCallbackImpl}
* set up fail callback, default do nothing {@code NumbFailCallbackImpl}
*
* @param callback
*/
void setFailoverCallback(FailoverCallback<S, E, C> callback);
void setFailCallback(FailCallback<S, E, C> callback);

StateMachine<S, E, C> build(String machineId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class StateMachineBuilderImpl<S, E, C> implements StateMachineBuilder<S,
*/
private final Map<S, State<S, E, C>> stateMap = new ConcurrentHashMap<>();
private final StateMachineImpl<S, E, C> stateMachine = new StateMachineImpl<>(stateMap);
private FailoverCallback<S, E, C> failoverCallback = new NumbFailoverCallbackImpl<>();
private FailCallback<S, E, C> failCallback = new NumbFailCallback<>();

@Override
public ExternalTransitionBuilder<S, E, C> externalTransition() {
Expand All @@ -40,15 +40,15 @@ public InternalTransitionBuilder<S, E, C> internalTransition() {
}

@Override
public void setFailoverCallback(FailoverCallback<S, E, C> callback) {
this.failoverCallback = callback;
public void setFailCallback(FailCallback<S, E, C> callback) {
this.failCallback = callback;
}

@Override
public StateMachine<S, E, C> build(String machineId) {
stateMachine.setMachineId(machineId);
stateMachine.setReady(true);
stateMachine.setFailoverCallback(failoverCallback);
stateMachine.setFailCallback(failCallback);
StateMachineFactory.register(stateMachine);
return stateMachine;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
* @author 龙也
* @date 2022/9/15 12:08 PM
*/
public class TransitionFailoverException extends RuntimeException {
public class TransitionFailException extends RuntimeException {

public TransitionFailoverException(String errMsg) {
public TransitionFailException(String errMsg) {
super(errMsg);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import com.alibaba.cola.statemachine.StateMachine;
import com.alibaba.cola.statemachine.Transition;
import com.alibaba.cola.statemachine.Visitor;
import com.alibaba.cola.statemachine.builder.FailoverCallback;
import com.alibaba.cola.statemachine.builder.FailCallback;

/**
* For performance consideration,
Expand All @@ -27,7 +27,7 @@ public class StateMachineImpl<S, E, C> implements StateMachine<S, E, C> {

private boolean ready;

private FailoverCallback<S, E, C> failoverCallback;
private FailCallback<S, E, C> failCallback;

public StateMachineImpl(Map<S, State<S, E, C>> stateMap) {
this.stateMap = stateMap;
Expand All @@ -51,7 +51,7 @@ public S fireEvent(S sourceStateId, E event, C ctx) {

if (transition == null) {
Debugger.debug("There is no Transition for " + event);
failoverCallback.onFailover(sourceStateId, event, ctx);
failCallback.onFail(sourceStateId, event, ctx);
return sourceStateId;
}

Expand Down Expand Up @@ -131,7 +131,7 @@ public void setReady(boolean ready) {
this.ready = ready;
}

public void setFailoverCallback(FailoverCallback<S, E, C> failoverCallback) {
this.failoverCallback = failoverCallback;
public void setFailCallback(FailCallback<S, E, C> failCallback) {
this.failCallback = failCallback;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import com.alibaba.cola.statemachine.Condition;
import com.alibaba.cola.statemachine.StateMachine;
import com.alibaba.cola.statemachine.StateMachineFactory;
import com.alibaba.cola.statemachine.builder.AlertFailoverCallbackImpl;
import com.alibaba.cola.statemachine.builder.AlertFailCallback;
import com.alibaba.cola.statemachine.builder.StateMachineBuilder;
import com.alibaba.cola.statemachine.builder.StateMachineBuilderFactory;
import com.alibaba.cola.statemachine.exception.TransitionFailoverException;
import com.alibaba.cola.statemachine.exception.TransitionFailException;

import org.junit.Assert;
import org.junit.Test;
Expand Down Expand Up @@ -58,7 +58,7 @@ public void testExternalNormal() {
}

@Test
public void testFailover() {
public void testFail() {
StateMachineBuilder<States, Events, Context> builder = StateMachineBuilderFactory.create();
builder.externalTransition()
.from(States.STATE1)
Expand All @@ -67,10 +67,10 @@ public void testFailover() {
.when(checkCondition())
.perform(doAction());

builder.setFailoverCallback(new AlertFailoverCallbackImpl<>());
builder.setFailCallback(new AlertFailCallback<>());

StateMachine<States, Events, Context> stateMachine = builder.build(MACHINE_ID + "-testFailover");
Assert.assertThrows(TransitionFailoverException.class,
StateMachine<States, Events, Context> stateMachine = builder.build(MACHINE_ID + "-testFail");
Assert.assertThrows(TransitionFailException.class,
() -> stateMachine.fireEvent(States.STATE2, Events.EVENT1, new Context()));
}

Expand Down

0 comments on commit 935b811

Please sign in to comment.