Skip to content

Commit 5294c87

Browse files
committed
[bugfix] Raise error FOJS0007 on all elements passed to fn:xmj-to-json that are missing Fn namespace
Improves upon 8803d12 Closes eXist-db/exist#5543
1 parent dcc8782 commit 5294c87

3 files changed

Lines changed: 281 additions & 65 deletions

File tree

exist-core/pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -782,6 +782,7 @@
782782
<include>src/test/xquery/maps/maps.xqm</include>
783783
<include>src/test/xquery/util/util.xml</include>
784784
<include>src/test/xquery/xquery3/serialize.xql</include>
785+
<include>src/test/xquery/xquery3/xml-to-json.xql</include>
785786
<include>src/main/java/org/exist/Indexer.java</include>
786787
<include>src/main/resources-filtered/org/exist/system.properties</include>
787788
<include>src/main/java/org/exist/backup/ExportGUI.java</include>
@@ -1009,6 +1010,7 @@
10091010
<exclude>src/test/xquery/xquery3/function-reference.xqm</exclude>
10101011
<exclude>src/test/xquery/xquery3/postfix-expr.xqm</exclude>
10111012
<exclude>src/test/xquery/xquery3/serialize.xql</exclude>
1013+
<exclude>src/test/xquery/xquery3/xml-to-json.xql</exclude>
10121014
<exclude>src/main/java/org/exist/Indexer.java</exclude>
10131015
<exclude>src/main/resources-filtered/org/exist/system.properties</exclude>
10141016
<exclude>src/main/java/org/exist/backup/ExportGUI.java</exclude>

exist-core/src/main/java/org/exist/xquery/functions/fn/FunXmlToJson.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ private void nodeValueToJson(final NodeValue nodeValue, final Writer writer) thr
143143
status = reader.next();
144144
switch (status) {
145145
case XMLStreamReader.START_ELEMENT:
146+
checkNamespace(reader.getNamespaceURI());
146147
tempStringBuilder.setLength(0);
147148
final String elementAttributeEscapedValue = reader.getAttributeValue(null, "escaped");
148149
elementValueIsEscaped = "true".equals(elementAttributeEscapedValue);
@@ -167,11 +168,9 @@ private void nodeValueToJson(final NodeValue nodeValue, final Writer writer) thr
167168
}
168169
switch (reader.getLocalName()) {
169170
case "array":
170-
checkNamespace(reader.getNamespaceURI());
171171
jsonGenerator.writeStartArray();
172172
break;
173173
case "map":
174-
checkNamespace(reader.getNamespaceURI());
175174
mapkeyArrayList.add(stackSeparator);
176175
jsonGenerator.writeStartObject();
177176
break;
@@ -187,15 +186,13 @@ private void nodeValueToJson(final NodeValue nodeValue, final Writer writer) thr
187186
final String tempString = tempStringBuilder.toString();
188187
switch (reader.getLocalName()) {
189188
case "array":
190-
checkNamespace(reader.getNamespaceURI());
191189
jsonGenerator.writeEndArray();
192190
break;
193191
case "boolean":
194192
final boolean tempBoolean = !(tempString.isEmpty() || "0".equals(tempString) || "false".equals(tempString));
195193
jsonGenerator.writeBoolean(tempBoolean);
196194
break;
197195
case "map":
198-
checkNamespace(reader.getNamespaceURI());
199196
while (!mapkeyArrayList.isEmpty() && mapkeyArrayList.remove(mapkeyArrayList.size() - 1) != stackSeparator) {
200197
}
201198
jsonGenerator.writeEndObject();

0 commit comments

Comments
 (0)