I'll look into this. Azeez
On Sun, Dec 13, 2009 at 5:36 PM, Andreas Veithen <andreas.veit...@gmail.com>wrote: > Afkham, > > Your change in createDocumentElement causes a regression detected by > the unit tests of the Synapse NHTTP transport. The failing test cases > send POST requests with plain XML and content type application/xml to > the NHTTP transport receiver. Because of your change, the service now > receives an empty message. > > Andreas > > On Wed, Dec 9, 2009 at 22:25, <az...@apache.org> wrote: > > Author: azeez > > Date: Wed Dec 9 21:25:21 2009 > > New Revision: 888980 > > > > URL: http://svn.apache.org/viewvc?rev=888980&view=rev > > Log: > > If it is a REST request and the service or operation cannot be found, do > not consume the input stream > > > > Modified: > > > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java > > > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java > > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java?rev=888980&r1=888979&r2=888980&view=diff > > > ============================================================================== > > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java > (original) > > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java > Wed Dec 9 21:25:21 2009 > > @@ -66,10 +66,10 @@ > > public static SOAPEnvelope createSOAPMessage(MessageContext > msgContext) throws AxisFault { > > return createSOAPMessage(msgContext, false); > > } > > - > > + > > /** > > * This method will create a SOAPEnvelope based on the InputStream > stored on > > - * the MessageContext. The 'detach' parameter controls whether or > not the > > + * the MessageContext. The 'detach' parameter controls whether or > not the > > * underlying DetachableInputStream is detached at the end of the > method. Note, > > * detaching the DetachableInputStream closes the underlying > InputStream that > > * is stored on the MessageContext. > > @@ -106,7 +106,7 @@ > > > msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, > charSetEnc); > > > > SOAPEnvelope env = createSOAPMessage(msgContext, inStream, > contentType); > > - > > + > > // if we were told to detach, we will make the call here, > this is only applicable > > // if a DetachableInputStream instance is found on the > MessageContext > > if(detach) { > > @@ -156,7 +156,9 @@ > > // SOAPEnvelope. > > SOAPFactory soapFactory = new SOAP11Factory(); > > envelope = soapFactory.getDefaultEnvelope(); > > - envelope.getBody().addChild(documentElement); > > + if (documentElement != null) { > > + envelope.getBody().addChild(documentElement); > > + } > > } > > return envelope; > > } > > @@ -164,6 +166,13 @@ > > public static OMElement createDocumentElement(String contentType, > > MessageContext > msgContext, > > InputStream inStream) > throws AxisFault, XMLStreamException { > > + // If we are handling a REST request, and the dispatchAndVerify > method was not able to > > + // locate the relevant service/operation, we should not try to > build a document element > > + if (msgContext.isDoingREST() && > > + (msgContext.getAxisService() == null || > msgContext.getAxisOperation() == null)) { > > + return null; > > + } > > + > > OMElement documentElement = null; > > String type = null; > > if (contentType != null) { > > @@ -191,7 +200,7 @@ > > Builder builder = BuilderUtil.getBuilderFromSelector(type, > msgContext); > > if (builder != null) { > > if (log.isDebugEnabled()) { > > - log.debug("createSOAPEnvelope using Builder (" + > > + log.debug("createSOAPEnvelope using Builder (" + > > builder.getClass() + ") selected from > type (" + type +")"); > > } > > documentElement = builder.processDocument(inStream, > contentType, msgContext); > > @@ -435,8 +444,8 @@ > > } > > return messageFormatterProperty; > > } > > - > > - > > + > > + > > /** > > * This is a helper method to get the response written flag from > the RequestResponseTransport > > * instance. > > @@ -456,7 +465,7 @@ > > return false; > > } > > } > > - > > + > > /** > > * This is a helper method to set the response written flag on > the RequestResponseTransport > > * instance. > > @@ -474,7 +483,7 @@ > > } > > } > > } > > - > > + > > /** > > * This is an internal helper method to retrieve the > RequestResponseTransport instance > > * from the MessageContext object. The MessageContext may be the > response MessageContext so > > @@ -484,7 +493,7 @@ > > try { > > // If this is the request MessageContext we should find > it directly by the getProperty() > > // method > > - if > (messageContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL) > > + if > (messageContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL) > > != null) { > > return (RequestResponseTransport) > messageContext.getProperty( > > > RequestResponseTransport.TRANSPORT_CONTROL); > > @@ -497,10 +506,10 @@ > > > getOperationContext().getMessageContext( > > > WSDLConstants.MESSAGE_LABEL_IN_VALUE).getProperty( > > > RequestResponseTransport.TRANSPORT_CONTROL); > > - } > > + } > > else { > > return null; > > - } > > + } > > } > > catch(AxisFault af) { > > // probably should not be fatal, so just log the message > > @@ -509,16 +518,16 @@ > > return null; > > } > > } > > - > > + > > /** > > - * Clean up cached attachment file > > + * Clean up cached attachment file > > * @param msgContext > > */ > > public static void deleteAttachments(MessageContext msgContext) { > > if (log.isDebugEnabled()) { > > log.debug("Entering deleteAttachments()"); > > } > > - > > + > > Attachments attachments = msgContext.getAttachmentMap(); > > LifecycleManager lcm = > (LifecycleManager)msgContext.getRootContext().getAxisConfiguration().getParameterValue(DeploymentConstants.ATTACHMENTS_LIFECYCLE_MANAGER); > > if (attachments != null) { > > @@ -555,7 +564,7 @@ > > > > if (file != null) { > > if(lcm!=null){ > > - try{ > > + try{ > > lcm.deleteOnExit(file); > > }catch(Exception ex){ > > file.deleteOnExit(); > > @@ -569,16 +578,16 @@ > > } > > } > > } > > - > > + > > if (log.isDebugEnabled()) { > > log.debug("Exiting deleteAttachments()"); > > } > > } > > - > > + > > /** > > * This method can be called by components wishing to detach the > DetachableInputStream > > * object that is present on the MessageContext. This is meant to > shield components > > - * from any logic that needs to be executed on the > DetachableInputStream in order to > > + * from any logic that needs to be executed on the > DetachableInputStream in order to > > * have it effectively detached. If the DetachableInputStream is > not present, or if > > * the supplied MessageContext is null, no action will be taken. > > */ > > @@ -597,7 +606,7 @@ > > if(log.isDebugEnabled()) { > > log.debug("Detach not performed for > MessageContext: " + msgContext); > > } > > - } > > + } > > } > > catch(Throwable t) { > > throw AxisFault.makeFault(t); > > @@ -642,8 +651,8 @@ > > if (msgContext.isServerSide()) { > > if (msgContext.isDoingMTOM()) { > > enableMTOM = true; > > - } > > - // in the client side, we enable MTOM if it is > optional > > + } > > + // in the client side, we enable MTOM if it is > optional > > } else { > > enableMTOM = true; > > } > > @@ -699,7 +708,7 @@ > > if (msgContext.isDoingREST()) { > > return true; > > } > > - > > + > > Object enableRESTProperty = > msgContext.getProperty(Constants.Configuration.ENABLE_REST); > > if (enableRESTProperty != null) { > > enableREST = JavaUtils.isTrueExplicitly(enableRESTProperty); > > @@ -739,3 +748,4 @@ > > } > > > > } > > + > > \ No newline at end of file > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@synapse.apache.org > For additional commands, e-mail: dev-h...@synapse.apache.org > > -- Thanks Afkham Azeez Blog: http://afkham.org Developer Portal: http://www.wso2.org WSAS Blog: http://wso2wsas.blogspot.com Company: http://wso2.com GPG Fingerprint: 643F C2AF EB78 F886 40C9 B2A2 4AE2 C887 665E 0760