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 sc...@apache.org on 2007/04/13 21:34:21 UTC
svn commit: r528621 -
/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
Author: scheu
Date: Fri Apr 13 12:34:21 2007
New Revision: 528621
URL: http://svn.apache.org/viewvc?view=rev&rev=528621
Log:
WSCOMMONS-193
Contributor:Rich Scheuerle
OMSourceElementImpl should close its reader when complete. Failure to close the reader can impact performance and memory consumption.
Modified:
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-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?view=diff&rev=528621&r1=528620&r2=528621
==============================================================================
--- 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 Fri Apr 13 12:34:21 2007
@@ -64,6 +64,8 @@
private static Log log = LogFactory.getLog(OMSourcedElementImpl.class);
private static final boolean isDebugEnabled = log.isDebugEnabled();
+
+ private XMLStreamReader readerFromDS = null; // Reader from DataSource
/**
* Constructor.
@@ -143,10 +145,10 @@
}
// position reader to start tag
- XMLStreamReader reader = getDirectReader();
+ readerFromDS = getDirectReader();
try {
- if (reader.getEventType() != XMLStreamConstants.START_ELEMENT) {
- while (reader.next() != XMLStreamConstants.START_ELEMENT) ;
+ if (readerFromDS.getEventType() != XMLStreamConstants.START_ELEMENT) {
+ while (readerFromDS.next() != XMLStreamConstants.START_ELEMENT) ;
}
} catch (XMLStreamException e) {
log.error("forceExpand: error parsing data soruce document for element " +
@@ -156,13 +158,13 @@
}
// make sure element local name and namespace matches what was expected
- if (!reader.getLocalName().equals(getLocalName())) {
+ if (!readerFromDS.getLocalName().equals(getLocalName())) {
log.error("forceExpand: expected element name " +
- getLocalName() + ", found " + reader.getLocalName());
+ getLocalName() + ", found " + readerFromDS.getLocalName());
throw new RuntimeException("Element name from data source is " +
- reader.getLocalName() + ", not the expected " + getLocalName());
+ readerFromDS.getLocalName() + ", not the expected " + getLocalName());
}
- String readerURI = reader.getNamespaceURI();
+ String readerURI = readerFromDS.getNamespaceURI();
readerURI = (readerURI == null) ? "" : readerURI;
String uri = getNamespace().getNamespaceURI();
if (!readerURI.equals(uri)) {
@@ -173,13 +175,13 @@
}
// Get the current prefix and the reader's prefix
- String readerPrefix = reader.getPrefix();
+ String readerPrefix = readerFromDS.getPrefix();
readerPrefix = (readerPrefix == null) ? "" : readerPrefix;
String prefix = getNamespace().getPrefix();
// set the builder for this element
isParserSet = true;
- super.setBuilder(new StAXOMBuilder(getOMFactory(), reader, this));
+ super.setBuilder(new StAXOMBuilder(getOMFactory(), readerFromDS, this));
setComplete(false);
// Update the prefix if necessary. This must be done after
@@ -842,5 +844,12 @@
*/
public void setComplete(boolean value) {
done = value;
+ if (done == true && readerFromDS != null) {
+ try {
+ readerFromDS.close();
+ } catch (XMLStreamException e) {
+ }
+ readerFromDS = null;
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org