Updated Branches:
  refs/heads/master 7c9326f49 -> 6f2ceef62

CAMEL-7131 Set the default feature of DocumentFactoryBuilder


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6f2ceef6
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6f2ceef6
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6f2ceef6

Branch: refs/heads/master
Commit: 6f2ceef627fe4fe350a3ee9d29512ae019dfb614
Parents: 7c9326f
Author: Willem Jiang <willem.ji...@gmail.com>
Authored: Mon Jan 13 21:29:22 2014 +0800
Committer: Willem Jiang <willem.ji...@gmail.com>
Committed: Mon Jan 13 21:29:22 2014 +0800

----------------------------------------------------------------------
 .../camel/converter/jaxp/XmlConverter.java      |  7 +++++
 .../camel/builder/xml/XPathFeatureTest.java     | 30 +++++++++++++++-----
 2 files changed, 30 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/6f2ceef6/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java 
b/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
index 43d39a4..ca3df7d 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
@@ -944,6 +944,13 @@ public class XmlConverter {
         factory.setNamespaceAware(true);
         factory.setIgnoringElementContentWhitespace(true);
         factory.setIgnoringComments(true);
+        try {
+            // Disable the external-general-entitites by default
+            
factory.setFeature("http://xml.org/sax/features/external-general-entities";, 
false);
+        } catch (ParserConfigurationException e) {
+            LOG.warn("DocumentBuilderFactory doesn't support the feature {} 
with value {}, due to {}."
+                     , new 
Object[]{"http://xml.org/sax/features/external-general-entities";, true, e});
+        }
         // setup the feature from the system property
         setupFeatures(factory);
         return factory;

http://git-wip-us.apache.org/repos/asf/camel/blob/6f2ceef6/camel-core/src/test/java/org/apache/camel/builder/xml/XPathFeatureTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/builder/xml/XPathFeatureTest.java 
b/camel-core/src/test/java/org/apache/camel/builder/xml/XPathFeatureTest.java
index 71f315f..0d90530 100644
--- 
a/camel-core/src/test/java/org/apache/camel/builder/xml/XPathFeatureTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/builder/xml/XPathFeatureTest.java
@@ -17,6 +17,10 @@
 package org.apache.camel.builder.xml;
 
 
+import java.io.FileNotFoundException;
+
+import javax.xml.xpath.XPathExpressionException;
+
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.converter.jaxp.XmlConverter;
@@ -34,16 +38,28 @@ public class XPathFeatureTest extends ContextTestSupport {
     public boolean isUseRouteBuilder() {
         return false;
     }
-
+  
     public void testXPathResult() throws Exception {
-        // Set this feature will disable the external general entities
-        System.setProperty(DOM_BUILER_FACTORY_FEATRUE + ":" 
-            + "http://xml.org/sax/features/external-general-entities";, 
"false");
-       
         String result = 
(String)xpath("/").stringResult().evaluate(createExchange(XML_DATA));
         assertEquals("Get a wrong result", "  ", result);
-        System.clearProperty(DOM_BUILER_FACTORY_FEATRUE + ":" 
-            + "http://xml.org/sax/features/external-general-entities";);
+    }
+    
+    public void testXPath() throws Exception {
+        
+        // Set this feature will enable the external general entities
+        System.setProperty(DOM_BUILER_FACTORY_FEATRUE + ":" 
+            + "http://xml.org/sax/features/external-general-entities";, "true");
+        try {
+            xpath("/").stringResult().evaluate(createExchange(XML_DATA));
+            fail("Expect an Exception here");
+        } catch (Exception ex) {
+            assertTrue("Get a wrong exception cause.", ex instanceof 
InvalidXPathExpression);
+            assertTrue("Get a wrong exception cause.", ex.getCause() 
instanceof XPathExpressionException);
+            assertTrue("Get a wrong exception cause.", 
ex.getCause().getCause() instanceof FileNotFoundException);
+        } finally {
+            System.clearProperty(DOM_BUILER_FACTORY_FEATRUE + ":" 
+                + "http://xml.org/sax/features/external-general-entities";);
+        }
     }
     
     protected Exchange createExchange(Object xml) {

Reply via email to