Author: darran.lofthouse(a)jboss.com
Date: 2008-09-26 12:36:23 -0400 (Fri, 26 Sep 2008)
New Revision: 8251
Modified:
common/branches/jbossws-common-1.0.0.GA_JBPAPP-1216/src/main/java/org/jboss/wsf/common/DOMUtils.java
Log:
[JBPAPP-1216] Added property 'org.jboss.ws.disable_deferred_node_expansion'
Modified:
common/branches/jbossws-common-1.0.0.GA_JBPAPP-1216/src/main/java/org/jboss/wsf/common/DOMUtils.java
===================================================================
---
common/branches/jbossws-common-1.0.0.GA_JBPAPP-1216/src/main/java/org/jboss/wsf/common/DOMUtils.java 2008-09-26
16:18:15 UTC (rev 8250)
+++
common/branches/jbossws-common-1.0.0.GA_JBPAPP-1216/src/main/java/org/jboss/wsf/common/DOMUtils.java 2008-09-26
16:36:23 UTC (rev 8251)
@@ -68,16 +68,25 @@
{
private static Logger log = Logger.getLogger(DOMUtils.class);
+ private static final String DISABLE_DEFERRED_NODE_EXPANSION =
"org.jboss.ws.disable_deferred_node_expansion";
+
// All elements created by the same thread are created by the same builder and belong
to the same doc
- private static ThreadLocal documentThreadLocal = new ThreadLocal();
- private static ThreadLocal builderThreadLocal = new ThreadLocal() {
- protected Object initialValue()
+ private static ThreadLocal<Document> documentThreadLocal = new
ThreadLocal<Document>();
+ private static ThreadLocal<DocumentBuilder> builderThreadLocal = new
ThreadLocal<DocumentBuilder>() {
+ protected DocumentBuilder initialValue()
{
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(true);
+
+ boolean disableDeferredNodeExpansion =
Boolean.getBoolean(DISABLE_DEFERRED_NODE_EXPANSION);
+ if (disableDeferredNodeExpansion == true)
+ {
+
factory.setFeature("http://apache.org/xml/features/dom/defer-node-ex...;,
false);
+ }
+
DocumentBuilder builder = factory.newDocumentBuilder();
setEntityResolver(builder);
return builder;
@@ -503,6 +512,7 @@
private static Iterator getChildElementsIntern(Node node, QName nodeName)
{
ArrayList list = new ArrayList();
+
NodeList nlist = node.getChildNodes();
for (int i = 0; i < nlist.getLength(); i++)
{