Author: asankha Date: Thu Jan 3 02:49:32 2008 New Revision: 608436 URL: http://svn.apache.org/viewvc?rev=608436&view=rev Log: fix SYNAPSE-168 and SYNAPSE-188
Modified: webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java Modified: webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java?rev=608436&r1=608435&r2=608436&view=diff ============================================================================== --- webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java (original) +++ webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java Thu Jan 3 02:49:32 2008 @@ -352,6 +352,37 @@ } case HttpStatus.SC_OK : { processResponse(conn, context, response); + return; + } + default : { + log.warn("Unexpected HTTP status code received : " + + response.getStatusLine().getStatusCode() + " :: " + + response.getStatusLine().getReasonPhrase()); + + Header contentType = response.getFirstHeader(CONTENT_TYPE); + if (contentType != null) { + if ((contentType.getValue().indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) >= 0) || + contentType.getValue().indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) >=0) { + if (log.isDebugEnabled()) { + log.debug("Received an unexpected response with a SOAP payload"); + } + } else if (contentType.getValue().indexOf("html") == -1) { + if (log.isDebugEnabled()) { + log.debug("Received an unexpected response with a POX/REST payload"); + } + } else { + log.error("Received an unexpected response - of content type : " + + contentType.getValue() + " and status code : " + + response.getStatusLine().getStatusCode() + " with reason : " + + response.getStatusLine().getReasonPhrase()); + } + } else { + log.error("Received an unexpected response - of unknown content type " + + " with status code : " + + response.getStatusLine().getStatusCode() + " and reason : " + + response.getStatusLine().getReasonPhrase()); + } + processResponse(conn, context, response); } } } Modified: webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java?rev=608436&r1=608435&r2=608436&view=diff ============================================================================== --- webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java (original) +++ webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java Thu Jan 3 02:49:32 2008 @@ -27,7 +27,9 @@ import org.apache.axis2.wsdl.WSDLConstants; import org.apache.axis2.engine.AxisEngine; import org.apache.axis2.transport.TransportUtils; -import org.apache.axiom.soap.SOAPEnvelope; +import org.apache.axiom.soap.*; +import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory; +import org.apache.axiom.om.OMException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.HttpResponse; @@ -154,10 +156,26 @@ // question is still under debate and due to the timelines, I am commiting this // workaround as Axis2 1.2 is about to be released and Synapse 1.0 responseMsgCtx.setServerSide(false); - envelope = TransportUtils.createSOAPMessage( + try { + envelope = TransportUtils.createSOAPMessage( responseMsgCtx, in, contentType); + } catch (OMException e) { + // handle non SOAP and POX/REST payloads (probably text/html) + log.error("Unexpected response received", e); + SOAPFactory factory = new SOAP11Factory(); + envelope = factory.getDefaultFaultEnvelope(); + SOAPFaultDetail detail = factory.createSOAPFaultDetail(); + detail.setText("Unexpected response received : " + e.getMessage()); + envelope.getBody().getFault().setDetail(detail); + SOAPFaultReason reason = factory.createSOAPFaultReason(); + reason.setText(this.response.getStatusLine().getReasonPhrase()); + envelope.getBody().getFault().setReason(reason); + SOAPFaultCode code = factory.createSOAPFaultCode(); + code.setText(Integer.toString(this.response.getStatusLine().getStatusCode())); + envelope.getBody().getFault().setCode(code); + } responseMsgCtx.setServerSide(true); responseMsgCtx.setEnvelope(envelope); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]