Author: indika Date: Wed Dec 17 10:32:20 2008 New Revision: 27149 URL: http://wso2.org/svn/browse/wso2?view=rev&revision=27149
Log: fix for CARBON-877 Modified: branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java Modified: branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java?rev=27149&r1=27148&r2=27149&view=diff ============================================================================== --- branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java (original) +++ branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java Wed Dec 17 10:32:20 2008 @@ -338,6 +338,8 @@ // Endpoint failures public static final int ENDPOINT_LB_NONE_READY = 303000; public static final int ENDPOINT_FO_NONE_READY = 303000; + public static final int ENDPOINT_ADDRESS_NONE_READY = 303001; + public static final int ENDPOINT_WSDL_NONE_READY = 303002; // Failure on endpoint in the session public static final int ENDPOINT_SAL_NOT_READY = 309001; public static final int ENDPOINT_SAL_INVALID_PATH = 309002; Modified: branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java?rev=27149&r1=27148&r2=27149&view=diff ============================================================================== --- branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java (original) +++ branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java Wed Dec 17 10:32:20 2008 @@ -294,16 +294,7 @@ * @param synCtx the message at hand */ public void onFault(MessageContext synCtx) { - Stack faultStack = synCtx.getFaultStack(); - if (!faultStack.isEmpty()) { - Object faultHandler = faultStack.pop(); - if (faultHandler instanceof Endpoint) { - // This is the parent . need to inform parent with fault child - ((Endpoint) faultHandler).onChildEndpointFail(this, synCtx); - } else { - ((FaultHandler) faultHandler).handleFault(synCtx); - } - } + invokeNextFaultHandler(synCtx); } /** @@ -444,10 +435,29 @@ protected void informFailure(MessageContext synCtx, int errorCode, String errorMsg) { if (synCtx.getProperty(SynapseConstants.LAST_ENDPOINT) == null) { - synCtx.setProperty(SynapseConstants.ERROR_CODE, errorCode); - synCtx.setProperty(SynapseConstants.ERROR_MESSAGE, errorMsg); - synCtx.setProperty(SynapseConstants.ERROR_DETAIL, errorMsg); + setErrorOnMessage(synCtx, String.valueOf(errorCode), errorMsg); + } + invokeNextFaultHandler(synCtx); + } + + private void invokeNextFaultHandler(MessageContext synCtx) { + + Stack faultStack = synCtx.getFaultStack(); + if (!faultStack.isEmpty()) { + Object faultHandler = faultStack.pop(); + if (faultHandler instanceof Endpoint) { + // This is the parent . need to inform parent with fault child + ((Endpoint) faultHandler).onChildEndpointFail(this, synCtx); + } else { + ((FaultHandler) faultHandler).handleFault(synCtx); + } } - onFault(synCtx); + } + + protected void setErrorOnMessage(MessageContext synCtx, String errorCode, String errorMsg) { + + synCtx.setProperty(SynapseConstants.ERROR_CODE, errorCode); + synCtx.setProperty(SynapseConstants.ERROR_MESSAGE, errorMsg); + synCtx.setProperty(SynapseConstants.ERROR_DETAIL, errorMsg); } } Modified: branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java?rev=27149&r1=27148&r2=27149&view=diff ============================================================================== --- branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java (original) +++ branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java Wed Dec 17 10:32:20 2008 @@ -19,12 +19,8 @@ package org.apache.synapse.endpoints; -import org.apache.axis2.clustering.ClusterManager; -import org.apache.axis2.context.ConfigurationContext; import org.apache.synapse.MessageContext; import org.apache.synapse.SynapseConstants; -import org.apache.synapse.core.axis2.Axis2MessageContext; -import org.apache.synapse.endpoints.EndpointDefinition; /** * This class represents an actual endpoint to send the message. It is responsible for sending the @@ -41,16 +37,23 @@ } else if (isSuspendFault(synCtx)) { getContext().onFault(); } - // this should be an ignored error if we get here - synCtx.setProperty(SynapseConstants.ERROR_CODE, null); - synCtx.setProperty(SynapseConstants.ERROR_MESSAGE, null); - synCtx.setProperty(SynapseConstants.ERROR_DETAIL, null); - synCtx.setProperty(SynapseConstants.ERROR_EXCEPTION, null); + setErrorOnMessage(synCtx, null, null); super.onFault(synCtx); } public void onSuccess() { getContext().onSuccess(); } + + public void send(MessageContext synCtx) { + + if (getParentEndpoint() == null && !readyToSend()) { + // if the this leaf endpoint is too a root endpoint and is in inactive + informFailure(synCtx, SynapseConstants.ENDPOINT_ADDRESS_NONE_READY, + "Currently , Address endpoint : " + getContext()); + } else { + super.send(synCtx); + } + } } Modified: branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java?rev=27149&r1=27148&r2=27149&view=diff ============================================================================== --- branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java (original) +++ branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java Wed Dec 17 10:32:20 2008 @@ -23,9 +23,8 @@ import org.apache.axis2.context.ConfigurationContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.synapse.SynapseException; import org.apache.synapse.SynapseConstants; -import org.apache.synapse.endpoints.EndpointDefinition; +import org.apache.synapse.SynapseException; import java.util.Date; @@ -479,4 +478,11 @@ log.error(msg, e); throw new SynapseException(msg, e); } + + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("[ Name : ").append(endpointName). + append(" ] [ State : ").append(getStateAsString()).append(" ]"); + return sb.toString(); + } } \ No newline at end of file Modified: branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java?rev=27149&r1=27148&r2=27149&view=diff ============================================================================== --- branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java (original) +++ branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java Wed Dec 17 10:32:20 2008 @@ -20,11 +20,8 @@ package org.apache.synapse.endpoints; import org.apache.axiom.om.OMElement; -import org.apache.axis2.clustering.ClusterManager; -import org.apache.axis2.context.ConfigurationContext; import org.apache.synapse.MessageContext; import org.apache.synapse.SynapseConstants; -import org.apache.synapse.core.axis2.Axis2MessageContext; /** * WSDLEndpoint represents the endpoints built using a WSDL document. It stores the details about @@ -49,6 +46,7 @@ } else if (isSuspendFault(synCtx)) { getContext().onFault(); } + setErrorOnMessage(synCtx, null, null); super.onFault(synCtx); } @@ -56,6 +54,17 @@ getContext().onSuccess(); } + public void send(MessageContext synCtx) { + + if (getParentEndpoint() == null && !readyToSend()) { + // if the this leaf endpoint is too a root endpoint and is in inactive + informFailure(synCtx, SynapseConstants.ENDPOINT_ADDRESS_NONE_READY, + "Currently , WSDL endpoint : " + getContext()); + } else { + super.send(synCtx); + } + } + public String getWsdlURI() { return wsdlURI; } _______________________________________________ Esb-java-dev mailing list [email protected] https://wso2.org/cgi-bin/mailman/listinfo/esb-java-dev
