Skip to content

Commit dd294bc

Browse files
authored
Merge pull request #29 from evolvedbinary/7.x.x./hotfix/fn-xml-to-json-namespace
[7.x.x] Raise error FOJS0007 on all elements passed to fn:xmj-to-json that are missing Fn namespace
2 parents 66344e0 + 5294c87 commit dd294bc

File tree

3 files changed

+281
-65
lines changed

3 files changed

+281
-65
lines changed

exist-core/pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,7 @@
792792
<include>src/test/xquery/util/util.xml</include>
793793
<include>src/test/xquery/xquery3/parse-xml.xqm</include>
794794
<include>src/test/xquery/xquery3/serialize.xql</include>
795+
<include>src/test/xquery/xquery3/xml-to-json.xql</include>
795796
<include>src/main/java/org/exist/Indexer.java</include>
796797
<include>src/test/java/org/exist/IndexerTest.java</include>
797798
<include>src/test/java/org/exist/IndexerTest2.java</include>
@@ -1128,6 +1129,7 @@
11281129
<exclude>src/test/xquery/xquery3/parse-xml.xqm</exclude>
11291130
<exclude>src/test/xquery/xquery3/postfix-expr.xqm</exclude>
11301131
<exclude>src/test/xquery/xquery3/serialize.xql</exclude>
1132+
<exclude>src/test/xquery/xquery3/xml-to-json.xql</exclude>
11311133
<exclude>src/main/java/org/exist/Indexer.java</exclude>
11321134
<exclude>src/test/java/org/exist/IndexerTest.java</exclude>
11331135
<exclude>src/test/java/org/exist/IndexerTest2.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
@@ -144,6 +144,7 @@ private void nodeValueToJson(final NodeValue nodeValue, final Writer writer) thr
144144
status = reader.next();
145145
switch (status) {
146146
case XMLStreamReader.START_ELEMENT:
147+
checkNamespace(reader.getNamespaceURI());
147148
tempStringBuilder.setLength(0);
148149
final String elementAttributeEscapedValue = reader.getAttributeValue(null, "escaped");
149150
elementValueIsEscaped = "true".equals(elementAttributeEscapedValue);
@@ -168,11 +169,9 @@ private void nodeValueToJson(final NodeValue nodeValue, final Writer writer) thr
168169
}
169170
switch (reader.getLocalName()) {
170171
case "array":
171-
checkNamespace(reader.getNamespaceURI());
172172
jsonGenerator.writeStartArray();
173173
break;
174174
case "map":
175-
checkNamespace(reader.getNamespaceURI());
176175
mapkeyArrayList.add(stackSeparator);
177176
jsonGenerator.writeStartObject();
178177
break;
@@ -188,15 +187,13 @@ private void nodeValueToJson(final NodeValue nodeValue, final Writer writer) thr
188187
final String tempString = tempStringBuilder.toString();
189188
switch (reader.getLocalName()) {
190189
case "array":
191-
checkNamespace(reader.getNamespaceURI());
192190
jsonGenerator.writeEndArray();
193191
break;
194192
case "boolean":
195193
final boolean tempBoolean = !(tempString.isEmpty() || "0".equals(tempString) || "false".equals(tempString));
196194
jsonGenerator.writeBoolean(tempBoolean);
197195
break;
198196
case "map":
199-
checkNamespace(reader.getNamespaceURI());
200197
while (!mapkeyArrayList.isEmpty() && mapkeyArrayList.remove(mapkeyArrayList.size() - 1) != stackSeparator) {
201198
}
202199
jsonGenerator.writeEndObject();

0 commit comments

Comments
 (0)