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

Reply via email to