Return-Path: Delivered-To: apmail-incubator-cxf-commits-archive@locus.apache.org Received: (qmail 73445 invoked from network); 11 Jan 2007 02:33:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 11 Jan 2007 02:33:09 -0000 Received: (qmail 7145 invoked by uid 500); 11 Jan 2007 02:33:15 -0000 Delivered-To: apmail-incubator-cxf-commits-archive@incubator.apache.org Received: (qmail 7090 invoked by uid 500); 11 Jan 2007 02:33:15 -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 7081 invoked by uid 99); 11 Jan 2007 02:33:15 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Jan 2007 18:33:15 -0800 X-ASF-Spam-Status: No, hits=-8.6 required=10.0 tests=ALL_TRUSTED,INFO_TLD,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; Wed, 10 Jan 2007 18:33:07 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 734EC1A981A; Wed, 10 Jan 2007 18:32:07 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r495092 - in /incubator/cxf/trunk: rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java systests/src/test/java/org/apache/cxf/systest/basicDOCBare/DOCBareClientServerTest.java Date: Thu, 11 Jan 2007 02:32:07 -0000 To: cxf-commits@incubator.apache.org From: ema@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070111023207.734EC1A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: ema Date: Wed Jan 10 18:32:06 2007 New Revision: 495092 URL: http://svn.apache.org/viewvc?view=rev&rev=495092 Log: [CXF-351] Fixed dispatch doc bare operation with no input issue Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/basicDOCBare/DOCBareClientServerTest.java Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java?view=diff&rev=495092&r1=495091&r2=495092 ============================================================================== --- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java (original) +++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java Wed Jan 10 18:32:06 2007 @@ -28,6 +28,7 @@ import java.util.logging.Logger; import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamReader; import org.apache.cxf.common.i18n.BundleUtils; import org.apache.cxf.databinding.DataReader; @@ -38,6 +39,7 @@ import org.apache.cxf.service.Service; import org.apache.cxf.service.model.BindingMessageInfo; import org.apache.cxf.service.model.BindingOperationInfo; +import org.apache.cxf.service.model.MessageInfo; //import org.apache.cxf.service.model.MessageInfo; import org.apache.cxf.service.model.MessagePartInfo; import org.apache.cxf.service.model.OperationInfo; @@ -49,12 +51,12 @@ private static final ResourceBundle BUNDLE = BundleUtils.getBundle(BareInInterceptor.class); private static Set filter = new HashSet(); - + static { filter.add("void"); filter.add("javax.activation.DataHandler"); } - + public BareInInterceptor() { super(); setPhase(Phase.UNMARSHAL); @@ -62,10 +64,10 @@ } public void handleMessage(Message message) { - if (isGET(message) && message.getContent(List.class) != null) { + if (isGET(message) && message.getContent(List.class) != null) { LOG.info("BareInInterceptor skipped in HTTP GET method"); return; - } + } DepthXMLStreamReader xmlReader = getXMLStreamReader(message); Exchange exchange = message.getExchange(); @@ -80,13 +82,27 @@ // the message? //MessageInfo msgInfo = message.get(MessageInfo.class); BindingMessageInfo msgInfo = null; - + boolean client = isRequestor(message); - + Collection ops = null; if (bop == null) { ops = new ArrayList(); ops.addAll(service.getServiceInfo().getInterface().getOperations()); + if (xmlReader.getEventType() == XMLStreamReader.END_ELEMENT && !client) { + //empty input + //TO DO : check duplicate operation with no input + for (OperationInfo op : ops) { + MessageInfo bmsg = op.getInput(); + if (bmsg.getMessageParts().size() == 0) { + BindingOperationInfo boi = ep.getEndpointInfo().getBinding().getOperation(op); + exchange.put(BindingOperationInfo.class, boi); + exchange.put(OperationInfo.class, op); + exchange.setOneWay(op.isOneWay()); + } + } + + } } else if (msgInfo == null) { // XXX - Is the call to // AbstractInDatabindingInterceptor.getMessageInfo() @@ -100,12 +116,14 @@ msgInfo = bop.getInput(); } } - + int paramNum = 0; + + while (StaxUtils.toNextElement(xmlReader)) { QName elName = xmlReader.getName(); Object o = null; - + MessagePartInfo p; if (msgInfo != null && msgInfo.getMessageParts() != null) { assert msgInfo.getMessageParts().size() > paramNum; @@ -117,16 +135,14 @@ if (p == null) { throw new Fault(new org.apache.cxf.common.i18n.Message("NO_PART_FOUND", BUNDLE, elName)); } - + o = dr.read(p, message); - + if (o != null) { parameters.add(o); } paramNum++; } - if (parameters.size() > 0) { - message.setContent(List.class, parameters); - } + message.setContent(List.class, parameters); } } Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/basicDOCBare/DOCBareClientServerTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/basicDOCBare/DOCBareClientServerTest.java?view=diff&rev=495092&r1=495091&r2=495092 ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/basicDOCBare/DOCBareClientServerTest.java (original) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/basicDOCBare/DOCBareClientServerTest.java Wed Jan 10 18:32:06 2007 @@ -63,6 +63,9 @@ PutLastTradedPricePortType putLastTradedPrice = service.getPort(portName, PutLastTradedPricePortType.class); + String response = putLastTradedPrice.bareNoParam(); + assertEquals("testResponse", response); + TradePriceData priceData = new TradePriceData(); priceData.setTickerPrice(1.0f); priceData.setTickerSymbol("CELTIX");