You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by an...@apache.org on 2008/02/20 07:35:52 UTC

svn commit: r629372 - /cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/StringXMLizable.java

Author: antonio
Date: Tue Feb 19 22:35:48 2008
New Revision: 629372

URL: http://svn.apache.org/viewvc?rev=629372&view=rev
Log:
Faster implementation.

Modified:
    cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/StringXMLizable.java

Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/StringXMLizable.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/StringXMLizable.java?rev=629372&r1=629371&r2=629372&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/StringXMLizable.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/StringXMLizable.java Tue Feb 19 22:35:48 2008
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -29,26 +29,41 @@
 
 /**
  * XMLizable a String
- * 
+ *
  * @since 2.1.7
  * @author Bruno Dumon
  */
 public class StringXMLizable implements XMLizable {
+    private static class Context {
+        SAXParser parser;
+        Context() throws SAXException {
+            SAXParserFactory parserFactory = SAXParserFactory.newInstance();
+            parserFactory.setNamespaceAware(true);
+            parser = null;
+            try {
+                parser = parserFactory.newSAXParser();
+            } catch (ParserConfigurationException e) {
+                throw new SAXException("Error creating SAX parser.", e);
+            }
+        }
+    }
+
+    private static final ThreadLocal context = new ThreadLocal();
     private String data;
 
-    public StringXMLizable(String data) {
+    public StringXMLizable(final String data) {
         this.data = data;
     }
 
-    public void toSAX(ContentHandler contentHandler) throws SAXException {
-        SAXParserFactory parserFactory = SAXParserFactory.newInstance();
-        parserFactory.setNamespaceAware(true);
-        SAXParser parser = null;
-        try {
-            parser = parserFactory.newSAXParser();
-        } catch (ParserConfigurationException e) {
-            throw new SAXException("Error creating SAX parser.", e);
+    private Context getContext() throws SAXException {
+        if (context.get() == null) {
+            context.set(new Context());
         }
+        return (Context) context.get();
+    }
+
+    public void toSAX(ContentHandler contentHandler) throws SAXException {
+        final SAXParser parser = getContext().parser;
         parser.getXMLReader().setContentHandler(contentHandler);
         InputSource is = new InputSource(new StringReader(data));
         try {