package org.distributeme.core.util; import org.distributeme.core.AbstractCallContext; import org.distributeme.core.routing.Constants; import java.util.Map; /** * This utility helps server side to find out more information about what is happening. * * @author lrosenberg * @since 23.09.15 14:29 * @version $Id: $Id */ public class ServerSideUtils { /** * Returns true if current call is failover. * * @return a boolean. */ public static final boolean isFailoverCall(){ Map transportableCallContext = AbstractCallContext.getCurrentTransportableCallContext(); if (transportableCallContext == null){ return false; } //some routers add callCount: Integer callCount = (Integer)transportableCallContext.get(Constants.ATT_CALL_COUNT); if (callCount != null && callCount > 0) return true; if (_isBlacklisted(transportableCallContext)) return true; //further possibilites return false; } /** * <p>isBlacklisted.</p> * * @return a boolean. */ public static final boolean isBlacklisted() { Map transportableCallContext = AbstractCallContext.getCurrentTransportableCallContext(); if (transportableCallContext == null) { return false; } return _isBlacklisted(transportableCallContext); } private static final boolean _isBlacklisted(Map transportableCallContext){ Boolean blacklistedFlag = (Boolean)transportableCallContext.get(Constants.ATT_BLACKLISTED); return blacklistedFlag != null && blacklistedFlag; } }