dev@jax-ws.java.net

XMLStreamReader recycling <was> [Fwd: CVS update [mr-21]: /jax-ws-sources/jaxws-ri/rt/src/com/sun/xml/ws/message/stream/]

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Thu, 11 Jan 2007 10:34:31 +0100

Hi,

This recycling is related to the same issue for the FI StAX parsers.

I have not looked deeply at the code but it looks like the right place
to support the recycling of XML *and* FI XMLStreamReader instances.

I am wondering if it is possible to also recycle stream buffers i.e.
when the message is no longer used.

Paul.

-- 
| ? + ? = To question
----------------\
    Paul Sandoz
         x38109
+33-4-76188109

attached mail follows:



Tag: mr-21
User: kohsuke
Date: 2007/01/10 18:17:43

Modified:
   jax-ws-sources/jaxws-ri/rt/src/com/sun/xml/ws/message/stream/StreamMessage.java

Log:
 adding recycle invocation.

File Changes:

Directory: /jax-ws-sources/jaxws-ri/rt/src/com/sun/xml/ws/message/stream/
=========================================================================

File [changed]: StreamMessage.java
Url: https://jax-ws-sources.dev.java.net/source/browse/jax-ws-sources/jaxws-ri/rt/src/com/sun/xml/ws/message/stream/StreamMessage.java?r1=1.1.2.7.2.11&r2=1.1.2.7.2.12
Delta lines: +13 -3
--------------------
--- StreamMessage.java 10 Jan 2007 03:14:51 -0000 1.1.2.7.2.11
+++ StreamMessage.java 11 Jan 2007 02:17:40 -0000 1.1.2.7.2.12
@@ -34,6 +34,7 @@
 import com.sun.xml.ws.encoding.TagInfoset;
 import com.sun.xml.ws.message.AbstractMessageImpl;
 import com.sun.xml.ws.message.AttachmentUnmarshallerImpl;
+import com.sun.xml.ws.streaming.XMLStreamReaderFactory;
 import com.sun.xml.ws.streaming.XMLStreamReaderUtil;
 import com.sun.xml.ws.util.xml.DummyLocation;
 import com.sun.xml.ws.util.xml.StAXSource;
@@ -46,9 +47,13 @@
 
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Unmarshaller;
-import javax.xml.stream.*;
+import javax.xml.stream.Location;
+import javax.xml.stream.XMLStreamConstants;
 import static javax.xml.stream.XMLStreamConstants.START_DOCUMENT;
 import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
 import javax.xml.transform.Source;
 import javax.xml.ws.WebServiceException;
 
@@ -198,6 +203,7 @@
             return unmarshaller.unmarshal(reader);
         } finally{
             unmarshaller.setAttachmentUnmarshaller(null);
+ XMLStreamReaderFactory.recycle(reader);
         }
     }
 
@@ -205,8 +211,10 @@
         if(!hasPayload())
             return null;
         assert unconsumed();
- return bridge.unmarshal(reader,
- hasAttachments()? new AttachmentUnmarshallerImpl(getAttachments()) : null );
+ T r = bridge.unmarshal(reader,
+ hasAttachments() ? new AttachmentUnmarshallerImpl(getAttachments()) : null);
+ XMLStreamReaderFactory.recycle(reader);
+ return r;
     }
 
     public XMLStreamReader readPayload() {
@@ -241,6 +249,7 @@
             conv.bridge(reader,writer);
         }
         reader.close();
+ XMLStreamReaderFactory.recycle(reader);
     }
 
     public void writeTo(XMLStreamWriter sw) throws XMLStreamException{
@@ -303,6 +312,7 @@
                 conv.bridge();
             }
             reader.close();
+ XMLStreamReaderFactory.recycle(reader);
         } catch (XMLStreamException e) {
             Location loc = e.getLocation();
             if(loc==null) loc = DummyLocation.INSTANCE;




---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe_at_jax-ws-sources.dev.java.net
For additional commands, e-mail: cvs-help_at_jax-ws-sources.dev.java.net