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 {