You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by su...@apache.org on 2017/01/24 18:41:56 UTC

knox git commit: KNOX-854 Consolidate DocumentBuilderFactory calls + enable SECURE_PROCESSING (Colm O hEigeartaigh via Sumit Gupta)

Repository: knox
Updated Branches:
  refs/heads/master 039915f6e -> ebc2ac819


KNOX-854 Consolidate DocumentBuilderFactory calls + enable SECURE_PROCESSING (Colm O hEigeartaigh via Sumit Gupta)


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

Branch: refs/heads/master
Commit: ebc2ac8192627034b72892744b5277eaf5fc9439
Parents: 039915f
Author: Sumit Gupta <su...@apache.org>
Authored: Tue Jan 24 13:40:11 2017 -0500
Committer: Sumit Gupta <su...@apache.org>
Committed: Tue Jan 24 13:40:11 2017 -0500

----------------------------------------------------------------------
 .../ha/provider/impl/HaDescriptorManager.java   | 12 +++------
 .../rewrite/impl/html/HtmlFilterReaderBase.java |  4 +--
 .../rewrite/impl/xml/XmlFilterReader.java       |  4 +--
 .../impl/xml/XmlUrlRewriteRulesExporter.java    | 12 +--------
 .../gateway/deploy/DeploymentFactoryTest.java   |  3 ++-
 .../xml/XmlGatewayDescriptorExporterTest.java   | 16 ++++--------
 .../gateway/shell/hbase/table/CreateTable.java  |  8 ++----
 .../gateway/shell/hbase/table/UpdateTable.java  |  8 ++----
 .../gateway/shell/hbase/table/row/StoreRow.java |  8 ++----
 .../hbase/table/scanner/CreateScanner.java      |  8 ++----
 .../java/org/apache/hadoop/test/TestUtils.java  | 12 ---------
 .../gateway/GatewayAdminTopologyFuncTest.java   | 16 +++---------
 .../gateway/OozieServiceDefinitionTest.java     |  7 +++---
 .../deploy/DeploymentFactoryFuncTest.java       | 23 ++++++++---------
 .../apache/hadoop/gateway/util/XmlUtils.java    | 26 +++++++++++++++++---
 15 files changed, 65 insertions(+), 102 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManager.java
----------------------------------------------------------------------
diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManager.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManager.java
index cbd0c78..6f7af32 100644
--- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManager.java
+++ b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManager.java
@@ -21,13 +21,12 @@ import org.apache.hadoop.gateway.ha.provider.HaDescriptor;
 import org.apache.hadoop.gateway.ha.provider.HaServiceConfig;
 import org.apache.hadoop.gateway.ha.provider.impl.i18n.HaMessages;
 import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 import org.xml.sax.SAXException;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
@@ -46,10 +45,7 @@ public class HaDescriptorManager implements HaDescriptorConstants {
 
    public static void store(HaDescriptor descriptor, Writer writer) throws IOException {
       try {
-         DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
-         DocumentBuilder builder = builderFactory.newDocumentBuilder();
-         Document document = builder.newDocument();
-         document.setXmlStandalone(true);
+         Document document = XmlUtils.createDocument();
 
          Element root = document.createElement(ROOT_ELEMENT);
          document.appendChild(root);
@@ -94,10 +90,8 @@ public class HaDescriptorManager implements HaDescriptorConstants {
 
    public static HaDescriptor load(InputStream inputStream) throws IOException {
       HaDescriptor descriptor = HaDescriptorFactory.createDescriptor();
-      DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
       try {
-         DocumentBuilder builder = builderFactory.newDocumentBuilder();
-         Document document = builder.parse(inputStream);
+         Document document = XmlUtils.readXml( inputStream );
          NodeList nodeList = document.getElementsByTagName(SERVICE_ELEMENT);
          if (nodeList != null && nodeList.getLength() > 0) {
             for (int i = 0; i < nodeList.getLength(); i++) {

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
index 6839e44..1eb2c1d 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
@@ -31,11 +31,11 @@ import org.apache.hadoop.gateway.filter.rewrite.i18n.UrlRewriteMessages;
 import org.apache.hadoop.gateway.filter.rewrite.impl.UrlRewriteFilterReader;
 import org.apache.hadoop.gateway.filter.rewrite.impl.UrlRewriteUtil;
 import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import java.io.IOException;
 import java.io.Reader;
@@ -67,7 +67,7 @@ public abstract class HtmlFilterReaderBase extends Reader implements UrlRewriteF
 
   protected HtmlFilterReaderBase( Reader reader ) throws IOException, ParserConfigurationException {
     this.reader = reader;
-    document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+    document = XmlUtils.createDocument( false );
     stack = new Stack<Level>();
     parser = new StreamedSource( reader );
     iterator = parser.iterator();

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/xml/XmlFilterReader.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/xml/XmlFilterReader.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/xml/XmlFilterReader.java
index 4b06540..e6e1797 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/xml/XmlFilterReader.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/xml/XmlFilterReader.java
@@ -29,6 +29,7 @@ import org.apache.hadoop.gateway.filter.rewrite.i18n.UrlRewriteMessages;
 import org.apache.hadoop.gateway.filter.rewrite.i18n.UrlRewriteResources;
 import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
 import org.apache.hadoop.gateway.i18n.resources.ResourcesFactory;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -36,7 +37,6 @@ import org.w3c.dom.Node;
 import org.w3c.dom.Text;
 
 import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.stream.XMLEventReader;
 import javax.xml.stream.XMLInputFactory;
@@ -190,7 +190,7 @@ public abstract class XmlFilterReader extends Reader {
     //System.out.println( "SD=" + event );
     String s;
 
-    document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+    document = XmlUtils.createDocument( false );
     pushLevel( null, event, document, document, config );
 
     writer.write( "<?xml" );

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/xml/XmlUrlRewriteRulesExporter.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/xml/XmlUrlRewriteRulesExporter.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/xml/XmlUrlRewriteRulesExporter.java
index 6fa92d5..1cc10a3 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/xml/XmlUrlRewriteRulesExporter.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/xml/XmlUrlRewriteRulesExporter.java
@@ -27,15 +27,8 @@ import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
 import java.beans.BeanInfo;
 import java.beans.IntrospectionException;
 import java.beans.Introspector;
@@ -56,10 +49,7 @@ public class XmlUrlRewriteRulesExporter implements UrlRewriteRulesExporter, XmlR
   @Override
   public void store( UrlRewriteRulesDescriptor descriptor, Writer writer ) throws IOException {
     try {
-      DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
-      DocumentBuilder builder = builderFactory.newDocumentBuilder();
-      Document document = builder.newDocument();
-      document.setXmlStandalone( true );
+      Document document = XmlUtils.createDocument();
 
       Element root = document.createElement( ROOT );
       document.appendChild( root );

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-server/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryTest.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryTest.java b/gateway-server/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryTest.java
index 129f0fb..76f7858 100644
--- a/gateway-server/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryTest.java
+++ b/gateway-server/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryTest.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.gateway.config.impl.GatewayConfigImpl;
 import org.apache.hadoop.gateway.topology.Application;
 import org.apache.hadoop.gateway.topology.Service;
 import org.apache.hadoop.gateway.topology.Topology;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.apache.hadoop.test.TestUtils;
 import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
 import org.junit.Test;
@@ -48,7 +49,7 @@ public class DeploymentFactoryTest {
 
     EnterpriseArchive archive = DeploymentFactory.createDeployment( config, topology );
 
-    Document xml = TestUtils.parseXml( archive.get( "/META-INF/topology.xml" ).getAsset().openStream() );
+    Document xml = XmlUtils.readXml( archive.get( "/META-INF/topology.xml" ).getAsset().openStream() );
     //TestUtils.dumpXml( xml );
     assertThat( xml, hasXPath( "/topology/gateway" ) );
     assertThat( xml, hasXPath( "/topology/name", equalTo( "test-topology" ) ) );

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-server/src/test/java/org/apache/hadoop/gateway/descriptor/xml/XmlGatewayDescriptorExporterTest.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/test/java/org/apache/hadoop/gateway/descriptor/xml/XmlGatewayDescriptorExporterTest.java b/gateway-server/src/test/java/org/apache/hadoop/gateway/descriptor/xml/XmlGatewayDescriptorExporterTest.java
index 67ee91d..43b7894 100644
--- a/gateway-server/src/test/java/org/apache/hadoop/gateway/descriptor/xml/XmlGatewayDescriptorExporterTest.java
+++ b/gateway-server/src/test/java/org/apache/hadoop/gateway/descriptor/xml/XmlGatewayDescriptorExporterTest.java
@@ -19,14 +19,13 @@ package org.apache.hadoop.gateway.descriptor.xml;
 
 import org.apache.hadoop.gateway.descriptor.GatewayDescriptor;
 import org.apache.hadoop.gateway.descriptor.GatewayDescriptorFactory;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.apache.hadoop.test.Console;
 import org.junit.Test;
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import java.io.CharArrayWriter;
 import java.io.IOException;
@@ -72,7 +71,8 @@ public class XmlGatewayDescriptorExporterTest {
 
     String xml = writer.toString();
 
-    Document doc = parse( xml );
+    InputSource source = new InputSource( new StringReader( xml ) );
+    Document doc = XmlUtils.readXml( source );
 
     assertThat( doc, hasXPath( "/gateway/resource[1]/pattern", is( "resource1-source" ) ) );
     //assertThat( doc, hasXPath( "/gateway/resource[1]/target", is( "resource1-target" ) ) );
@@ -99,7 +99,8 @@ public class XmlGatewayDescriptorExporterTest {
     String xml = writer.toString();
     //System.out.println( xml );
 
-    Document doc = parse( xml );
+    InputSource source = new InputSource( new StringReader( xml ) );
+    Document doc = XmlUtils.readXml( source );
 
     assertThat( doc, hasXPath( "/gateway/resource/filter/param" ) );
   }
@@ -122,13 +123,6 @@ public class XmlGatewayDescriptorExporterTest {
 
   }
 
-  private Document parse( String xml ) throws IOException, SAXException, ParserConfigurationException {
-    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-    DocumentBuilder builder = factory.newDocumentBuilder();
-    InputSource source = new InputSource( new StringReader( xml ) );
-    return builder.parse( source );
-  }
-
   private static class BrokenWriter extends Writer {
 
     @Override

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/CreateTable.java
----------------------------------------------------------------------
diff --git a/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/CreateTable.java b/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/CreateTable.java
index cb63757..d1fcc88 100644
--- a/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/CreateTable.java
+++ b/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/CreateTable.java
@@ -20,6 +20,7 @@ import org.apache.hadoop.gateway.shell.AbstractRequest;
 import org.apache.hadoop.gateway.shell.EmptyResponse;
 import org.apache.hadoop.gateway.shell.Hadoop;
 import org.apache.hadoop.gateway.shell.hbase.HBase;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpPut;
@@ -29,8 +30,6 @@ import org.apache.http.entity.StringEntity;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
@@ -79,10 +78,7 @@ public class CreateTable {
       return new Callable<Response>() {
         @Override
         public Response call() throws Exception {
-          DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
-          DocumentBuilder builder = builderFactory.newDocumentBuilder();
-          Document document = builder.newDocument();
-          document.setXmlStandalone( true );
+          Document document = XmlUtils.createDocument();
 
           Element root = document.createElement( ELEMENT_TABLE_SCHEMA );
           root.setAttribute( ATTRIBUTE_NAME, tableName );

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/UpdateTable.java
----------------------------------------------------------------------
diff --git a/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/UpdateTable.java b/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/UpdateTable.java
index ea4f02e..80c7b47 100644
--- a/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/UpdateTable.java
+++ b/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/UpdateTable.java
@@ -20,6 +20,7 @@ import org.apache.hadoop.gateway.shell.AbstractRequest;
 import org.apache.hadoop.gateway.shell.EmptyResponse;
 import org.apache.hadoop.gateway.shell.Hadoop;
 import org.apache.hadoop.gateway.shell.hbase.HBase;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpPost;
@@ -29,8 +30,6 @@ import org.apache.http.entity.StringEntity;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
@@ -73,10 +72,7 @@ public class UpdateTable {
       return new Callable<Response>() {
         @Override
         public Response call() throws Exception {
-          DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
-          DocumentBuilder builder = builderFactory.newDocumentBuilder();
-          Document document = builder.newDocument();
-          document.setXmlStandalone( true );
+          Document document = XmlUtils.createDocument();
 
           Element root = document.createElement( ELEMENT_TABLE_SCHEMA );
           document.appendChild( root );

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/row/StoreRow.java
----------------------------------------------------------------------
diff --git a/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/row/StoreRow.java b/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/row/StoreRow.java
index 42a2703..c78b3c5 100644
--- a/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/row/StoreRow.java
+++ b/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/row/StoreRow.java
@@ -21,6 +21,7 @@ import org.apache.hadoop.gateway.shell.AbstractRequest;
 import org.apache.hadoop.gateway.shell.EmptyResponse;
 import org.apache.hadoop.gateway.shell.Hadoop;
 import org.apache.hadoop.gateway.shell.hbase.HBase;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpPost;
@@ -30,8 +31,6 @@ import org.apache.http.entity.StringEntity;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
@@ -77,10 +76,7 @@ public class StoreRow {
       return new Callable<Response>() {
         @Override
         public Response call() throws Exception {
-          DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
-          DocumentBuilder builder = builderFactory.newDocumentBuilder();
-          Document document = builder.newDocument();
-          document.setXmlStandalone( true );
+          Document document = XmlUtils.createDocument();
 
           Element root = document.createElement( ELEMENT_CELL_SET );
           document.appendChild( root );

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/scanner/CreateScanner.java
----------------------------------------------------------------------
diff --git a/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/scanner/CreateScanner.java b/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/scanner/CreateScanner.java
index d0ff0f8..df95514 100644
--- a/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/scanner/CreateScanner.java
+++ b/gateway-shell/src/main/java/org/apache/hadoop/gateway/shell/hbase/table/scanner/CreateScanner.java
@@ -22,6 +22,7 @@ import org.apache.hadoop.gateway.shell.EmptyResponse;
 import org.apache.hadoop.gateway.shell.Hadoop;
 import org.apache.hadoop.gateway.shell.hbase.HBase;
 import org.apache.hadoop.gateway.shell.hbase.table.row.Column;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.apache.http.Header;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
@@ -32,8 +33,6 @@ import org.apache.http.entity.StringEntity;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
@@ -134,10 +133,7 @@ public class CreateScanner {
       return new Callable<Response>() {
         @Override
         public Response call() throws Exception {
-          DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
-          DocumentBuilder builder = builderFactory.newDocumentBuilder();
-          Document document = builder.newDocument();
-          document.setXmlStandalone( true );
+          Document document = XmlUtils.createDocument();
 
           Element root = document.createElement( ELEMENT_SCANNER );
           if( startRow != null ) {

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-test-utils/src/main/java/org/apache/hadoop/test/TestUtils.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/hadoop/test/TestUtils.java b/gateway-test-utils/src/main/java/org/apache/hadoop/test/TestUtils.java
index 87f801c..143973e 100644
--- a/gateway-test-utils/src/main/java/org/apache/hadoop/test/TestUtils.java
+++ b/gateway-test-utils/src/main/java/org/apache/hadoop/test/TestUtils.java
@@ -33,9 +33,6 @@ import java.nio.ByteBuffer;
 import java.util.Properties;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
@@ -54,8 +51,6 @@ import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
 import org.eclipse.jetty.http.HttpTester;
 import org.eclipse.jetty.servlet.ServletTester;
 import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
 
 public class TestUtils {
 
@@ -118,13 +113,6 @@ public class TestUtils {
     return tempDir;
   }
 
-  public static Document parseXml( InputStream stream ) throws ParserConfigurationException, IOException, SAXException {
-    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-    DocumentBuilder builder = factory.newDocumentBuilder();
-    Document document = builder.parse( new InputSource( stream ) );
-    return document;
-  }
-
   public static void dumpXml( Document document ) throws TransformerException {
     Transformer transformer = TransformerFactory.newInstance().newTransformer();
     transformer.setOutputProperty( OutputKeys.INDENT, "yes" );

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayAdminTopologyFuncTest.java
----------------------------------------------------------------------
diff --git a/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayAdminTopologyFuncTest.java b/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayAdminTopologyFuncTest.java
index ed85562..94b458e 100644
--- a/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayAdminTopologyFuncTest.java
+++ b/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayAdminTopologyFuncTest.java
@@ -22,7 +22,6 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringReader;
-import java.net.ServerSocket;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
@@ -31,9 +30,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
 import javax.ws.rs.core.MediaType;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
 
 import com.jayway.restassured.http.ContentType;
 import com.mycila.xmltool.XMLDoc;
@@ -49,6 +45,7 @@ import org.apache.hadoop.gateway.topology.Param;
 import org.apache.hadoop.gateway.topology.Provider;
 import org.apache.hadoop.gateway.topology.Service;
 import org.apache.hadoop.gateway.topology.Topology;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.apache.hadoop.test.TestUtils;
 import org.apache.http.HttpStatus;
 import org.apache.log4j.Appender;
@@ -61,7 +58,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
 
 import static com.jayway.restassured.RestAssured.given;
 import static org.apache.hadoop.test.TestUtils.LOG_ENTER;
@@ -622,7 +618,8 @@ public class GatewayAdminTopologyFuncTest {
         //.log().all()
         .put(url).getBody().asString();
 
-    Document doc = parse( XML );
+    InputSource source = new InputSource( new StringReader( XML ) );
+    Document doc = XmlUtils.readXml( source );
 
     assertThat( doc, hasXPath( "/topology/gateway/provider[1]/name", containsString( "WebAppSec" ) ) );
     assertThat( doc, hasXPath( "/topology/gateway/provider[1]/param/name", containsString( "csrf.enabled" ) ) );
@@ -828,13 +825,6 @@ public class GatewayAdminTopologyFuncTest {
     LOG_EXIT();
   }
 
-  private Document parse(String xml ) throws IOException, SAXException, ParserConfigurationException {
-    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-    DocumentBuilder builder = factory.newDocumentBuilder();
-    InputSource source = new InputSource( new StringReader( xml ) );
-    return builder.parse( source );
-  }
-
   private static final String CLASS = GatewayAdminTopologyFuncTest.class.getCanonicalName();
 
 }

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-test/src/test/java/org/apache/hadoop/gateway/OozieServiceDefinitionTest.java
----------------------------------------------------------------------
diff --git a/gateway-test/src/test/java/org/apache/hadoop/gateway/OozieServiceDefinitionTest.java b/gateway-test/src/test/java/org/apache/hadoop/gateway/OozieServiceDefinitionTest.java
index 5acd34e..6a19e82 100644
--- a/gateway-test/src/test/java/org/apache/hadoop/gateway/OozieServiceDefinitionTest.java
+++ b/gateway-test/src/test/java/org/apache/hadoop/gateway/OozieServiceDefinitionTest.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletFilter;
 import org.apache.hadoop.gateway.filter.rewrite.impl.UrlRewriteRequest;
 import org.apache.hadoop.gateway.services.GatewayServices;
 import org.apache.hadoop.gateway.services.registry.ServiceRegistry;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.apache.hadoop.test.TestUtils;
 import org.apache.hadoop.test.mock.MockServletInputStream;
 import org.easymock.EasyMock;
@@ -91,7 +92,7 @@ public class OozieServiceDefinitionTest {
 
     InputStream stream = rewriteRequest.getInputStream();
 
-    Document document = TestUtils.parseXml( stream );
+    Document document = XmlUtils.readXml( stream );
 
     assertThat( document,
         hasXPath( "/configuration/property[name='oozie.wf.application.path']/value",
@@ -144,7 +145,7 @@ public class OozieServiceDefinitionTest {
 
     InputStream stream = rewriteRequest.getInputStream();
 
-    Document document = TestUtils.parseXml( stream );
+    Document document = XmlUtils.readXml( stream );
 
     assertThat( document,
         hasXPath( "/configuration/property[name='oozie.wf.application.path']/value",
@@ -198,7 +199,7 @@ public class OozieServiceDefinitionTest {
 
     InputStream stream = rewriteRequest.getInputStream();
 
-    Document document = TestUtils.parseXml( stream );
+    Document document = XmlUtils.readXml( stream );
 
     assertThat( document,
         hasXPath( "/configuration/property[name='oozie.wf.application.path']/value",

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
----------------------------------------------------------------------
diff --git a/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java b/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
index 76d923f..0763ea5 100644
--- a/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
+++ b/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
@@ -51,6 +51,7 @@ import org.apache.hadoop.gateway.topology.Param;
 import org.apache.hadoop.gateway.topology.Provider;
 import org.apache.hadoop.gateway.topology.Service;
 import org.apache.hadoop.gateway.topology.Topology;
+import org.apache.hadoop.gateway.util.XmlUtils;
 import org.apache.hadoop.test.TestUtils;
 import org.apache.hadoop.test.log.NoOpAppender;
 import org.apache.log4j.Appender;
@@ -130,7 +131,7 @@ public class DeploymentFactoryFuncTest {
 
     EnterpriseArchive war = DeploymentFactory.createDeployment( config, topology );
 
-    Document gateway = TestUtils.parseXml( war.get( "%2F/WEB-INF/gateway.xml" ).getAsset().openStream() );
+    Document gateway = XmlUtils.readXml( war.get( "%2F/WEB-INF/gateway.xml" ).getAsset().openStream() );
     //dump( gateway );
 
     //by default the first filter will be the X-Forwarded header filter
@@ -260,7 +261,7 @@ public class DeploymentFactoryFuncTest {
 //    File dir = new File( System.getProperty( "user.dir" ) );
 //    File file = war.as( ExplodedExporter.class ).exportExploded( dir, "test-cluster.war" );
 
-    Document web = TestUtils.parseXml( war.get( "%2F/WEB-INF/web.xml" ).getAsset().openStream() );
+    Document web = XmlUtils.readXml( war.get( "%2F/WEB-INF/web.xml" ).getAsset().openStream() );
     //TestUtils.dumpXml( web );
     assertThat( web, hasXPath( "/web-app" ) );
     assertThat( web, hasXPath( "/web-app/servlet" ) );
@@ -272,7 +273,7 @@ public class DeploymentFactoryFuncTest {
     assertThat( web, hasXPath( "/web-app/servlet-mapping/servlet-name", equalTo( "test-cluster-knox-gateway-servlet" ) ) );
     assertThat( web, hasXPath( "/web-app/servlet-mapping/url-pattern", equalTo( "/*" ) ) );
 
-    Document gateway = TestUtils.parseXml( war.get( "%2F/WEB-INF/gateway.xml" ).getAsset().openStream() );
+    Document gateway = XmlUtils.readXml( war.get( "%2F/WEB-INF/gateway.xml" ).getAsset().openStream() );
 
     assertThat( gateway, hasXPath( "/gateway/resource[1]/pattern", equalTo( "/webhdfs/v1/?**" ) ) );
     //assertThat( gateway, hasXPath( "/gateway/resource[1]/target", equalTo( "http://localhost:50070/webhdfs/v1/?{**}" ) ) );
@@ -395,7 +396,7 @@ public class DeploymentFactoryFuncTest {
 //      File dir = new File( System.getProperty( "user.dir" ) );
 //      File file = war.as( ExplodedExporter.class ).exportExploded( dir, "test-cluster.war" );
 
-      Document web = TestUtils.parseXml(war.get("%2F/WEB-INF/web.xml").getAsset().openStream());
+      Document web = XmlUtils.readXml(war.get("%2F/WEB-INF/web.xml").getAsset().openStream());
       assertThat(web, hasXPath("/web-app/servlet/servlet-class", equalTo("org.apache.hadoop.gateway.GatewayServlet")));
       assertThat(web, hasXPath("/web-app/servlet/init-param/param-name", equalTo("gatewayDescriptorLocation")));
       assertThat(web, hasXPath("/web-app/servlet/init-param/param-value", equalTo("/WEB-INF/gateway.xml")));
@@ -463,7 +464,7 @@ public class DeploymentFactoryFuncTest {
     topology.addService( service );
 
     EnterpriseArchive war = DeploymentFactory.createDeployment( config, topology );
-    Document doc = TestUtils.parseXml( war.get( "%2F/WEB-INF/gateway.xml" ).getAsset().openStream() );
+    Document doc = XmlUtils.readXml( war.get( "%2F/WEB-INF/gateway.xml" ).getAsset().openStream() );
 //    dump( doc );
 
     Node resourceNode, filterNode, paramNode;
@@ -540,10 +541,10 @@ public class DeploymentFactoryFuncTest {
 
     Document doc;
 
-    doc = TestUtils.parseXml( archive.get( "META-INF/topology.xml" ).getAsset().openStream() );
+    doc = XmlUtils.readXml( archive.get( "META-INF/topology.xml" ).getAsset().openStream() );
     assertThat( doc, notNullValue() );
 
-    doc = TestUtils.parseXml( archive.get( "%2Fminimal-test-app-path/WEB-INF/gateway.xml" ).getAsset().openStream() );
+    doc = XmlUtils.readXml( archive.get( "%2Fminimal-test-app-path/WEB-INF/gateway.xml" ).getAsset().openStream() );
     assertThat( doc, notNullValue() );
     //dump( doc );
     assertThat( doc, hasXPath("/gateway/resource/pattern", equalTo("/**?**")));
@@ -612,28 +613,28 @@ public class DeploymentFactoryFuncTest {
 
     node = archive.get( "META-INF/topology.xml" );
     assertThat( "Find META-INF/topology.xml", node, notNullValue() );
-    doc = TestUtils.parseXml( node.getAsset().openStream() );
+    doc = XmlUtils.readXml( node.getAsset().openStream() );
     assertThat( "Parse META-INF/topology.xml", doc, notNullValue() );
 
     node = archive.get( "%2F" );
     assertThat( "Find %2F", node, notNullValue() );
     node = archive.get( "%2F/WEB-INF/gateway.xml" );
     assertThat( "Find %2F/WEB-INF/gateway.xml", node, notNullValue() );
-    doc = TestUtils.parseXml( node.getAsset().openStream() );
+    doc = XmlUtils.readXml( node.getAsset().openStream() );
     assertThat( "Parse %2F/WEB-INF/gateway.xml", doc, notNullValue() );
 
     WebArchive war = archive.getAsType( WebArchive.class, "%2Fminimal-test-app-path-one" );
     assertThat( "Find %2Fminimal-test-app-path-one", war, notNullValue() );
     node = war.get( "/WEB-INF/gateway.xml" );
     assertThat( "Find %2Fminimal-test-app-path-one/WEB-INF/gateway.xml", node, notNullValue() );
-    doc = TestUtils.parseXml( node.getAsset().openStream() );
+    doc = XmlUtils.readXml( node.getAsset().openStream() );
     assertThat( "Parse %2Fminimal-test-app-path-one/WEB-INF/gateway.xml", doc, notNullValue() );
 
     war = archive.getAsType( WebArchive.class, "%2Fminimal-test-app-path-two" );
     assertThat( "Find %2Fminimal-test-app-path-two", war, notNullValue() );
     node = war.get( "/WEB-INF/gateway.xml" );
     assertThat( "Find %2Fminimal-test-app-path-two/WEB-INF/gateway.xml", node, notNullValue() );
-    doc = TestUtils.parseXml( node.getAsset().openStream() );
+    doc = XmlUtils.readXml( node.getAsset().openStream() );
     assertThat( "Parse %2Fminimal-test-app-path-two/WEB-INF/gateway.xml", doc, notNullValue() );
 
     LOG_EXIT();

http://git-wip-us.apache.org/repos/asf/knox/blob/ebc2ac81/gateway-util-common/src/main/java/org/apache/hadoop/gateway/util/XmlUtils.java
----------------------------------------------------------------------
diff --git a/gateway-util-common/src/main/java/org/apache/hadoop/gateway/util/XmlUtils.java b/gateway-util-common/src/main/java/org/apache/hadoop/gateway/util/XmlUtils.java
index 1536793..44bd3b1 100644
--- a/gateway-util-common/src/main/java/org/apache/hadoop/gateway/util/XmlUtils.java
+++ b/gateway-util-common/src/main/java/org/apache/hadoop/gateway/util/XmlUtils.java
@@ -17,10 +17,13 @@
 package org.apache.hadoop.gateway.util;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.Writer;
 
+import javax.xml.XMLConstants;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
@@ -32,15 +35,27 @@ import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
 public class XmlUtils {
 
   public static Document readXml( File file ) throws ParserConfigurationException, IOException, SAXException {
+    return readXml( new FileInputStream( file ));
+  }
+
+  public static Document readXml( InputStream input ) throws ParserConfigurationException, IOException, SAXException {
     DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
+    f.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
     DocumentBuilder b = f.newDocumentBuilder();
-    Document d = b.parse( file );
-    return d;
+    return b.parse( input );
+  }
+  
+  public static Document readXml( InputSource source ) throws ParserConfigurationException, IOException, SAXException {
+    DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
+    f.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
+    DocumentBuilder b = f.newDocumentBuilder();
+    return b.parse( source );
   }
 
   public static void writeXml( Document document, Writer writer ) throws TransformerException {
@@ -62,10 +77,15 @@ public class XmlUtils {
 
 
   public static Document createDocument() throws ParserConfigurationException {
+    return createDocument(true);
+  }
+  
+  public static Document createDocument(boolean standalone) throws ParserConfigurationException {
     DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
+    f.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
     DocumentBuilder b = f.newDocumentBuilder();
     Document d = b.newDocument();
-    d.setXmlStandalone( true );
+    d.setXmlStandalone( standalone );
     return d;
   }