You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ge...@apache.org on 2009/11/11 10:23:16 UTC

svn commit: r834816 - /servicemix/components/shared-libraries/trunk/servicemix-soap2/src/main/java/org/apache/servicemix/soap/util/DomUtil.java

Author: gertv
Date: Wed Nov 11 09:23:16 2009
New Revision: 834816

URL: http://svn.apache.org/viewvc?rev=834816&view=rev
Log:
SMXCOMP-672: Use cached DocumentBuilder for creating Document instances

Modified:
    servicemix/components/shared-libraries/trunk/servicemix-soap2/src/main/java/org/apache/servicemix/soap/util/DomUtil.java

Modified: servicemix/components/shared-libraries/trunk/servicemix-soap2/src/main/java/org/apache/servicemix/soap/util/DomUtil.java
URL: http://svn.apache.org/viewvc/servicemix/components/shared-libraries/trunk/servicemix-soap2/src/main/java/org/apache/servicemix/soap/util/DomUtil.java?rev=834816&r1=834815&r2=834816&view=diff
==============================================================================
--- servicemix/components/shared-libraries/trunk/servicemix-soap2/src/main/java/org/apache/servicemix/soap/util/DomUtil.java (original)
+++ servicemix/components/shared-libraries/trunk/servicemix-soap2/src/main/java/org/apache/servicemix/soap/util/DomUtil.java Wed Nov 11 09:23:16 2009
@@ -21,6 +21,7 @@
 
 import javax.xml.XMLConstants;
 import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.Source;
@@ -45,11 +46,12 @@
 public class DomUtil {
 
     private static DocumentBuilderFactory documentBuilderFactory;
+    private static DocumentBuilder documentBuilder;
     private static TransformerFactory transformerFactory;
     
     public static Document createDocument() {
         try {
-            return getDocumentBuilderFactory().newDocumentBuilder().newDocument();
+            return getDocumentBuilder().newDocument();
         } catch (ParserConfigurationException e) {
             throw new Fault(e);
         }
@@ -89,6 +91,17 @@
         }
         return documentBuilderFactory;
     }
+
+    /**
+     * Returns a cached DocumentBuilder instance - should only be used for methods that are considered thread-safe
+     * (e.g. {@link DocumentBuilder#newDocument})
+     */
+    public static DocumentBuilder getDocumentBuilder() throws ParserConfigurationException {
+        if (documentBuilder == null) {
+            documentBuilder = getDocumentBuilderFactory().newDocumentBuilder();
+        }
+        return documentBuilder;
+    }
     
     public static TransformerFactory getTransformerFactory() {
         if (transformerFactory == null) {