package test.jaxrpc; import javax.xml.namespace.QName; import javax.xml.rpc.handler.Handler; import javax.xml.rpc.handler.HandlerInfo; import javax.xml.rpc.handler.MessageContext; import java.util.Map; public class AAAHandler implements Handler { private int handleRequestInvocations = 0; private int handleResponseInvocations = 0; private int handleFaultInvocations = 0; public Object handleRequestReturnValue = null; public Object handleResponseReturnValue = null; public Object handleFaultReturnValue = null; public boolean handleRequest(MessageContext context) { handleRequestInvocations++; return returnAppropriateValue(handleRequestReturnValue); } public boolean handleResponse(MessageContext context) { handleResponseInvocations++; return returnAppropriateValue(handleResponseReturnValue); } public boolean handleFault(MessageContext context) { handleFaultInvocations++; return returnAppropriateValue(handleFaultReturnValue); } private boolean returnAppropriateValue(Object returnValue) { if (returnValue == null) return true; else if (returnValue instanceof Boolean) return ((Boolean) returnValue).booleanValue(); else if (returnValue instanceof RuntimeException) throw (RuntimeException) returnValue; else { throw new RuntimeException(); } } public void init(HandlerInfo config) { Map map = config.getHandlerConfig(); handleRequestReturnValue = map.get("HANDLE_REQUEST_RETURN_VALUE"); handleResponseReturnValue = map.get("HANDLE_RESPONSE_RETURN_VALUE"); handleFaultReturnValue = map.get("HANDLE_FAULT_RETURN_VALUE"); } public void destroy() { } public QName[] getHeaders() { return new QName[0]; } public int getHandleRequestInvocations() { return handleRequestInvocations; } public int getHandleResponseInvocations() { return handleResponseInvocations; } public int getHandleFaultInvocations() { return handleFaultInvocations; } public Object getHandleRequestReturnValue() { return handleRequestReturnValue; } public void setHandleRequestReturnValue(Object handleRequestReturnValue) { this.handleRequestReturnValue = handleRequestReturnValue; } public Object getHandleResponseReturnValue() { return handleResponseReturnValue; } public void setHandleResponseReturnValue(Object handleResponseReturnValue) { this.handleResponseReturnValue = handleResponseReturnValue; } public Object getHandleFaultReturnValue() { return handleFaultReturnValue; } public void setHandleFaultReturnValue(Object handleFaultReturnValue) { this.handleFaultReturnValue = handleFaultReturnValue; } }