This is an automated email from the ASF dual-hosted git repository. sseifert pushed a commit to branch feature/SLING-12529-factories-thread-safe in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-osgi-mock.git
commit 36de60037c26b29d4a4a0dbd22c753debfa79878 Author: Stefan Seifert <[email protected]> AuthorDate: Mon Dec 9 17:32:48 2024 +0100 SLING-12529 XPathFactory is not thread-safe --- .../apache/sling/testing/mock/osgi/OsgiMetadataUtil.java | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java b/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java index 3a2570e..7728896 100644 --- a/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java +++ b/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java @@ -72,15 +72,6 @@ final class OsgiMetadataUtil { private static final String METADATA_PATH = "OSGI-INF"; private static final String METADATA_METATYPE_PATH = "OSGI-INF/metatype/"; - private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY; - - static { - DOCUMENT_BUILDER_FACTORY = DocumentBuilderFactory.newInstance(); - DOCUMENT_BUILDER_FACTORY.setNamespaceAware(true); - } - - private static final XPathFactory XPATH_FACTORY = XPathFactory.newInstance(); - private static final BidiMap<String, String> NAMESPACES = new TreeBidiMap<>(); static { @@ -145,7 +136,7 @@ final class OsgiMetadataUtil { private static Map<String, Document> initMetadataDocumentCache() { Map<String, Document> cacheMap = new HashMap<>(); - XPath xpath = XPATH_FACTORY.newXPath(); + XPath xpath = XPathFactory.newInstance().newXPath(); xpath.setNamespaceContext(NAMESPACE_CONTEXT); XPathExpression xpathExpression; try { @@ -356,7 +347,7 @@ final class OsgiMetadataUtil { private static NodeList queryNodes(Document metadata, String xpathQuery) { try { - XPath xpath = XPATH_FACTORY.newXPath(); + XPath xpath = XPathFactory.newInstance().newXPath(); xpath.setNamespaceContext(NAMESPACE_CONTEXT); return (NodeList) xpath.evaluate(xpathQuery, metadata, XPathConstants.NODESET); } catch (XPathExpressionException ex) { @@ -366,7 +357,7 @@ final class OsgiMetadataUtil { private static Node queryNode(Document metadata, String xpathQuery) { try { - XPath xpath = XPATH_FACTORY.newXPath(); + XPath xpath = XPathFactory.newInstance().newXPath(); xpath.setNamespaceContext(NAMESPACE_CONTEXT); return (Node) xpath.evaluate(xpathQuery, metadata, XPathConstants.NODE); } catch (XPathExpressionException ex) {
