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;
}