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();
                 


Reply via email to