You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by in...@apache.org on 2008/12/18 06:38:32 UTC

svn commit: r727648 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: SynapseConstants.java endpoints/AbstractEndpoint.java endpoints/AddressEndpoint.java endpoints/EndpointContext.java endpoints/WSDLEndpoint.java

Author: indika
Date: Wed Dec 17 21:38:32 2008
New Revision: 727648

URL: http://svn.apache.org/viewvc?rev=727648&view=rev
Log:
Fixed an issue - JMX switch off doesn’t work due to a leaf level endpoint (wsdl / address) become root endpoint too (when there are only address or wsdl endpoint - no LB or FO endpoint with address endpoints as children).


Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java?rev=727648&r1=727647&r2=727648&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java Wed Dec 17 21:38:32 2008
@@ -322,6 +322,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: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java?rev=727648&r1=727647&r2=727648&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java Wed Dec 17 21:38:32 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);
     }
 
     /**
@@ -419,10 +410,30 @@
     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);
+    }
+
+
+    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);
+    }
+
+    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);
     }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java?rev=727648&r1=727647&r2=727648&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java Wed Dec 17 21:38:32 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
@@ -35,22 +31,32 @@
 
     public void onFault(MessageContext synCtx) {
 
-        // is this really a fault or a timeout/connection close etc?
-        if (isTimeout(synCtx)) {
-            getContext().onTimeout();
-        } else if (isSuspendFault(synCtx)) {
-            getContext().onFault();
+        // is this an actual leaf endpoint 
+        if (getParentEndpoint() != null) {
+            // is this really a fault or a timeout/connection close etc?
+            if (isTimeout(synCtx)) {
+                getContext().onTimeout();
+            } 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: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java?rev=727648&r1=727647&r2=727648&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java Wed Dec 17 21:38:32 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);
     }
-}
\ No newline at end of file
+
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("[ Name : ").append(endpointName).
+                append(" ] [ State : ").append(getStateAsString()).append(" ]");
+        return sb.toString();
+    }
+}

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java?rev=727648&r1=727647&r2=727648&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java Wed Dec 17 21:38:32 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
@@ -43,12 +40,18 @@
     private String portName;
 
     public void onFault(MessageContext synCtx) {
-        // is this really a fault or a timeout/connection close etc?
-        if (isTimeout(synCtx)) {
-            getContext().onTimeout();
-        } else if (isSuspendFault(synCtx)) {
-            getContext().onFault();
+        
+        // is this an actual leaf endpoint
+        if (getParentEndpoint() != null) {
+            // is this really a fault or a timeout/connection close etc?
+            if (isTimeout(synCtx)) {
+                getContext().onTimeout();
+            } else if (isSuspendFault(synCtx)) {
+                getContext().onFault();
+            }
         }
+        
+        setErrorOnMessage(synCtx, null, null);
         super.onFault(synCtx);
     }
 
@@ -56,6 +59,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;
     }