You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by wo...@apache.org on 2009/03/24 20:47:34 UTC
svn commit: r757984 - in /webservices/commons/trunk/modules/axiom/modules:
axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java
axiom-tests/src/test/java/org/apache/axiom/om/impl/serializer/OMSerializerTest.java
Author: woodroy
Date: Tue Mar 24 19:47:33 2009
New Revision: 757984
URL: http://svn.apache.org/viewvc?rev=757984&view=rev
Log:
Fix to close parser in 'internalSerialize' when done with non-caching code block
Contributor: Roy Wood from Mike Rheinheimer
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/serializer/OMSerializerTest.java
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java?rev=757984&r1=757983&r2=757984&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java Tue Mar 24 19:47:33 2009
@@ -19,6 +19,8 @@
package org.apache.axiom.soap.impl.llom;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.axiom.om.OMConstants;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
@@ -28,6 +30,7 @@
import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
import org.apache.axiom.om.impl.llom.OMNodeImpl;
import org.apache.axiom.om.impl.util.OMSerializerUtil;
+import org.apache.axiom.om.impl.builder.StAXBuilder;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAP12Version;
@@ -47,6 +50,8 @@
/** Class SOAPEnvelopeImpl */
public class SOAPEnvelopeImpl extends SOAPElement
implements SOAPEnvelope, OMConstants {
+ private static Log log = LogFactory.getLog(SOAPEnvelopeImpl.class);
+ private static final boolean isDebugEnabled = log.isDebugEnabled();
/**
* Constructor
@@ -245,6 +250,32 @@
} else {
OMSerializerUtil.serializeByPullStream(this, writer, cache);
}
+ // let's try to close the builder/parser here since we are now done with the
+ // non-caching code block serializing the top-level SOAPEnvelope element
+ // TODO: should use 'instance of OMXMLParserWrapper' instead? StAXBuilder is more generic
+ if ((builder != null) && (builder instanceof StAXBuilder)) {
+ try {
+ if (isDebugEnabled) {
+ log.debug("closing builder: " + builder);
+ }
+ StAXBuilder staxBuilder = (StAXBuilder) builder;
+ staxBuilder.close();
+ } catch (Exception e) {
+ if (isDebugEnabled) {
+ log.error("Could not close builder or parser due to: ", e);
+ }
+ }
+ } else {
+ if (isDebugEnabled) {
+ log.debug("Could not close builder or parser due to:");
+ if (builder == null) {
+ log.debug("builder is null");
+ }
+ if ((builder != null) && !(builder instanceof StAXBuilder)) {
+ log.debug("builder is not instance of " + StAXBuilder.class.getName());
+ }
+ }
+ }
}
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/serializer/OMSerializerTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/serializer/OMSerializerTest.java?rev=757984&r1=757983&r2=757984&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/serializer/OMSerializerTest.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/serializer/OMSerializerTest.java Tue Mar 24 19:47:33 2009
@@ -121,12 +121,13 @@
try {
env.serializeAndConsume(writer);
fail();
- } catch (XMLStreamException e) {
+ } catch (UnsupportedOperationException e) {
e.printStackTrace(new PrintWriter(stringWriter, true));
assertTrue(stringWriter.toString()
- .indexOf("problem accessing the parser. Parser already accessed!") > -1);
+ .indexOf("The parser is already consumed!") > -1);
} catch (Exception e) {
- fail("Expecting an XMLStreamException " + e.getMessage());
+ e.printStackTrace();
+ fail("Expecting an XMLStreamException, but got instead: " + e.getClass().getName() + ": " + e.getMessage());
}
}