diff options
author | aefimov <none@none> | 2015-07-15 18:40:53 +0300 |
---|---|---|
committer | aefimov <none@none> | 2015-07-15 18:40:53 +0300 |
commit | 64c1228e90271bbb54eb985b68c977dfdd548e14 (patch) | |
tree | d9dac942ffee46d3c3d92b351a8125df9ced2112 /src | |
parent | e87138e0d773daca858315c09dcd32c52f612189 (diff) | |
download | jdk8u_jaxp-64c1228e90271bbb54eb985b68c977dfdd548e14.tar.gz |
8130078: Document better processing
Reviewed-by: dfuchs, lancea, ahgross
Diffstat (limited to 'src')
3 files changed, 34 insertions, 2 deletions
diff --git a/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java b/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java index 5cbdc01..a54234b 100644 --- a/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java +++ b/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java @@ -380,6 +380,26 @@ implements XMLDTDScanner, XMLComponent, XMLEntityHandler { } // scanDTDInternalSubset(boolean,boolean,boolean):boolean + /** + * Skip the DTD if javax.xml.stream.supportDTD is false. + * + * @param supportDTD The value of the property javax.xml.stream.supportDTD. + * @return true if DTD is skipped, false otherwise. + * @throws java.io.IOException if i/o error occurs + */ + @Override + public boolean skipDTD(boolean supportDTD) throws IOException { + if (!supportDTD) { + fStringBuffer.clear(); + if (!fEntityScanner.scanData("]", fStringBuffer)) { + fEntityScanner.fCurrentEntity.position--; + } + + return true; + } + return false; + } + // // XMLComponent methods // diff --git a/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java b/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java index c2d58bd..27689e7 100644 --- a/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java +++ b/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. */ /* @@ -1096,11 +1096,14 @@ public class XMLDocumentScannerImpl again = false; switch (fScannerState) { case SCANNER_STATE_DTD_INTERNAL_DECLS: { + boolean moreToScan = false; + if (!fDTDScanner.skipDTD(fSupportDTD)) { // REVISIT: Should there be a feature for // the "complete" parameter? boolean completeDTD = true; - boolean moreToScan = fDTDScanner.scanDTDInternalSubset(completeDTD, fStandalone, fHasExternalDTD && fLoadExternalDTD); + moreToScan = fDTDScanner.scanDTDInternalSubset(completeDTD, fStandalone, fHasExternalDTD && fLoadExternalDTD); + } Entity entity = fEntityScanner.getCurrentEntity(); if(entity instanceof Entity.ScannedEntity){ fEndPos=((Entity.ScannedEntity)entity).position; diff --git a/src/com/sun/org/apache/xerces/internal/xni/parser/XMLDTDScanner.java b/src/com/sun/org/apache/xerces/internal/xni/parser/XMLDTDScanner.java index 49dea56..189152d 100644 --- a/src/com/sun/org/apache/xerces/internal/xni/parser/XMLDTDScanner.java +++ b/src/com/sun/org/apache/xerces/internal/xni/parser/XMLDTDScanner.java @@ -96,5 +96,14 @@ public interface XMLDTDScanner public boolean scanDTDExternalSubset(boolean complete) throws IOException, XNIException; + /** + * Skip the DTD if javax.xml.stream.supportDTD is false. + * @param supportDTD The value of the property javax.xml.stream.supportDTD. + * @return true if DTD is skipped, false otherwise. + * @throws java.io.IOException if i/o error occurs + */ + public boolean skipDTD(boolean supportDTD) + throws IOException; + public void setLimitAnalyzer(XMLLimitAnalyzer limitAnalyzer); } // interface XMLDTDScanner |