SM-1613: Add a property to validate or not using external DTD (by default, it's true, validating).

git-svn-id: https://svn.apache.org/repos/asf/servicemix/utils/trunk@781522 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/servicemix/jbi/jaxp/SourceTransformer.java b/src/main/java/org/apache/servicemix/jbi/jaxp/SourceTransformer.java
index a4e696e..9181912 100644
--- a/src/main/java/org/apache/servicemix/jbi/jaxp/SourceTransformer.java
+++ b/src/main/java/org/apache/servicemix/jbi/jaxp/SourceTransformer.java
@@ -58,6 +58,7 @@
 public class SourceTransformer {
 
     public static final String DEFAULT_CHARSET_PROPERTY = "org.apache.servicemix.default.charset";
+    public static final String DEFAULT_VALIDATING_DTD_PROPERTY = "org.apache.servicemix.default.validating-dtd";
 
     /*
      * When converting a DOM tree to a SAXSource, we try to use Xalan internal
@@ -76,6 +77,7 @@
     }
 
     private static String defaultCharset = System.getProperty(DEFAULT_CHARSET_PROPERTY, "UTF-8");
+    private static boolean defaultValidatingDtd = (new Boolean(System.getProperty(DEFAULT_VALIDATING_DTD_PROPERTY, "true"))).booleanValue();
 
     private DocumentBuilderFactory documentBuilderFactory;
 
@@ -95,6 +97,14 @@
     public static void setDefaultCharset(String defaultCharset) {
         SourceTransformer.defaultCharset = defaultCharset;
     }
+    
+    public static boolean getDefaultValidatingDtd() {
+        return defaultValidatingDtd;
+    }
+    
+    public static void setDefaultValidatingDtd(boolean defaultValidatingDtd) {
+        SourceTransformer.defaultValidatingDtd = defaultValidatingDtd;
+    }
 
     /**
      * Converts the given input Source into the required result, using the default charset
@@ -278,6 +288,8 @@
             try {
                 Constructor cns = DOM_2_SAX_CLASS.getConstructor(new Class[] {Node.class });
                 XMLReader converter = (XMLReader) cns.newInstance(new Object[] {source.getNode() });
+                converter.setFeature("http://xml.org/sax/features/validation", defaultValidatingDtd);
+                converter.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", defaultValidatingDtd);
                 return new SAXSource(converter, new InputSource());
             } catch (Exception e) {
                 throw new TransformerException(e);
@@ -467,6 +479,7 @@
         factory.setNamespaceAware(true);
         factory.setIgnoringElementContentWhitespace(true);
         factory.setIgnoringComments(true);
+        factory.setValidating(defaultValidatingDtd);
         return factory;
     }