You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2021/09/07 16:37:47 UTC

svn commit: r1893054 - in /xmlbeans/trunk/src: main/java/org/apache/xmlbeans/ main/java/org/apache/xmlbeans/impl/common/ test/java/dom/checkin/

Author: fanningpj
Date: Tue Sep  7 16:37:47 2021
New Revision: 1893054

URL: http://svn.apache.org/viewvc?rev=1893054&view=rev
Log:
support extra parser option

Modified:
    xmlbeans/trunk/src/main/java/org/apache/xmlbeans/XmlOptions.java
    xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/DocumentHelper.java
    xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/SAXHelper.java
    xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/XMLBeansConstants.java
    xmlbeans/trunk/src/test/java/dom/checkin/ParserTest.java

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/XmlOptions.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/XmlOptions.java?rev=1893054&r1=1893053&r2=1893054&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/XmlOptions.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/XmlOptions.java Tue Sep  7 16:37:47 2021
@@ -150,6 +150,7 @@ public class XmlOptions implements java.
         ENTITY_EXPANSION_LIMIT,
         LOAD_DTD_GRAMMAR,
         LOAD_EXTERNAL_DTD,
+        DISALLOW_DOCTYPE_DECLARATION,
         SAAJ_IMPL,
         LOAD_USE_LOCALE_CHAR_UTIL,
         XPATH_USE_SAXON,
@@ -1330,6 +1331,32 @@ public class XmlOptions implements java.
         return flag != null && flag;
     }
 
+    /**
+     * Controls whether DocType declarations are disallowed during XML parsing. If they are disallowed,
+     * the parser will throw an exception if a DocType declaration is encountered.
+     * The default value is false.
+     *
+     * @param disallowDocTypeDeclaration {@code true}, if DocType declarations are to be disallowed
+     * @return this
+     * @since 5.0.2
+     */
+    public XmlOptions setDisallowDocTypeDeclaration(boolean disallowDocTypeDeclaration) {
+        return set(XmlOptionsKeys.DISALLOW_DOCTYPE_DECLARATION, disallowDocTypeDeclaration);
+    }
+
+    /**
+     * Returns whether DocType declarations are disallowed during XML parsing. If they are disallowed,
+     * the parser will throw an exception if a DocType declaration is encountered.
+     * The default value is false.
+     *
+     * @return boolean
+     * @since 5.0.2
+     */
+    public boolean disallowDocTypeDeclaration() {
+        Boolean flag = (Boolean) get(XmlOptionsKeys.DISALLOW_DOCTYPE_DECLARATION);
+        return flag != null && flag;
+    }
+
     public XmlOptions setSaveOptimizeForSpeed(boolean saveOptimizeForSpeed) {
         return set(XmlOptionsKeys.SAVE_OPTIMIZE_FOR_SPEED, saveOptimizeForSpeed);
     }

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/DocumentHelper.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/DocumentHelper.java?rev=1893054&r1=1893053&r2=1893054&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/DocumentHelper.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/DocumentHelper.java Tue Sep  7 16:37:47 2021
@@ -100,6 +100,7 @@ public final class DocumentHelper {
         trySetFeature(documentBuilderFactory, XMLConstants.FEATURE_SECURE_PROCESSING, true);
         trySetFeature(documentBuilderFactory, XMLBeansConstants.FEATURE_LOAD_DTD_GRAMMAR, options.isLoadDTDGrammar());
         trySetFeature(documentBuilderFactory, XMLBeansConstants.FEATURE_LOAD_EXTERNAL_DTD, options.isLoadExternalDTD());
+        trySetFeature(documentBuilderFactory, XMLBeansConstants.FEATURE_DISALLOW_DOCTYPE_DECL, options.disallowDocTypeDeclaration());
         trySetXercesSecurityManager(documentBuilderFactory, options);
         return documentBuilderFactory;
     }

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/SAXHelper.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/SAXHelper.java?rev=1893054&r1=1893053&r2=1893054&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/SAXHelper.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/SAXHelper.java Tue Sep  7 16:37:47 2021
@@ -65,6 +65,7 @@ public final class SAXHelper {
         trySetSAXFeature(saxFactory, XMLConstants.FEATURE_SECURE_PROCESSING, true);
         trySetSAXFeature(saxFactory, XMLBeansConstants.FEATURE_LOAD_DTD_GRAMMAR, options.isLoadDTDGrammar());
         trySetSAXFeature(saxFactory, XMLBeansConstants.FEATURE_LOAD_EXTERNAL_DTD, options.isLoadExternalDTD());
+        trySetSAXFeature(saxFactory, XMLBeansConstants.FEATURE_DISALLOW_DOCTYPE_DECL, options.disallowDocTypeDeclaration());
         return saxFactory;
     }
 

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/XMLBeansConstants.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/XMLBeansConstants.java?rev=1893054&r1=1893053&r2=1893054&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/XMLBeansConstants.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/XMLBeansConstants.java Tue Sep  7 16:37:47 2021
@@ -22,4 +22,5 @@ public class XMLBeansConstants {
     public static final String SECURITY_MANAGER = "http://apache.org/xml/properties/security-manager";
     public static final String FEATURE_LOAD_DTD_GRAMMAR = "http://apache.org/xml/features/nonvalidating/load-dtd-grammar";
     public static final String FEATURE_LOAD_EXTERNAL_DTD = "http://apache.org/xml/features/nonvalidating/load-external-dtd";
+    public static final String FEATURE_DISALLOW_DOCTYPE_DECL = "http://apache.org/xml/features/disallow-doctype-decl";
 }

Modified: xmlbeans/trunk/src/test/java/dom/checkin/ParserTest.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/dom/checkin/ParserTest.java?rev=1893054&r1=1893053&r2=1893054&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/dom/checkin/ParserTest.java (original)
+++ xmlbeans/trunk/src/test/java/dom/checkin/ParserTest.java Tue Sep  7 16:37:47 2021
@@ -41,6 +41,7 @@ public class ParserTest {
         assertEquals(2048, options.getEntityExpansionLimit());
         assertFalse(options.isLoadDTDGrammar());
         assertFalse(options.isLoadExternalDTD());
+        assertFalse(options.disallowDocTypeDeclaration());
     }
 
     @Test
@@ -49,9 +50,11 @@ public class ParserTest {
         options.setEntityExpansionLimit(1);
         options.setLoadDTDGrammar(true);
         options.setLoadExternalDTD(true);
+        options.setDisallowDocTypeDeclaration(true);
         assertEquals(1, options.getEntityExpansionLimit());
         assertTrue(options.isLoadDTDGrammar());
         assertTrue(options.isLoadExternalDTD());
+        assertTrue(options.disallowDocTypeDeclaration());
     }
 
     @Test
@@ -82,6 +85,7 @@ public class ParserTest {
         assertNotSame(reader, SAXHelper.newXMLReader(options));
         assertFalse(reader.getFeature(XMLBeansConstants.FEATURE_LOAD_DTD_GRAMMAR));
         assertFalse(reader.getFeature(XMLBeansConstants.FEATURE_LOAD_EXTERNAL_DTD));
+        assertFalse(reader.getFeature(XMLBeansConstants.FEATURE_DISALLOW_DOCTYPE_DECL));
         assertEquals(SAXHelper.IGNORING_ENTITY_RESOLVER, reader.getEntityResolver());
         assertNotNull(reader.getProperty(XMLBeansConstants.SECURITY_MANAGER));
 
@@ -94,10 +98,12 @@ public class ParserTest {
         options.setEntityExpansionLimit(1);
         options.setLoadDTDGrammar(true);
         options.setLoadExternalDTD(true);
+        options.setDisallowDocTypeDeclaration(true);
         XMLReader reader = SAXHelper.newXMLReader(options);
         assertNotSame(reader, SAXHelper.newXMLReader(options));
         assertTrue(reader.getFeature(XMLBeansConstants.FEATURE_LOAD_DTD_GRAMMAR));
         assertTrue(reader.getFeature(XMLBeansConstants.FEATURE_LOAD_EXTERNAL_DTD));
+        assertTrue(reader.getFeature(XMLBeansConstants.FEATURE_DISALLOW_DOCTYPE_DECL));
         assertEquals(SAXHelper.IGNORING_ENTITY_RESOLVER, reader.getEntityResolver());
         assertNotNull(reader.getProperty(XMLBeansConstants.SECURITY_MANAGER));
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org