From commits-return-11177-apmail-cxf-commits-archive=cxf.apache.org@cxf.apache.org Mon Feb 22 20:58:37 2010 Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 21674 invoked from network); 22 Feb 2010 20:58:36 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 22 Feb 2010 20:58:36 -0000 Received: (qmail 34219 invoked by uid 500); 22 Feb 2010 20:58:36 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 34142 invoked by uid 500); 22 Feb 2010 20:58:36 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 34133 invoked by uid 99); 22 Feb 2010 20:58:35 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 22 Feb 2010 20:58:35 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 22 Feb 2010 20:58:33 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id CE3B423889DD; Mon, 22 Feb 2010 20:58:11 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r915057 - in /cxf/trunk: api/src/main/java/org/apache/cxf/transport/ rt/core/src/main/java/org/apache/cxf/interceptor/ rt/core/src/main/java/org/apache/cxf/transport/ rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jett... Date: Mon, 22 Feb 2010 20:58:11 -0000 To: commits@cxf.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100222205811.CE3B423889DD@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dkulp Date: Mon Feb 22 20:58:11 2010 New Revision: 915057 URL: http://svn.apache.org/viewvc?rev=915057&view=rev Log: Remove ws-a stuff from destinations. Modified: cxf/trunk/api/src/main/java/org/apache/cxf/transport/Destination.java cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/OutgoingChainInterceptor.java cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractDestination.java cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java Modified: cxf/trunk/api/src/main/java/org/apache/cxf/transport/Destination.java URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/transport/Destination.java?rev=915057&r1=915056&r2=915057&view=diff ============================================================================== --- cxf/trunk/api/src/main/java/org/apache/cxf/transport/Destination.java (original) +++ cxf/trunk/api/src/main/java/org/apache/cxf/transport/Destination.java Mon Feb 22 20:58:11 2010 @@ -39,18 +39,15 @@ * Retreive a back-channel Conduit, which must be policy-compatible * with the current Message and associated Destination. For example * compatible Quality of Protection must be asserted on the back-channel. - * This would generally only be an issue if the back-channel is decoupled. * - * @param inMessage the current message (null to indicate a disassociated - * back-channel. - * @param partialResponse in the decoupled case, this is expected to be the - * outbound Message to be sent over the in-built back-channel. - * @param address the backchannel address (null to indicate anonymous) + * @param inMessage the current message + * @param unused1 - will likely always be null + * @param unused2 - will likely always be null * @return a suitable Conduit */ Conduit getBackChannel(Message inMessage, - Message partialResponse, - EndpointReferenceType address) + Message unused1, + EndpointReferenceType unused2) throws IOException; /** Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/OutgoingChainInterceptor.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/OutgoingChainInterceptor.java?rev=915057&r1=915056&r2=915057&view=diff ============================================================================== --- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/OutgoingChainInterceptor.java (original) +++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/OutgoingChainInterceptor.java Mon Feb 22 20:58:11 2010 @@ -43,7 +43,6 @@ import org.apache.cxf.service.model.BindingOperationInfo; import org.apache.cxf.service.model.MessageInfo; import org.apache.cxf.transport.Conduit; -import org.apache.cxf.ws.addressing.EndpointReferenceType; public class OutgoingChainInterceptor extends AbstractPhaseInterceptor { private static final Logger LOG = LogUtils.getL7dLogger(OutgoingChainInterceptor.class); @@ -83,9 +82,7 @@ if (ex.getConduit(message) == null && ex.getDestination() != null) { try { - EndpointReferenceType target = - ex.get(EndpointReferenceType.class); - conduit = ex.getDestination().getBackChannel(ex.getInMessage(), null, target); + conduit = ex.getDestination().getBackChannel(ex.getInMessage(), null, null); ex.put(ConduitSelector.class, new PreexistingConduitSelector(conduit, ex.get(Endpoint.class))); } catch (IOException e) { Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractDestination.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractDestination.java?rev=915057&r1=915056&r2=915057&view=diff ============================================================================== --- cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractDestination.java (original) +++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractDestination.java Mon Feb 22 20:58:11 2010 @@ -20,11 +20,9 @@ package org.apache.cxf.transport; import java.io.IOException; -import java.io.InputStream; import java.util.logging.Logger; import org.apache.cxf.Bus; -import org.apache.cxf.message.Exchange; import org.apache.cxf.message.Message; import org.apache.cxf.service.model.EndpointInfo; import org.apache.cxf.ws.addressing.EndpointReferenceType; @@ -38,9 +36,6 @@ public abstract class AbstractDestination extends AbstractObservable implements Destination, DestinationWithEndpoint { - public static final String PARTIAL_RESPONSE = AbstractDestination.class.getName() - + ".partial.response"; - protected final EndpointReferenceType reference; protected final EndpointInfo endpointInfo; protected final Bus bus; @@ -82,46 +77,8 @@ Message partialResponse, EndpointReferenceType address) throws IOException { - Conduit backChannel = null; - Exchange ex = inMessage.getExchange(); - EndpointReferenceType target = address != null - ? address - : ex.get(EndpointReferenceType.class); - if (target == null) { - backChannel = getInbuiltBackChannel(inMessage); - } else { - if (partialResponse != null) { - if (markPartialResponse(partialResponse, target)) { - backChannel = getInbuiltBackChannel(inMessage); - } - } else { - //this is a response targeting a decoupled endpoint. Treat it as a oneway so - //we don't wait for a response. - inMessage.getExchange().setOneWay(true); - ConduitInitiatorManager mgr = bus.getExtension(ConduitInitiatorManager.class); - if (mgr != null) { - ConduitInitiator conduitInitiator - = mgr.getConduitInitiatorForUri(target.getAddress().getValue()); - if (conduitInitiator != null) { - backChannel = conduitInitiator.getConduit(endpointInfo, target); - // ensure decoupled back channel input stream is closed - backChannel.setMessageObserver(new MessageObserver() { - public void onMessage(Message m) { - if (m.getContentFormats().contains(InputStream.class)) { - InputStream is = m.getContent(InputStream.class); - try { - is.close(); - } catch (Exception e) { - // ignore - } - } - } - }); - } - } - } - } - return backChannel; + + return getInbuiltBackChannel(inMessage); } /** @@ -132,25 +89,6 @@ } /** - * Mark message as a partial message. Only required if decoupled - * mode is supported. - * - * @param partialResponse the partial response message - * @param the decoupled target - * @return true iff partial responses are supported - */ - protected boolean markPartialResponse(Message partialResponse, - EndpointReferenceType decoupledTarget) { - - partialResponse.getExchange().put(EndpointReferenceType.class, decoupledTarget); - partialResponse.put(PARTIAL_RESPONSE, Boolean.TRUE); - return true; - } - protected boolean isPartialResponse(Message m) { - return Boolean.TRUE.equals(m.get(PARTIAL_RESPONSE)); - } - - /** * @param inMessage the incoming message * @return the inbuilt backchannel */ Modified: cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java?rev=915057&r1=915056&r2=915057&view=diff ============================================================================== --- cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java (original) +++ cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java Mon Feb 22 20:58:11 2010 @@ -452,20 +452,19 @@ setUpInMessage(); Message partialResponse = setUpOutMessage(); + partialResponse.put(Message.PARTIAL_RESPONSE_MESSAGE, Boolean.TRUE); Conduit partialBackChannel = destination.getBackChannel(inMessage, partialResponse, replyTo); + partialBackChannel.prepare(partialResponse); assertEquals("unexpected response code", 202, partialResponse.get(Message.RESPONSE_CODE)); - partialBackChannel.prepare(partialResponse); verifyBackChannelSend(partialBackChannel, partialResponse, 202); outMessage = setUpOutMessage(); Conduit fullBackChannel = destination.getBackChannel(inMessage, null, replyTo); - assertSame("unexpected back channel", - decoupledBackChannel, - fullBackChannel); + fullBackChannel.prepare(outMessage); } Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java?rev=915057&r1=915056&r2=915057&view=diff ============================================================================== --- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java (original) +++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java Mon Feb 22 20:58:11 2010 @@ -61,6 +61,7 @@ import org.apache.cxf.message.Attachment; import org.apache.cxf.message.Exchange; import org.apache.cxf.message.Message; +import org.apache.cxf.message.MessageUtils; import org.apache.cxf.security.SecurityContext; import org.apache.cxf.service.model.EndpointInfo; import org.apache.cxf.transport.AbstractDestination; @@ -168,6 +169,9 @@ } protected void updateResponseHeaders(Message message) { + if (MessageUtils.isPartialResponse(message)) { + message.put(Message.RESPONSE_CODE, HttpURLConnection.HTTP_ACCEPTED); + } Map> responseHeaders = CastUtils.cast((Map)message.get(Message.PROTOCOL_HEADERS)); if (responseHeaders == null) { @@ -377,22 +381,6 @@ HttpServletResponse response = (HttpServletResponse)inMessage.get(HTTP_RESPONSE); return new BackChannelConduit(response); } - - /** - * Mark message as a partial message. - * - * @param partialResponse the partial response message - * @param the decoupled target - * @return true iff partial responses are supported - */ - protected final boolean markPartialResponse(Message partialResponse, - EndpointReferenceType decoupledTarget) { - // setup the outbound message to for 202 Accepted - super.markPartialResponse(partialResponse, decoupledTarget); - partialResponse.put(Message.RESPONSE_CODE, HttpURLConnection.HTTP_ACCEPTED); - return true; - } - private void initConfig() { PolicyEngine engine = bus.getExtension(PolicyEngine.class); @@ -515,7 +503,7 @@ copyResponseHeaders(outMessage, response); - if (oneWay && !isPartialResponse(outMessage)) { + if (oneWay && !MessageUtils.isPartialResponse(outMessage)) { response.setContentLength(0); response.flushBuffer(); response.getOutputStream().close(); @@ -562,6 +550,9 @@ * @param message the message to be sent. */ public void prepare(Message message) throws IOException { + if (MessageUtils.isPartialResponse(message)) { + message.put(Message.RESPONSE_CODE, HttpURLConnection.HTTP_ACCEPTED); + } message.put(HTTP_RESPONSE, response); OutputStream os = message.getContent(OutputStream.class); if (os == null) { Modified: cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java?rev=915057&r1=915056&r2=915057&view=diff ============================================================================== --- cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java (original) +++ cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java Mon Feb 22 20:58:11 2010 @@ -20,6 +20,8 @@ package org.apache.cxf.ws.addressing; +import java.io.IOException; +import java.io.InputStream; import java.util.UUID; import java.util.concurrent.Executor; import java.util.logging.Level; @@ -48,11 +50,15 @@ import org.apache.cxf.message.MessageImpl; import org.apache.cxf.service.model.BindingFaultInfo; import org.apache.cxf.service.model.BindingOperationInfo; +import org.apache.cxf.service.model.EndpointInfo; import org.apache.cxf.service.model.Extensible; import org.apache.cxf.service.model.FaultInfo; import org.apache.cxf.service.model.MessageInfo; import org.apache.cxf.transport.Conduit; +import org.apache.cxf.transport.ConduitInitiator; +import org.apache.cxf.transport.ConduitInitiatorManager; import org.apache.cxf.transport.Destination; +import org.apache.cxf.transport.MessageObserver; import org.apache.cxf.workqueue.OneShotAsyncExecutor; import org.apache.cxf.workqueue.SynchronousExecutor; import org.apache.cxf.workqueue.WorkQueueManager; @@ -342,7 +348,7 @@ * @param inMAPs the inbound MAPs * @param inMessage the current message */ - public static void rebaseResponse(EndpointReferenceType reference, + public static void rebaseResponse(final EndpointReferenceType reference, AddressingProperties inMAPs, final Message inMessage) { String namespaceURI = inMAPs.getNamespaceURI(); @@ -391,12 +397,52 @@ chain.reset(); } exchange.put(ConduitSelector.class, new NullConduitSelector()); - if (fullResponse != null) { - exchange.setOutMessage(fullResponse); - } else { + + if (fullResponse == null) { fullResponse = createMessage(exchange); - exchange.setOutMessage(fullResponse); } + exchange.setOutMessage(fullResponse); + final EndpointInfo ei = exchange.get(Endpoint.class).getEndpointInfo(); + exchange.setDestination(new Destination() { + public EndpointReferenceType getAddress() { + return reference; + } + public Conduit getBackChannel(Message inMessage, Message partialResponse, + EndpointReferenceType address) throws IOException { + Bus bus = inMessage.getExchange().get(Bus.class); + //this is a response targeting a decoupled endpoint. Treat it as a oneway so + //we don't wait for a response. + inMessage.getExchange().setOneWay(true); + ConduitInitiator conduitInitiator + = bus.getExtension(ConduitInitiatorManager.class) + .getConduitInitiatorForUri(reference.getAddress().getValue()); + if (conduitInitiator != null) { + Conduit c = conduitInitiator.getConduit(ei, reference); + // ensure decoupled back channel input stream is closed + c.setMessageObserver(new MessageObserver() { + public void onMessage(Message m) { + if (m.getContentFormats().contains(InputStream.class)) { + InputStream is = m.getContent(InputStream.class); + try { + is.close(); + } catch (Exception e) { + // ignore + } + } + } + }); + return c; + } + return null; + } + public MessageObserver getMessageObserver() { + return null; + } + public void shutdown() { + } + public void setMessageObserver(MessageObserver observer) { + } + }); if (retrieveAsyncPostResponseDispatch(inMessage)) { //need to suck in all the data from the input stream as