You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2013/01/14 23:14:50 UTC
svn commit: r1433171 - in /webservices/commons/trunk/modules/axiom/modules:
axiom-api/src/main/java/org/apache/axiom/om/ds/
axiom-api/src/main/java/org/apache/axiom/om/impl/
axiom-api/src/main/java/org/apache/axiom/om/impl/builder/
axiom-api/src/main/j...
Author: veithen
Date: Mon Jan 14 22:14:50 2013
New Revision: 1433171
URL: http://svn.apache.org/viewvc?rev=1433171&view=rev
Log:
Always release the parser so that it can be GCed. There is no valid reason not to do that.
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/OMDataSourceExtBase.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMXMLStreamReaderEx.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXBuilder.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/CopyUtils.java
webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMStAXWrapper.java
webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StreamSwitch.java
webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java
webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.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/OMSerializableImpl.java
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderClose.java
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/OMDataSourceExtBase.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/OMDataSourceExtBase.java?rev=1433171&r1=1433170&r2=1433171&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/OMDataSourceExtBase.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/OMDataSourceExtBase.java Mon Jan 14 22:14:50 2013
@@ -149,7 +149,6 @@ public abstract class OMDataSourceExtBas
private static void reader2writer(XMLStreamReader reader,
XMLStreamWriter writer) throws XMLStreamException {
StAXOMBuilder builder = new StAXOMBuilder(reader);
- builder.releaseParserOnClose(true);
try {
OMDocument omDocument = builder.getDocument();
Iterator it = omDocument.getChildren();
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMXMLStreamReaderEx.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMXMLStreamReaderEx.java?rev=1433171&r1=1433170&r2=1433171&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMXMLStreamReaderEx.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMXMLStreamReaderEx.java Mon Jan 14 22:14:50 2013
@@ -45,6 +45,4 @@ public interface OMXMLStreamReaderEx ext
// *** Methods that potentially could be promoted to OMXMLStreamReader ***
boolean isClosed();
-
- void releaseParserOnClose(boolean value);
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXBuilder.java?rev=1433171&r1=1433170&r2=1433171&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXBuilder.java Mon Jan 14 22:14:50 2013
@@ -87,7 +87,6 @@ public abstract class StAXBuilder implem
protected String charEncoding = null;
protected boolean _isClosed = false; // Indicate if parser is closed
- protected boolean _releaseParserOnClose = false; // Defaults to legacy behavior, which is keep the reference
// Fields for Custom Builder implementation
protected CustomBuilder customBuilderForPayload = null;
@@ -696,10 +695,9 @@ public abstract class StAXBuilder implem
} finally {
_isClosed = true;
done = true;
- // Release the parser so that it can be GC'd or reused.
- if (_releaseParserOnClose) {
- parser = null;
- }
+ // Release the parser so that it can be GC'd or reused. This is important because the
+ // object model keeps a reference to the builder even after the builder is complete.
+ parser = null;
}
}
@@ -737,16 +735,8 @@ public abstract class StAXBuilder implem
}
/**
- * Indicate if the parser resource should be release when closed.
- * @param value boolean
+ * @deprecated As of Axiom 1.2.15, the builder always releases the parser.
*/
public void releaseParserOnClose(boolean value) {
-
- // Release parser if already closed
- if (isClosed() && value) {
- parser = null;
- }
- _releaseParserOnClose = value;
-
}
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/CopyUtils.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/CopyUtils.java?rev=1433171&r1=1433170&r2=1433171&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/CopyUtils.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/CopyUtils.java Mon Jan 14 22:14:50 2013
@@ -80,7 +80,6 @@ public class CopyUtils {
XMLStreamWriter writer)
throws XMLStreamException {
StAXOMBuilder builder = new StAXOMBuilder(reader);
- builder.releaseParserOnClose(true);
try {
OMDocument omDocument = builder.getDocument();
Iterator it = omDocument.getChildren();
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMStAXWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMStAXWrapper.java?rev=1433171&r1=1433170&r2=1433171&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMStAXWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMStAXWrapper.java Mon Jan 14 22:14:50 2013
@@ -114,10 +114,6 @@ class OMStAXWrapper extends StreamReader
return streamSwitch.isClosed();
}
- public void releaseParserOnClose(boolean value) {
- streamSwitch.releaseParserOnClose(value);
- }
-
public OMDataSource getDataSource() {
return streamSwitch.getDataSource();
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StreamSwitch.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StreamSwitch.java?rev=1433171&r1=1433170&r2=1433171&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StreamSwitch.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StreamSwitch.java Mon Jan 14 22:14:50 2013
@@ -27,10 +27,6 @@ public class StreamSwitch extends Stream
return ((SwitchingWrapper)getParent()).isClosed();
}
- public void releaseParserOnClose(boolean value) {
- ((SwitchingWrapper)getParent()).releaseParserOnClose(value);
- }
-
public OMDataSource getDataSource() {
return ((SwitchingWrapper)getParent()).getDataSource();
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java?rev=1433171&r1=1433170&r2=1433171&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java Mon Jan 14 22:14:50 2013
@@ -103,7 +103,6 @@ class SwitchingWrapper extends AbstractX
private DataHandlerReader dataHandlerReader;
private boolean isClosed = false; // Indicate if parser is closed
- private boolean releaseParserOnClose = false; // Defaults to legacy behavior, which is keep the reference
/**
* The root node, i.e. the node from which the {@link XMLStreamReader} has been requested.
@@ -832,9 +831,7 @@ class SwitchingWrapper extends AbstractX
} finally {
isClosed = true;
// Release the parser so that it can be GC'd or reused.
- if (releaseParserOnClose) {
- setParser(null);
- }
+ setParser(null);
}
}
}
@@ -1373,29 +1370,6 @@ class SwitchingWrapper extends AbstractX
}
/**
- * Indicate if the parser resource should be release when closed.
- * @param value boolean
- */
- public void releaseParserOnClose(boolean value) {
- // if there is a StAXBuilder, it owns the parser
- // and controls the releaseOnClose status
- if (builder != null && builder instanceof StAXBuilder) {
- ((StAXBuilder) builder).releaseParserOnClose(value);
- if (isClosed() && value) {
- setParser(null);
- }
- return;
- } else {
- // Release parser if already closed
- if (isClosed() && value) {
- setParser(null);
- }
- releaseParserOnClose = value;
- }
-
- }
-
- /**
* @return OMDataSource associated with the current node or Null
*/
public OMDataSource getDataSource() {
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java?rev=1433171&r1=1433170&r2=1433171&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java Mon Jan 14 22:14:50 2013
@@ -87,22 +87,12 @@ public abstract class AbstractOMMetaFact
}
}
- private static OMXMLParserWrapper internalCreateStAXOMBuilder(OMFactory omFactory, XMLStreamReader parser) {
- StAXOMBuilder builder = new StAXOMBuilder(omFactory, parser);
- // StAXOMBuilder defaults to the "legacy" behavior, which is to keep a reference to the
- // parser after the builder has been closed. Since releasing this reference is a good idea
- // we default to releaseParserOnClose=true for builders created through the OMMetaFactory
- // API.
- builder.releaseParserOnClose(true);
- return builder;
- }
-
public OMXMLParserWrapper createStAXOMBuilder(OMFactory omFactory, XMLStreamReader parser) {
- return internalCreateStAXOMBuilder(omFactory, getXMLStreamReader(parser));
+ return new StAXOMBuilder(omFactory, getXMLStreamReader(parser));
}
public OMXMLParserWrapper createOMBuilder(OMFactory omFactory, StAXParserConfiguration configuration, InputSource is) {
- return internalCreateStAXOMBuilder(omFactory, createXMLStreamReader(configuration, is));
+ return new StAXOMBuilder(omFactory, createXMLStreamReader(configuration, is));
}
public OMXMLParserWrapper createOMBuilder(OMFactory omFactory, Source source) {
@@ -133,29 +123,20 @@ public abstract class AbstractOMMetaFact
OMFactory omFactory, InputSource rootPart, MimePartProvider mimePartProvider) {
XOPAwareStAXOMBuilder builder = new XOPAwareStAXOMBuilder(omFactory, createXMLStreamReader(
configuration, rootPart), mimePartProvider);
- builder.releaseParserOnClose(true);
- return builder;
- }
-
- private SOAPModelBuilder internalCreateStAXSOAPModelBuilder(XMLStreamReader parser) {
- StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(this, parser);
- builder.releaseParserOnClose(true);
return builder;
}
public SOAPModelBuilder createStAXSOAPModelBuilder(XMLStreamReader parser) {
- return internalCreateStAXSOAPModelBuilder(getXMLStreamReader(parser));
+ return new StAXSOAPModelBuilder(this, getXMLStreamReader(parser));
}
public SOAPModelBuilder createSOAPModelBuilder(StAXParserConfiguration configuration, InputSource is) {
- return internalCreateStAXSOAPModelBuilder(createXMLStreamReader(configuration, is));
+ return new StAXSOAPModelBuilder(this, createXMLStreamReader(configuration, is));
}
public SOAPModelBuilder createSOAPModelBuilder(StAXParserConfiguration configuration,
SOAPFactory soapFactory, InputSource rootPart, MimePartProvider mimePartProvider) {
- MTOMStAXSOAPModelBuilder builder = new MTOMStAXSOAPModelBuilder(soapFactory, createXMLStreamReader(
+ return new MTOMStAXSOAPModelBuilder(soapFactory, createXMLStreamReader(
configuration, rootPart), mimePartProvider);
- builder.releaseParserOnClose(true);
- return builder;
}
}
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=1433171&r1=1433170&r2=1433171&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 Mon Jan 14 22:14:50 2013
@@ -722,7 +722,6 @@ public abstract class NodeImpl implement
// If this is a StAXBuilder, close it.
if (builder instanceof StAXBuilder &&
!((StAXBuilder) builder).isClosed()) {
- ((StAXBuilder) builder).releaseParserOnClose(true);
((StAXBuilder) builder).close();
}
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java?rev=1433171&r1=1433170&r2=1433171&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java Mon Jan 14 22:14:50 2013
@@ -66,7 +66,6 @@ public abstract class OMSerializableImpl
// If this is a StAXBuilder, close it.
if (builder instanceof StAXBuilder &&
!((StAXBuilder) builder).isClosed()) {
- ((StAXBuilder) builder).releaseParserOnClose(true);
((StAXBuilder) builder).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=1433171&r1=1433170&r2=1433171&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 Mon Jan 14 22:14:50 2013
@@ -277,7 +277,6 @@ public class OMSourcedElementImpl extend
isExpanded = true;
StAXOMBuilder builder = new StAXOMBuilder(getOMFactory(), readerFromDS, this, characterEncoding);
builder.setAutoClose(true);
- builder.releaseParserOnClose(true);
super.setBuilder(builder);
setComplete(false);
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderClose.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderClose.java?rev=1433171&r1=1433170&r2=1433171&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderClose.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderClose.java Mon Jan 14 22:14:50 2013
@@ -56,7 +56,6 @@ public class TestGetXMLStreamReaderClose
if (reader instanceof OMXMLStreamReaderEx) {
OMXMLStreamReaderEx wrapper = (OMXMLStreamReaderEx) reader;
assertTrue(!wrapper.isClosed());
- wrapper.releaseParserOnClose(true);
}
while (reader.hasNext()) {