package org.distributeme.core.failing; /** * Possible decisions that a failing strategy can make. * * @author lrosenberg * @version $Id: $Id */ public class FailDecision { /** * Reaction on failure. */ public static enum Reaction{ /** * Simply fail. */ FAIL, /** * Retry. */ RETRY, /** * Retry but max once. */ RETRYONCE, } /** * Reaction for this decision, what should the stub do as next. */ private Reaction reaction; /** * The service to apply reaction to, this may be a backup instance for retry or retryonce. */ private String targetService; /** * Creates a new fail decision with given reaction. * * @param aReaction a {@link org.distributeme.core.failing.FailDecision.Reaction} object. */ public FailDecision(Reaction aReaction){ reaction = aReaction; } /** * Creates a new fail decision with given reaction and target service. * * @param aReaction a {@link org.distributeme.core.failing.FailDecision.Reaction} object. * @param aTargetService a {@link java.lang.String} object. */ public FailDecision(Reaction aReaction, String aTargetService){ reaction = aReaction; targetService = aTargetService; } /** * <p>Getter for the field <code>reaction</code>.</p> * * @return a {@link org.distributeme.core.failing.FailDecision.Reaction} object. */ public Reaction getReaction(){ return reaction; } /** * <p>Getter for the field <code>targetService</code>.</p> * * @return a {@link java.lang.String} object. */ public String getTargetService() { return targetService; } /** * <p>Setter for the field <code>targetService</code>.</p> * * @param targetService a {@link java.lang.String} object. */ public void setTargetService(String targetService) { this.targetService = targetService; } /** * Factory method for fail reaction. * * @return a {@link org.distributeme.core.failing.FailDecision} object. */ public static final FailDecision fail(){ return new FailDecision(Reaction.FAIL); } /** * Factory method for retry reaction. * * @return a {@link org.distributeme.core.failing.FailDecision} object. */ public static final FailDecision retry(){ return new FailDecision(Reaction.RETRY); } /** * Factory method for retryOnce reaction. * * @return a {@link org.distributeme.core.failing.FailDecision} object. */ public static final FailDecision retryOnce(){ return new FailDecision(Reaction.RETRYONCE); } }