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 ve...@apache.org on 2009/08/13 22:28:28 UTC
svn commit: r804020 - in /webservices/commons/trunk/modules/axiom/modules:
axiom-api/src/main/java/org/apache/axiom/om/
axiom-api/src/main/java/org/apache/axiom/om/impl/
axiom-api/src/main/java/org/apache/axiom/om/util/
axiom-dom/src/main/java/org/apac...
Author: veithen
Date: Thu Aug 13 20:28:27 2009
New Revision: 804020
URL: http://svn.apache.org/viewvc?rev=804020&view=rev
Log:
Closing the XMLStreamWriter in serialize methods that write to an InputStream or Writer should not be an optional operation. If we don't do it in the serialize method, nobody will ever close the XMLStreamWriter. Note that there is no valid reason not to close the XMLStreamReader. In particular, closing the XMLStreamWriter has no impact on the underlying stream. Therefore we should always do it so that the StAX implementation can free the resources associated with the writer.
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/CommonUtils.java
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java?rev=804020&r1=804019&r2=804020&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java Thu Aug 13 20:28:27 2009
@@ -307,10 +307,16 @@
return sb.toString();
}
+ /**
+ * @deprecated
+ */
public boolean isAutoCloseWriter() {
return autoCloseWriter;
}
+ /**
+ * @deprecated
+ */
public void setAutoCloseWriter(boolean autoCloseWriter) {
this.autoCloseWriter = autoCloseWriter;
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java?rev=804020&r1=804019&r2=804020&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java Thu Aug 13 20:28:27 2009
@@ -167,6 +167,7 @@
}
public void close() throws XMLStreamException {
+ // TODO: we should probably call flush if the attachments have not been written yet
if (isDebugEnabled) {
log.debug("close");
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/CommonUtils.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/CommonUtils.java?rev=804020&r1=804019&r2=804020&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/CommonUtils.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/CommonUtils.java Thu Aug 13 20:28:27 2009
@@ -123,7 +123,6 @@
public static long logDebug(OMElement om, Log log, int limit) {
OMOutputFormat format = new OMOutputFormat();
format.setDoOptimize(true);
- format.setAutoCloseWriter(true);
format.setIgnoreXMLDeclaration(true);
return logDebug(om, log, limit, format);
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java?rev=804020&r1=804019&r2=804020&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java Thu Aug 13 20:28:27 2009
@@ -796,11 +796,10 @@
MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format);
try {
internalSerialize(writer, true);
+ // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
writer.flush();
} finally {
- if (format.isAutoCloseWriter()) {
- writer.close();
- }
+ writer.close();
}
}
@@ -811,11 +810,10 @@
writer.setOutputFormat(format);
try {
internalSerialize(writer, true);
+ // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
writer.flush();
} finally {
- if (format.isAutoCloseWriter()) {
- writer.close();
- }
+ writer.close();
}
}
@@ -824,11 +822,10 @@
MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format);
try {
internalSerialize(writer, false);
+ // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
writer.flush();
} finally {
- if (format.isAutoCloseWriter()) {
- writer.close();
- }
+ writer.close();
}
}
@@ -838,12 +835,11 @@
.createXMLStreamWriter(writer2));
try {
writer.setOutputFormat(format);
+ // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
internalSerialize(writer, false);
writer.flush();
} finally {
- if (format.isAutoCloseWriter()) {
- writer.close();
- }
+ writer.close();
}
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java?rev=804020&r1=804019&r2=804020&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java Thu Aug 13 20:28:27 2009
@@ -347,9 +347,11 @@
public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException {
MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format);
- internalSerialize(writer, true);
- writer.flush();
- if (format.isAutoCloseWriter()) {
+ try {
+ internalSerialize(writer, true);
+ // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
+ writer.flush();
+ } finally {
writer.close();
}
}
@@ -358,9 +360,11 @@
MTOMXMLStreamWriter writer =
new MTOMXMLStreamWriter(StAXUtils.createXMLStreamWriter(writer2));
writer.setOutputFormat(format);
- internalSerialize(writer, true);
- writer.flush();
- if (format.isAutoCloseWriter()) {
+ try {
+ internalSerialize(writer, true);
+ // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
+ writer.flush();
+ } finally {
writer.close();
}
}
@@ -368,9 +372,11 @@
public void serializeAndConsume(OutputStream output, OMOutputFormat format)
throws XMLStreamException {
MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format);
- internalSerialize(writer, false);
- writer.flush();
- if (format.isAutoCloseWriter()) {
+ try {
+ internalSerialize(writer, false);
+ // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
+ writer.flush();
+ } finally {
writer.close();
}
}
@@ -380,9 +386,11 @@
MTOMXMLStreamWriter writer =
new MTOMXMLStreamWriter(StAXUtils.createXMLStreamWriter(writer2));
writer.setOutputFormat(format);
- internalSerialize(writer, false);
- writer.flush();
- if (format.isAutoCloseWriter()) {
+ try {
+ internalSerialize(writer, false);
+ // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
+ writer.flush();
+ } finally {
writer.close();
}
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java?rev=804020&r1=804019&r2=804020&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java Thu Aug 13 20:28:27 2009
@@ -772,7 +772,6 @@
log.debug("serialize " + getPrintableName() + " to output stream");
}
OMOutputFormat format = new OMOutputFormat();
- format.setAutoCloseWriter(true);
if (isExpanded()) {
super.serializeAndConsume(output, format);
} else {
@@ -791,7 +790,6 @@
super.serializeAndConsume(writer);
} else {
OMOutputFormat format = new OMOutputFormat();
- format.setAutoCloseWriter(true);
dataSource.serialize(writer, format);
}
}