You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2009/08/31 20:53:27 UTC
svn commit: r809688 -
/incubator/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaSerializer.java
Author: cwiklik
Date: Mon Aug 31 18:53:27 2009
New Revision: 809688
URL: http://svn.apache.org/viewvc?rev=809688&view=rev
Log:
UIMA-1393 Committed Jorn's changes to use ThreadLocal while serilizing and deserializing from xmi
Modified:
incubator/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaSerializer.java
Modified: incubator/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaSerializer.java
URL: http://svn.apache.org/viewvc/incubator/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaSerializer.java?rev=809688&r1=809687&r2=809688&view=diff
==============================================================================
--- incubator/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaSerializer.java (original)
+++ incubator/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaSerializer.java Mon Aug 31 18:53:27 2009
@@ -27,7 +27,7 @@
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
-import java.util.concurrent.ConcurrentHashMap;
+//import java.util.concurrent.ConcurrentHashMap;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
@@ -55,9 +55,8 @@
public class UimaSerializer
{
-
- private ConcurrentHashMap xmlReaderMap = new ConcurrentHashMap();
- private Object mux = new Object();
+ private final ThreadLocal<XMLReader> localXmlReader = new ThreadLocal<XMLReader>();
+
/**
* Serializes XCas into CAS
*
@@ -119,7 +118,6 @@
if (typeSystem == null)
typeSystem = aCAS.getTypeSystem();
-// XMLSerializer xmlSer = new XMLSerializer(writer, false);
XMLSerializer xmlSer = new XMLSerializer(stream, false);
if (encoding != null)
xmlSer.setOutputProperty(OutputKeys.ENCODING, encoding);
@@ -127,7 +125,6 @@
XmiCasSerializer ser = new XmiCasSerializer(typeSystem);
ser.serialize(aCAS, xmlSer.getContentHandler());
- // ser.serialize(aCAS, xmlSer.getContentHandler(),false, otsd);
}
/**
@@ -143,7 +140,7 @@
ser.serialize(aCAS, xmlSer.getContentHandler(), null, serSharedData);
return writer.toString();
}
- catch( Exception e)
+ catch( SAXException e)
{
throw e;
}
@@ -163,7 +160,7 @@
ser.serialize(aCAS, xmlSer.getContentHandler(), null, serSharedData, aMarker);
return writer.toString();
}
- catch( Exception e)
+ catch( SAXException e)
{
throw e;
}
@@ -179,22 +176,12 @@
throws FactoryConfigurationError, ParserConfigurationException, SAXException, IOException
{
- XMLReader xmlReader = null;
- // Create a new instance of a XMLReader if one doesnt exist in the
- // global map. Each thread reuses its own instance.
- synchronized( mux ) {
- if ( !xmlReaderMap.containsKey(Thread.currentThread().getId())) {
- xmlReader = XMLReaderFactory.createXMLReader();
- xmlReaderMap.put(Thread.currentThread().getId(), xmlReader);
- } else {
- xmlReader = (XMLReader) xmlReaderMap.get(Thread.currentThread().getId());
- }
- }
- if ( xmlReader == null ) {
- throw new ParserConfigurationException("XMLReaderMap Doesnt Contain a Reader Object for Key:"+Thread.currentThread().getId());
- }
+ if (localXmlReader.get() == null) {
+ localXmlReader.set(XMLReaderFactory.createXMLReader());
+ }
+ XMLReader xmlReader = XMLReaderFactory.createXMLReader(); // localXmlReader.get();
- Reader reader = new StringReader(anXmlStr);
+ Reader reader = new StringReader(anXmlStr);
XmiCasDeserializer deser = new XmiCasDeserializer(aCAS.getTypeSystem());
ContentHandler handler = deser.getXmiCasHandler(aCAS, aLenient, aSharedData, aMergePoint);
xmlReader.setContentHandler(handler);
@@ -205,18 +192,11 @@
boolean aLenient, int aMergePoint, AllowPreexistingFS allow)
throws FactoryConfigurationError, ParserConfigurationException, SAXException, IOException
{
- XMLReader xmlReader = null;
- synchronized( mux ) {
- if ( !xmlReaderMap.containsKey(Thread.currentThread().getId())) {
- xmlReader = XMLReaderFactory.createXMLReader();
- xmlReaderMap.put(Thread.currentThread().getId(), xmlReader);
- } else {
- xmlReader = (XMLReader) xmlReaderMap.get(Thread.currentThread().getId());
- }
- }
- if ( xmlReader == null ) {
- throw new ParserConfigurationException("XMLReaderMap Doesnt Contain a Reader Object for Key:"+Thread.currentThread().getId());
- }
+
+ if (localXmlReader.get() == null) {
+ localXmlReader.set(XMLReaderFactory.createXMLReader());
+ }
+ XMLReader xmlReader = localXmlReader.get();
Reader reader = new StringReader(anXmlStr);
XmiCasDeserializer deser = new XmiCasDeserializer(aCAS.getTypeSystem());
ContentHandler handler = deser.getXmiCasHandler(aCAS, aLenient, aSharedData, aMergePoint, allow);
@@ -288,9 +268,5 @@
}
}
}
-
- public void reset() {
- xmlReaderMap.clear();
- }
}