Author: dkulp
Date: Thu Nov 12 22:36:27 2009
New Revision: 835613

URL: http://svn.apache.org/viewvc?rev=835613&view=rev
Log:
Use a new string to make sure the doc doesn't hold onto things strongly
Don't wrapper the woodstox locator objects to make sure they aren't held
onto strongly

Modified:
    
cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java

Modified: 
cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java?rev=835613&r1=835612&r2=835613&view=diff
==============================================================================
--- 
cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java 
(original)
+++ 
cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java 
Thu Nov 12 22:36:27 2009
@@ -743,7 +743,7 @@
     }
     public static Document read(XMLStreamReader reader, boolean recordLoc) 
throws XMLStreamException {
         Document doc = DOMUtils.createDocument();
-        doc.setDocumentURI(reader.getLocation().getSystemId());
+        doc.setDocumentURI(new String(reader.getLocation().getSystemId()));
         readDocElements(doc, doc, reader, true, recordLoc);
         return doc;
     }
@@ -751,7 +751,7 @@
     public static Document read(DocumentBuilder builder, XMLStreamReader 
reader, boolean repairing) 
         throws XMLStreamException {
         Document doc = builder.newDocument();
-        doc.setDocumentURI(reader.getLocation().getSystemId());
+        doc.setDocumentURI(new String(reader.getLocation().getSystemId()));
         readDocElements(doc, reader, repairing);
         return doc;
     }
@@ -893,34 +893,33 @@
             }
         }
     }
-    private static void addLocation(final Document doc, Node node, 
-                                    XMLStreamReader reader, boolean recordLoc) 
{
+    private static void addLocation(Document doc, Node node, 
+                                    XMLStreamReader reader,
+                                    boolean recordLoc) {
         if (recordLoc) {
-            final Location loc = reader.getLocation();
+            Location loc = reader.getLocation();
             if (loc != null && (loc.getColumnNumber() != 0 || 
loc.getLineNumber() != 0)) {
+                final int charOffset = loc.getCharacterOffset();
+                final int colNum = loc.getColumnNumber();
+                final int linNum = loc.getLineNumber();
+                final String pubId = loc.getPublicId() == null ? 
doc.getDocumentURI() : loc.getPublicId();
+                final String sysId = loc.getSystemId() == null ? 
doc.getDocumentURI() : loc.getSystemId();
                 Location loc2 = new Location() {
                     public int getCharacterOffset() {
-                        return loc.getCharacterOffset();
+                        return charOffset;
                     }
                     public int getColumnNumber() {
-                        return loc.getColumnNumber();
+                        return colNum;
                     }
                     public int getLineNumber() {
-                        return loc.getLineNumber();
+                        return linNum;
                     }
                     public String getPublicId() {
-                        if (loc.getPublicId() == null) {
-                            return doc.getDocumentURI();
-                        }
-                        return loc.getPublicId();
+                        return pubId;
                     }
                     public String getSystemId() {
-                        if (loc.getSystemId() == null) {
-                            return doc.getDocumentURI();
-                        }
-                        return loc.getSystemId();
+                        return sysId;
                     }
-                    
                 };
                 node.setUserData("location", loc2, new UserDataHandler() {
                     public void handle(short operation, String key, Object 
data, Node src, Node dst) {

Modified: 
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java?rev=835613&r1=835612&r2=835613&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java 
(original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java 
Thu Nov 12 22:36:27 2009
@@ -222,7 +222,7 @@
         Document doc;
         try {
             doc = StaxUtils.read(StaxUtils.createXMLStreamReader(src), true);
-            doc.setDocumentURI(src.getSystemId());
+            doc.setDocumentURI(new String(src.getSystemId()));
         } catch (Exception e) {
             throw new WSDLException(WSDLException.PARSER_ERROR, 
e.getMessage(), e);
         }


Reply via email to