All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.statusmachina.core.api.TransitionException Maven / Gradle / Ivy

Go to download

Core functionality for Status Machina, a small, simple and pragmatic state machine for resilient microservices orchestration.

The newest version!
/*
 *  Copyright 2019 <---> Present Status Machina Contributors (https://github.com/entzik/status-machina/graphs/contributors)
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  This software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 *  CONDITIONS OF ANY KIND, either express or implied. See the License for the
 *  specific language governing permissions and limitations under the License.
 *
 */

package io.statusmachina.core.api;

/**
 * exception thrown when a state machine exeption fails
 */
public class TransitionException extends RuntimeException {
    private final Machine machineInstance;
    private final Transition transition;
    private ErrorType errorType;

    /**
     * transition exception that wraps an underlying exception
     */
    public TransitionException(ErrorType errorType, Throwable cause) {
        super(cause);
        this.errorType = errorType;
        this.machineInstance = null;
        this.transition = null;

    }

    /**
     * @param machineInstance the affected state machine
     * @param transition the transition that fails
     * @param  the state type
     * @param  the event type
     */
    public  TransitionException(Machine machineInstance, Transition transition, ErrorType errorType) {
        this.machineInstance = machineInstance;
        this.transition = transition;
        this.errorType = errorType;
    }

    /**
     * @param machineInstance the affected state machine
     * @param transition the transition that fails
     * @param cause the downstream exception that caused the transition to fail
     * @param  the state type
     * @param  the event type
     */
    public  TransitionException(Machine machineInstance, Transition transition, ErrorType errorType, Throwable cause) {
        super(cause);
        this.machineInstance = machineInstance;
        this.transition = transition;
        this.errorType = errorType;
    }

    /**
     * @return the affected machine
     */
    public Machine getMachineInstance() {
        return machineInstance;
    }

    /**
     * @return transition that failed
     */
    public Transition getTransition() {
        return transition;
    }

    public ErrorType getErrorType() {
        return errorType;
    }
}