Path: blob/master/test/jdk/javax/xml/jaxp/testng/parse/XMLEntityScannerLoad.java
41154 views
package parse;12import java.io.ByteArrayInputStream;3import java.io.IOException;4import javax.xml.parsers.DocumentBuilderFactory;5import javax.xml.parsers.ParserConfigurationException;67import static org.testng.Assert.assertEquals;8import org.testng.annotations.DataProvider;9import org.testng.annotations.Test;10import org.w3c.dom.Document;11import org.xml.sax.SAXException;1213/**14* JDK-8059327: XML parser returns corrupt attribute value15* https://bugs.openjdk.java.net/browse/JDK-805932716*17* Also:18* JDK-8061550: XMLEntityScanner can corrupt corrupt content during parsing19* https://bugs.openjdk.java.net/browse/JDK-806155020*21* @Summary: verify that the character cache in XMLEntityScanner is reset properly22*/2324public class XMLEntityScannerLoad {2526@Test(dataProvider = "xmls")27public void test(String xml) throws SAXException, IOException, ParserConfigurationException {28Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ChunkInputStream(xml));29String value = d.getDocumentElement().getAttribute("a1");30assertEquals(value, "w");31}3233static class ChunkInputStream extends ByteArrayInputStream {34ChunkInputStream(String xml) {35super(xml.getBytes());36}3738@Override39public synchronized int read(byte[] b, int off, int len) {40return super.read(b, off, 7);41}42}4344@DataProvider(name = "xmls")45private Object[][] xmls() {46return new Object[][] {47{"<?xml version=\"1.0\"?><element a1=\"w\" a2=\"""\"/>"},48{"<?xml version=\"1.1\"?><element a1=\"w\" a2=\"""\"/>"}49};50}51}525354