Return-Path: Delivered-To: apmail-incubator-cxf-commits-archive@locus.apache.org Received: (qmail 31452 invoked from network); 25 Apr 2007 02:29:43 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 25 Apr 2007 02:29:43 -0000 Received: (qmail 93264 invoked by uid 500); 25 Apr 2007 02:29:50 -0000 Delivered-To: apmail-incubator-cxf-commits-archive@incubator.apache.org Received: (qmail 93142 invoked by uid 500); 25 Apr 2007 02:29:49 -0000 Mailing-List: contact cxf-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cxf-dev@incubator.apache.org Delivered-To: mailing list cxf-commits@incubator.apache.org Received: (qmail 93132 invoked by uid 99); 25 Apr 2007 02:29:49 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 24 Apr 2007 19:29:49 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 24 Apr 2007 19:29:42 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 5A9521A9838; Tue, 24 Apr 2007 19:29:22 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r532173 - in /incubator/cxf/trunk: rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/LogicalMessageImpl.java systests/src/test/java/org/apache/cxf/systest/handlers/SmallNumberHandler.java Date: Wed, 25 Apr 2007 02:29:22 -0000 To: cxf-commits@incubator.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070425022922.5A9521A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dkulp Date: Tue Apr 24 19:29:21 2007 New Revision: 532173 URL: http://svn.apache.org/viewvc?view=rev&rev=532173 Log: Implement a couple of the LogicalMessage methods Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/LogicalMessageImpl.java incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/SmallNumberHandler.java Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/LogicalMessageImpl.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/LogicalMessageImpl.java?view=diff&rev=532173&r1=532172&r2=532173 ============================================================================== --- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/LogicalMessageImpl.java (original) +++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/LogicalMessageImpl.java Tue Apr 24 19:29:21 2007 @@ -24,10 +24,21 @@ import java.util.List; import javax.xml.bind.JAXBContext; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.Source; +import javax.xml.transform.dom.DOMSource; import javax.xml.ws.LogicalMessage; +import javax.xml.ws.WebServiceException; +import javax.xml.ws.soap.SOAPFaultException; + +import org.apache.cxf.interceptor.BareInInterceptor; +import org.apache.cxf.interceptor.BareOutInterceptor; import org.apache.cxf.message.Message; +import org.apache.cxf.staxutils.StaxUtils; +import org.apache.cxf.staxutils.W3CDOMStreamWriter; public class LogicalMessageImpl implements LogicalMessage { @@ -39,21 +50,58 @@ } public Source getPayload() { - return msgContext.getWrappedMessage().getContent(Source.class); + Source source = msgContext.getWrappedMessage().getContent(Source.class); + if (source == null) { + //need to convert + Exception ex = msgContext.getWrappedMessage().getContent(Exception.class); + if (ex instanceof SOAPFaultException) { + List list = new ArrayList(); + list.add(((SOAPFaultException)ex).getFault()); + msgContext.getWrappedMessage().setContent(List.class, list); + } + + W3CDOMStreamWriter writer; + try { + writer = new W3CDOMStreamWriter(); + } catch (ParserConfigurationException e) { + throw new WebServiceException(e); + } + XMLStreamWriter orig = msgContext.getWrappedMessage().getContent(XMLStreamWriter.class); + try { + msgContext.getWrappedMessage().setContent(XMLStreamWriter.class, writer); + BareOutInterceptor bi = new BareOutInterceptor(); + bi.handleMessage(msgContext.getWrappedMessage()); + } finally { + msgContext.getWrappedMessage().setContent(XMLStreamWriter.class, orig); + } + + source = new DOMSource(writer.getDocument().getDocumentElement()); + msgContext.getWrappedMessage().setContent(Source.class, source); + } + return source; } public void setPayload(Source s) { - msgContext.getWrappedMessage().setContent(Source.class, s); + msgContext.getWrappedMessage().setContent(Source.class, null); + XMLStreamReader orig = msgContext.getWrappedMessage().getContent(XMLStreamReader.class); + try { + XMLStreamReader reader = StaxUtils.createXMLStreamReader(s); + msgContext.getWrappedMessage().setContent(XMLStreamReader.class, reader); + BareInInterceptor bin = new BareInInterceptor(); + bin.handleMessage(msgContext.getWrappedMessage()); + } finally { + msgContext.getWrappedMessage().setContent(XMLStreamReader.class, orig); + } } public Object getPayload(JAXBContext arg0) { - // TODO - what to do with JAXB context? Message msg = msgContext.getWrappedMessage(); if (msg.getContent(List.class) != null) { return msg.getContent(List.class).get(0); } else if (msg.getContent(Object.class) != null) { return msg.getContent(Object.class); } + // TODO - what to do with JAXB context? return null; } Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/SmallNumberHandler.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/SmallNumberHandler.java?view=diff&rev=532173&r1=532172&r2=532173 ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/SmallNumberHandler.java (original) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/SmallNumberHandler.java Tue Apr 24 19:29:21 2007 @@ -24,8 +24,10 @@ import javax.annotation.Resource; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; +import javax.xml.transform.Source; import javax.xml.ws.LogicalMessage; import javax.xml.ws.ProtocolException; +import javax.xml.ws.WebServiceException; import javax.xml.ws.handler.LogicalHandler; import javax.xml.ws.handler.LogicalMessageContext; import javax.xml.ws.handler.MessageContext; @@ -87,6 +89,13 @@ AddNumbersResponse resp = new AddNumbersResponse(); resp.setReturn(answer); msg.setPayload(resp, jaxbContext); + + Source src = msg.getPayload(); + msg.setPayload(src); + AddNumbersResponse resp2 = (AddNumbersResponse)msg.getPayload(jaxbContext); + if (resp2 == resp) { + throw new WebServiceException("Shouldn't be the same object"); + } // finally, return false, indicating that request // processing stops here and our answer will be