Author: darran.lofthouse(a)jboss.com
Date: 2010-06-18 07:31:50 -0400 (Fri, 18 Jun 2010)
New Revision: 12501
Modified:
common/branches/dlofthouse/cached_db/src/main/java/org/jboss/wsf/common/DOMUtils.java
Log:
Here is the prototype
Modified:
common/branches/dlofthouse/cached_db/src/main/java/org/jboss/wsf/common/DOMUtils.java
===================================================================
---
common/branches/dlofthouse/cached_db/src/main/java/org/jboss/wsf/common/DOMUtils.java 2010-06-18
11:30:42 UTC (rev 12500)
+++
common/branches/dlofthouse/cached_db/src/main/java/org/jboss/wsf/common/DOMUtils.java 2010-06-18
11:31:50 UTC (rev 12501)
@@ -83,6 +83,43 @@
// All elements created by the same thread are created by the same builder and belong
to the same doc
private static ThreadLocal<Document> documentThreadLocal = new
ThreadLocal<Document>();
+
+ private static ThreadLocal<EntityResolver> entityResolver = new
ThreadLocal<EntityResolver>() {
+ protected EntityResolver initialValue()
+ {
+ EntityResolver entityResolver = null;
+ try
+ {
+ entityResolver = new JBossWSEntityResolver();
+ }
+ catch (Throwable t)
+ {
+ boolean debugEnabled = log.isDebugEnabled();
+ if (debugEnabled)
+ log.debug("Cannot load: " +
JBossWSEntityResolver.class.getCanonicalName());
+ String[] resolvers = new String[] {
"org.jboss.util.xml.JBossEntityResolver" };
+ ClassLoader loader = SecurityActions.getContextClassLoader();
+ for (String resolver : resolvers)
+ {
+ try
+ {
+ Class<?> resolverClass = SecurityActions.loadClass(loader,
resolver);
+ entityResolver = (EntityResolver)resolverClass.newInstance();
+ break;
+ }
+ catch (Exception ex)
+ {
+ if (debugEnabled)
+ log.debug("Cannot load: " + resolver);
+ }
+ }
+ }
+
+ return entityResolver;
+ }
+
+ };
+
private static ThreadLocal<DocumentBuilder> builderThreadLocal = new
ThreadLocal<DocumentBuilder>() {
protected DocumentBuilder initialValue()
{
@@ -133,46 +170,16 @@
throw new RuntimeException("Unable to create document builder",
e);
}
}
-
- @SuppressWarnings("deprecation")
- private void setEntityResolver(DocumentBuilder builder)
- {
- EntityResolver entityResolver = null;
- try
- {
- entityResolver = new JBossWSEntityResolver();
- }
- catch (Throwable t)
- {
- boolean debugEnabled = log.isDebugEnabled();
- if (debugEnabled)
- log.debug("Cannot load: " +
JBossWSEntityResolver.class.getCanonicalName());
- String[] resolvers = new String[] {
"org.jboss.util.xml.JBossEntityResolver" };
- ClassLoader loader = SecurityActions.getContextClassLoader();
- for (String resolver : resolvers)
- {
- try
- {
- Class<?> resolverClass = SecurityActions.loadClass(loader,
resolver);
- entityResolver = (EntityResolver)resolverClass.newInstance();
- break;
- }
- catch (Exception ex)
- {
- if (debugEnabled)
- log.debug("Cannot load: " + resolver);
- }
- }
- }
- if (entityResolver != null)
- builder.setEntityResolver(entityResolver);
- }
+
+
};
public static void clearThreadLocals()
{
documentThreadLocal.remove();
- builderThreadLocal.remove();
+ DocumentBuilder documentBuilder = getDocumentBuilder();
+ documentBuilder.reset();
+ setEntityResolver(documentBuilder);
}
// Hide the constructor
@@ -186,7 +193,19 @@
{
return builderThreadLocal.get();
}
+
+ private static EntityResolver getEntityResolver()
+ {
+ return entityResolver.get();
+ }
+ private static void setEntityResolver(DocumentBuilder builder)
+ {
+ EntityResolver entityResolver = getEntityResolver();
+ if (entityResolver != null)
+ builder.setEntityResolver(entityResolver);
+ }
+
/** Parse the given XML string and return the root Element
*/
public static Element parse(String xmlString) throws IOException
Show replies by date