Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1F578957D for ; Mon, 11 Jun 2012 21:17:09 +0000 (UTC) Received: (qmail 27813 invoked by uid 500); 11 Jun 2012 21:17:09 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 27751 invoked by uid 500); 11 Jun 2012 21:17:09 -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 27743 invoked by uid 99); 11 Jun 2012 21:17:08 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 11 Jun 2012 21:17:08 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.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, 11 Jun 2012 21:17:05 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 8D91B2388865; Mon, 11 Jun 2012 21:16:44 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1349016 - in /cxf/trunk: api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/io/ rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ rt/transports/http/src/main/java/org/apache/cxf/transport/http/ s... Date: Mon, 11 Jun 2012 21:16:44 -0000 To: commits@cxf.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120611211644.8D91B2388865@eris.apache.org> Author: dkulp Date: Mon Jun 11 21:16:43 2012 New Revision: 1349016 URL: http://svn.apache.org/viewvc?rev=1349016&view=rev Log: [CXF-4371] Only block the flush for StaxOut based writing. Modified: cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java cxf/trunk/api/src/main/java/org/apache/cxf/io/AbstractWrappedOutputStream.java cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ElementWriter.java cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/aegis/AegisClientServerTest.java Modified: cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java?rev=1349016&r1=1349015&r2=1349016&view=diff ============================================================================== --- cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java (original) +++ cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/StaxOutInterceptor.java Mon Jun 11 21:16:43 2012 @@ -31,6 +31,7 @@ import javax.xml.stream.XMLStreamWriter; import org.apache.cxf.common.classloader.ClassLoaderUtils; import org.apache.cxf.common.i18n.BundleUtils; +import org.apache.cxf.io.AbstractWrappedOutputStream; import org.apache.cxf.message.Exchange; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageUtils; @@ -75,6 +76,7 @@ public class StaxOutInterceptor extends XMLOutputFactory factory = getXMLOutputFactory(message); if (factory == null) { if (writer == null) { + os = setupOutputStream(message, os); xwriter = StaxUtils.createXMLStreamWriter(os, encoding); } else { xwriter = StaxUtils.createXMLStreamWriter(writer); @@ -82,6 +84,7 @@ public class StaxOutInterceptor extends } else { synchronized (factory) { if (writer == null) { + os = setupOutputStream(message, os); xwriter = factory.createXMLStreamWriter(os, encoding); } else { xwriter = factory.createXMLStreamWriter(writer); @@ -103,6 +106,14 @@ public class StaxOutInterceptor extends // Add a final interceptor to write end elements message.getInterceptorChain().add(ENDING); } + private OutputStream setupOutputStream(Message message, OutputStream os) { + if (!(os instanceof AbstractWrappedOutputStream)) { + os = new AbstractWrappedOutputStream(os) { }; + } + ((AbstractWrappedOutputStream)os).allowFlush(false); + return os; + } + @Override public void handleFault(Message message) { super.handleFault(message); Modified: cxf/trunk/api/src/main/java/org/apache/cxf/io/AbstractWrappedOutputStream.java URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/io/AbstractWrappedOutputStream.java?rev=1349016&r1=1349015&r2=1349016&view=diff ============================================================================== --- cxf/trunk/api/src/main/java/org/apache/cxf/io/AbstractWrappedOutputStream.java (original) +++ cxf/trunk/api/src/main/java/org/apache/cxf/io/AbstractWrappedOutputStream.java Mon Jun 11 21:16:43 2012 @@ -31,10 +31,15 @@ public abstract class AbstractWrappedOut protected OutputStream wrappedStream; protected boolean written; + protected boolean allowFlush = true; protected AbstractWrappedOutputStream() { super(); } + protected AbstractWrappedOutputStream(OutputStream os) { + super(); + wrappedStream = os; + } @Override public void write(byte[] b, int off, int len) throws IOException { @@ -75,8 +80,12 @@ public abstract class AbstractWrappedOut @Override public void flush() throws IOException { - if (written && wrappedStream != null) { + if (written && wrappedStream != null && allowFlush) { wrappedStream.flush(); } } + + public void allowFlush(boolean b) { + this.allowFlush = b; + } } Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ElementWriter.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ElementWriter.java?rev=1349016&r1=1349015&r2=1349016&view=diff ============================================================================== --- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ElementWriter.java (original) +++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ElementWriter.java Mon Jun 11 21:16:43 2012 @@ -168,7 +168,6 @@ public class ElementWriter extends Abstr public void close() { try { writer.writeEndElement(); - writer.flush(); } catch (XMLStreamException e) { throw new DatabindingException("Error writing document.", e); } 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=1349016&r1=1349015&r2=1349016&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 Jun 11 21:16:43 2012 @@ -699,11 +699,6 @@ public abstract class AbstractHTTPDestin } */ } - - public void flush() throws IOException { - //ignore until we close - // or we'll force chunking and cause all kinds of network packets - } } protected boolean contextMatchOnExact() { Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?rev=1349016&r1=1349015&r2=1349016&view=diff ============================================================================== --- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original) +++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Mon Jun 11 21:16:43 2012 @@ -1408,12 +1408,6 @@ public class HTTPConduit } - public void flush() throws IOException { - if (!chunking) { - super.flush(); - } - } - /** * Perform any actions required on stream closure (handle response etc.) */ Modified: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/aegis/AegisClientServerTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/aegis/AegisClientServerTest.java?rev=1349016&r1=1349015&r2=1349016&view=diff ============================================================================== --- cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/aegis/AegisClientServerTest.java (original) +++ cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/aegis/AegisClientServerTest.java Mon Jun 11 21:16:43 2012 @@ -53,9 +53,9 @@ public class AegisClientServerTest exten @BeforeClass public static void startServers() throws Exception { - assertTrue("server did not launch correctly", launchServer(AegisServer.class)); + assertTrue("server did not launch correctly", launchServer(AegisServer.class, true)); } - + @Test public void testAegisClient() throws Exception { AegisDatabinding aegisBinding = new AegisDatabinding();