Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/xml/jaxp/testng/parse/XMLEntityScannerLoad.java
41154 views
1
package parse;
2
3
import java.io.ByteArrayInputStream;
4
import java.io.IOException;
5
import javax.xml.parsers.DocumentBuilderFactory;
6
import javax.xml.parsers.ParserConfigurationException;
7
8
import static org.testng.Assert.assertEquals;
9
import org.testng.annotations.DataProvider;
10
import org.testng.annotations.Test;
11
import org.w3c.dom.Document;
12
import org.xml.sax.SAXException;
13
14
/**
15
* JDK-8059327: XML parser returns corrupt attribute value
16
* https://bugs.openjdk.java.net/browse/JDK-8059327
17
*
18
* Also:
19
* JDK-8061550: XMLEntityScanner can corrupt corrupt content during parsing
20
* https://bugs.openjdk.java.net/browse/JDK-8061550
21
*
22
* @Summary: verify that the character cache in XMLEntityScanner is reset properly
23
*/
24
25
public class XMLEntityScannerLoad {
26
27
@Test(dataProvider = "xmls")
28
public void test(String xml) throws SAXException, IOException, ParserConfigurationException {
29
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ChunkInputStream(xml));
30
String value = d.getDocumentElement().getAttribute("a1");
31
assertEquals(value, "w");
32
}
33
34
static class ChunkInputStream extends ByteArrayInputStream {
35
ChunkInputStream(String xml) {
36
super(xml.getBytes());
37
}
38
39
@Override
40
public synchronized int read(byte[] b, int off, int len) {
41
return super.read(b, off, 7);
42
}
43
}
44
45
@DataProvider(name = "xmls")
46
private Object[][] xmls() {
47
return new Object[][] {
48
{"<?xml version=\"1.0\"?><element a1=\"w\" a2=\"&quot;&quot;\"/>"},
49
{"<?xml version=\"1.1\"?><element a1=\"w\" a2=\"&quot;&quot;\"/>"}
50
};
51
}
52
}
53
54