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);
}
}