You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2019/07/11 14:50:10 UTC

svn commit: r1862932 - /santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/XMLUtils.java

Author: coheigea
Date: Thu Jul 11 14:50:10 2019
New Revision: 1862932

URL: http://svn.apache.org/viewvc?rev=1862932&view=rev
Log:
Minor improvement to XMLUtils

Modified:
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/XMLUtils.java

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/XMLUtils.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/XMLUtils.java?rev=1862932&r1=1862931&r2=1862932&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/XMLUtils.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/XMLUtils.java Thu Jul 11 14:50:10 2019
@@ -1014,10 +1014,16 @@ public final class XMLUtils {
         if (loader == null) {
             loader = getClassLoader(XMLUtils.class);
         }
+        // If the ClassLoader is null then just create a DocumentBuilder and use it
+        if (loader == null) {
+            DocumentBuilder documentBuilder = createDocumentBuilder(true);
+            return documentBuilder.newDocument();
+        }
 
-        DocumentBuilder documentBuilder = getDocumentBuilder(true, loader);
+        Queue<DocumentBuilder> queue = getDocumentBuilderQueue(true, loader);
+        DocumentBuilder documentBuilder = getDocumentBuilder(true, queue);
         Document doc = documentBuilder.newDocument();
-        repoolDocumentBuilder(documentBuilder, true, loader);
+        repoolDocumentBuilder(documentBuilder, queue);
         return doc;
     }
 
@@ -1030,10 +1036,16 @@ public final class XMLUtils {
         if (loader == null) {
             loader = getClassLoader(XMLUtils.class);
         }
+        // If the ClassLoader is null then just create a DocumentBuilder and use it
+        if (loader == null) {
+            DocumentBuilder documentBuilder = createDocumentBuilder(disAllowDocTypeDeclarations);
+            return documentBuilder.parse(inputStream);
+        }
 
-        DocumentBuilder documentBuilder = getDocumentBuilder(disAllowDocTypeDeclarations, loader);
+        Queue<DocumentBuilder> queue = getDocumentBuilderQueue(disAllowDocTypeDeclarations, loader);
+        DocumentBuilder documentBuilder = getDocumentBuilder(disAllowDocTypeDeclarations, queue);
         Document doc = documentBuilder.parse(inputStream);
-        repoolDocumentBuilder(documentBuilder, disAllowDocTypeDeclarations, loader);
+        repoolDocumentBuilder(documentBuilder, queue);
         return doc;
     }
 
@@ -1043,10 +1055,16 @@ public final class XMLUtils {
         if (loader == null) {
             loader = getClassLoader(XMLUtils.class);
         }
+        // If the ClassLoader is null then just create a DocumentBuilder and use it
+        if (loader == null) {
+            DocumentBuilder documentBuilder = createDocumentBuilder(disAllowDocTypeDeclarations);
+            return documentBuilder.parse(uri);
+        }
 
-        DocumentBuilder documentBuilder = getDocumentBuilder(disAllowDocTypeDeclarations, loader);
+        Queue<DocumentBuilder> queue = getDocumentBuilderQueue(disAllowDocTypeDeclarations, loader);
+        DocumentBuilder documentBuilder = getDocumentBuilder(disAllowDocTypeDeclarations, queue);
         Document doc = documentBuilder.parse(uri);
-        repoolDocumentBuilder(documentBuilder, disAllowDocTypeDeclarations, loader);
+        repoolDocumentBuilder(documentBuilder, queue);
         return doc;
     }
 
@@ -1060,10 +1078,16 @@ public final class XMLUtils {
         if (loader == null) {
             loader = getClassLoader(XMLUtils.class);
         }
+        // If the ClassLoader is null then just create a DocumentBuilder and use it
+        if (loader == null) {
+            DocumentBuilder documentBuilder = createDocumentBuilder(disAllowDocTypeDeclarations);
+            return documentBuilder.parse(inputSource);
+        }
 
-        DocumentBuilder documentBuilder = getDocumentBuilder(disAllowDocTypeDeclarations, loader);
+        Queue<DocumentBuilder> queue = getDocumentBuilderQueue(disAllowDocTypeDeclarations, loader);
+        DocumentBuilder documentBuilder = getDocumentBuilder(disAllowDocTypeDeclarations, queue);
         Document doc = documentBuilder.parse(inputSource);
-        repoolDocumentBuilder(documentBuilder, disAllowDocTypeDeclarations, loader);
+        repoolDocumentBuilder(documentBuilder, queue);
         return doc;
     }
 
@@ -1112,11 +1136,7 @@ public final class XMLUtils {
         return resizedBytes;
     }
 
-    private static DocumentBuilder getDocumentBuilder(boolean disAllowDocTypeDeclarations, ClassLoader loader) throws ParserConfigurationException {
-        if (loader == null) {
-            return createDocumentBuilder(disAllowDocTypeDeclarations);
-        }
-
+    private static Queue<DocumentBuilder> getDocumentBuilderQueue(boolean disAllowDocTypeDeclarations, ClassLoader loader) throws ParserConfigurationException {
         Map<ClassLoader, Queue<DocumentBuilder>> docBuilderCache =
             disAllowDocTypeDeclarations ? DOCUMENT_BUILDERS_DISALLOW_DOCTYPE : DOCUMENT_BUILDERS;
         Queue<DocumentBuilder> queue = docBuilderCache.get(loader);
@@ -1125,6 +1145,10 @@ public final class XMLUtils {
             docBuilderCache.put(loader, queue);
         }
 
+        return queue;
+    }
+
+    private static DocumentBuilder getDocumentBuilder(boolean disAllowDocTypeDeclarations, Queue<DocumentBuilder> queue) throws ParserConfigurationException {
         DocumentBuilder db = queue.poll();
         if (db == null) {
             db = createDocumentBuilder(disAllowDocTypeDeclarations);
@@ -1140,14 +1164,10 @@ public final class XMLUtils {
         return f.newDocumentBuilder();
     }
 
-    private static void repoolDocumentBuilder(DocumentBuilder db, boolean disAllowDocTypeDeclarations, ClassLoader loader) {
-        if (loader != null) {
-            Queue<DocumentBuilder> queue =
-                disAllowDocTypeDeclarations ? DOCUMENT_BUILDERS_DISALLOW_DOCTYPE.get(loader) : DOCUMENT_BUILDERS.get(loader);
-            if (queue != null) {
-                db.reset();
-                queue.offer(db);
-            }
+    private static void repoolDocumentBuilder(DocumentBuilder db, Queue<DocumentBuilder> queue) {
+        if (queue != null) {
+            db.reset();
+            queue.offer(db);
         }
     }