Skip to content

Commit 95e9ac2

Browse files
authored
Merge pull request #4741 from line-o/fix/4740
[bugfix] NPE on qname of CDATA section
2 parents 855922a + 2b912fc commit 95e9ac2

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

exist-core/src/main/java/org/exist/dom/QName.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class QName implements Comparable<QName> {
4747
public static final QName TEXT_QNAME = EMPTY_QNAME;
4848
public static final QName COMMENT_QNAME = EMPTY_QNAME;
4949
public static final QName DOCTYPE_QNAME = EMPTY_QNAME;
50-
50+
public static final QName CDATA_SECTION_QNAME = EMPTY_QNAME;
5151

5252
private final String localPart;
5353
private final String namespaceURI;

exist-core/src/main/java/org/exist/dom/persistent/StoredNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,8 @@ public QName getQName() {
214214
return QName.COMMENT_QNAME;
215215
case Node.DOCUMENT_TYPE_NODE:
216216
return QName.DOCTYPE_QNAME;
217+
case Node.CDATA_SECTION_NODE:
218+
return QName.CDATA_SECTION_QNAME;
217219
default:
218220
LOG.error("Unknown node type: {}", getNodeType());
219221
return null;

exist-core/src/test/java/org/exist/xquery/AbstractDescendantOrSelfNodeKindTest.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public abstract class AbstractDescendantOrSelfNodeKindTest {
4747
" <d xmlns=\"x\" y=\"2\" z=\"3\">text</d>\n"+
4848
" </c>\n"+
4949
" </a>\n"+
50+
" <d><![CDATA[ & ]]></d>\n"+
5051
"</doc>";
5152

5253

@@ -63,21 +64,21 @@ public void documentNodeCount() throws XMLDBException {
6364
public void nodeCount() throws XMLDBException {
6465
final ResourceSet result = executeQueryOnDoc("count($doc//node())");
6566
assertEquals(1, result.getSize());
66-
assertEquals(23, Integer.parseInt((String)result.getResource(0).getContent()));
67+
assertEquals(26, Integer.parseInt((String)result.getResource(0).getContent()));
6768
}
6869

6970
@Test
7071
public void elementCount() throws XMLDBException {
7172
final ResourceSet result = executeQueryOnDoc("count($doc//element())");
7273
assertEquals(1, result.getSize());
73-
assertEquals(7, Integer.parseInt((String)result.getResource(0).getContent()));
74+
assertEquals(8, Integer.parseInt((String)result.getResource(0).getContent()));
7475
}
7576

7677
@Test
7778
public void textCount() throws XMLDBException {
7879
final ResourceSet result = executeQueryOnDoc("count($doc//text())");
7980
assertEquals(1, result.getSize());
80-
assertEquals(14, Integer.parseInt((String)result.getResource(0).getContent()));
81+
assertEquals(16, Integer.parseInt((String)result.getResource(0).getContent()));
8182
}
8283

8384
@Test
@@ -100,4 +101,11 @@ public void processingInstructionCount() throws XMLDBException {
100101
assertEquals(1, result.getSize());
101102
assertEquals(1, Integer.parseInt((String)result.getResource(0).getContent()));
102103
}
104+
105+
@Test
106+
public void qnameTest() throws XMLDBException {
107+
final ResourceSet result = executeQueryOnDoc("name($doc//d/node())");
108+
assertEquals(1, result.getSize());
109+
assertEquals("", result.getResource(0).getContent());
110+
}
103111
}

0 commit comments

Comments
 (0)