Author: veithen
Date: Sat Jan 28 19:16:38 2012
New Revision: 1237142
URL: http://svn.apache.org/viewvc?rev=1237142&view=rev
Log:
Don't store the org.xml.sax.Locator object. We never need it and the fact that
we keep a reference may contribute to the issue described in AXIS-2863.
Modified:
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/encoding/DeserializationContext.java
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/message/SAX2EventRecorder.java
Modified:
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/encoding/DeserializationContext.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/encoding/DeserializationContext.java?rev=1237142&r1=1237141&r2=1237142&view=diff
==============================================================================
---
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/encoding/DeserializationContext.java
(original)
+++
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/encoding/DeserializationContext.java
Sat Jan 28 19:16:38 2012
@@ -84,8 +84,6 @@ public class DeserializationContext impl
private NSStack namespaces = new NSStack();
- private Locator locator;
-
// Class used for deserialization using class metadata from
// downstream deserializers
private Class destClass;
@@ -964,14 +962,11 @@ public class DeserializationContext impl
public void setDocumentLocator(Locator locator)
{
- if (!doneParsing && (recorder != null)) {
- recorder.setDocumentLocator(locator);
- }
- this.locator = locator;
- }
-
- public Locator getDocumentLocator() {
- return locator;
+ // We don't store the Locator because we don't need it. In addition it
is typically
+ // a reference to some internal object of the parser and not keeping
that reference
+ // ensures that this object (which may be heavyweight) can be garbage
collected
+ // early (see AXIS-2863 for an issue that may be related to this: in
that case,
+ // Locator is implemented by oracle.xml.parser.v2.XMLReader).
}
public void characters(char[] p1, int p2, int p3) throws SAXException {
Modified:
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/message/SAX2EventRecorder.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/message/SAX2EventRecorder.java?rev=1237142&r1=1237141&r2=1237142&view=diff
==============================================================================
---
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/message/SAX2EventRecorder.java
(original)
+++
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/message/SAX2EventRecorder.java
Sat Jan 28 19:16:38 2012
@@ -28,7 +28,6 @@ public class SAX2EventRecorder {
private static final Integer Z = new Integer(0);
- private static final Integer STATE_SET_DOCUMENT_LOCATOR = new Integer(0);
private static final Integer STATE_START_DOCUMENT = new Integer(1);
private static final Integer STATE_END_DOCUMENT = new Integer(2);
private static final Integer STATE_START_PREFIX_MAPPING = new Integer(3);
@@ -53,11 +52,9 @@ public class SAX2EventRecorder {
private static final Integer STATE_END_CDATA = new Integer(17);
private static final Integer STATE_COMMENT = new Integer(18);
- org.xml.sax.Locator locator;
objArrayVector events = new objArrayVector();
public void clear() {
- locator = null;
events = new objArrayVector();
}
public int getLength()
@@ -65,10 +62,6 @@ public class SAX2EventRecorder {
return events.getLength();
}
- public int setDocumentLocator(org.xml.sax.Locator p1) {
- locator = p1;
- return events.add(STATE_SET_DOCUMENT_LOCATOR, Z,Z,Z,Z);
- }
public int startDocument() {
return events.add(STATE_START_DOCUMENT, Z,Z,Z,Z);
}
@@ -187,9 +180,6 @@ public class SAX2EventRecorder {
} else if (event == STATE_SKIPPED_ENTITY) {
handler.skippedEntity((String)events.get(n,1));
- } else if (event == STATE_SET_DOCUMENT_LOCATOR) {
- handler.setDocumentLocator(locator);
-
} else if (event == STATE_START_DOCUMENT) {
handler.startDocument();