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