Skip to content

Commit c529848

Browse files
committed
[bugfix] Fix issues with Saxon to eXist-db XDM conversion and vice-versa
Closes eXist-db/exist#5680
1 parent 5e23be4 commit c529848

File tree

14 files changed

+745
-40
lines changed

14 files changed

+745
-40
lines changed

exist-core/pom.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,7 @@
737737
<include>src/test/java/org/exist/xquery/value/DateTimeTypesTest.java</include>
738738
<include>src/test/java/org/exist/xquery/functions/fn/FunXmlToJsonTest.java</include>
739739
<include>src/test/java/org/exist/xquery/functions/fn/ParsingFunctionsTest.java</include>
740+
<include>src/test/java/org/exist/xquery/functions/fn/transform/ConvertTest.java</include>
740741
<include>src/test/java/org/exist/xquery/functions/fn/transform/FunTransformITTest.java</include>
741742
<include>src/test/java/org/exist/xquery/functions/xmldb/XMLDBStoreTest.java</include>
742743
<include>src/test/java/org/exist/xquery/functions/xquery3/SerializeTest.java</include>
@@ -764,6 +765,7 @@
764765
<include>src/test/resources-filtered/org/exist/storage/statistics/conf.xml</include>
765766
<include>src/test/resources-filtered/org/exist/xquery/functions/transform/transform-from-pkg-test.conf.xml</include>
766767
<include>src/main/antlr/org/exist/xquery/parser/XQueryTree.g</include>
768+
<include>src/main/java/org/exist/Indexer.java</include>
767769
<include>src/main/java/org/exist/backup/SystemExport.java</include>
768770
<include>src/main/java/org/exist/backup/restore/AppRestoreUtils.java</include>
769771
<include>src/main/java/org/exist/client/ClientFrame.java</include>
@@ -782,24 +784,29 @@
782784
<include>src/main/java/org/exist/collections/Collection.java</include>
783785
<include>src/main/java/org/exist/collections/CollectionConfiguration.java</include>
784786
<include>src/main/java/org/exist/collections/CollectionConfigurationManager.java</include>
787+
<include>src/main/java/org/exist/collections/MutableCollection.java</include>
785788
<include>src/main/java/org/exist/collections/triggers/CollectionTrigger.java</include>
786789
<include>src/main/java/org/exist/collections/triggers/DocumentTrigger.java</include>
787790
<include>src/main/java/org/exist/collections/triggers/XQueryStartupTrigger.java</include>
788791
<include>src/main/java/org/exist/config/Configuration.java</include>
789792
<include>src/main/java/org/exist/config/ConfigurationImpl.java</include>
793+
<include>src/main/java/org/exist/dom/memtree/AttrImpl.java</include>
790794
<include>src/main/java/org/exist/dom/memtree/DocumentImpl.java</include>
791795
<include>src/main/java/org/exist/dom/memtree/DOMIndexer.java</include>
792796
<include>src/main/java/org/exist/dom/memtree/ElementImpl.java</include>
793797
<include>src/main/java/org/exist/dom/memtree/MemTreeBuilder.java</include>
794798
<include>src/main/java/org/exist/dom/memtree/NodeImpl.java</include>
795799
<include>src/main/java/org/exist/dom/persistent/AbstractCharacterData.java</include>
800+
<include>src/main/java/org/exist/dom/persistent/AttrImpl.java</include>
796801
<include>src/main/java/org/exist/dom/persistent/CommentImpl.java</include>
797802
<include>src/main/java/org/exist/dom/persistent/DocumentImpl.java</include>
798803
<include>src/main/java/org/exist/dom/persistent/DocumentSet.java</include>
799804
<include>src/main/java/org/exist/dom/persistent/ElementImpl.java</include>
800805
<include>src/main/java/org/exist/dom/persistent/NodeProxy.java</include>
801806
<include>src/test/java/org/exist/dom/persistent/NodeTest.java</include>
807+
<include>src/test/java/org/exist/dom/persistent/PersistentDomTest.java</include>
802808
<include>src/main/java/org/exist/dom/persistent/ProcessingInstructionImpl.java</include>
809+
<include>src/main/java/org/exist/dom/persistent/StoredNode.java</include>
803810
<include>src/main/java/org/exist/dom/persistent/SymbolTable.java</include>
804811
<include>src/main/java/org/exist/dom/persistent/TextImpl.java</include>
805812
<include>src/main/java/org/exist/dom/persistent/VirtualNodeSet.java</include>
@@ -867,6 +874,7 @@
867874
<include>src/main/java/org/exist/xquery/functions/system/TriggerSystemTask.java</include>
868875
<include>src/main/java/org/exist/xquery/functions/xmldb/XMLDBStore.java</include>
869876
<include>src/main/java/org/exist/xquery/functions/xmldb/XMLDBXUpdate.java</include>
877+
<include>src/test/java/org/exist/xquery/update/UpdateReplaceTest.java</include>
870878
<include>src/main/java/org/exist/xquery/util/SerializerUtils.java</include>
871879
<include>src/main/java/org/exist/xquery/value/AbstractDateTimeValue.java</include>
872880
<include>src/main/java/org/exist/xquery/value/Type.java</include>
@@ -894,8 +902,10 @@
894902
<include>src/main/java/org/exist/xquery/functions/fn/FunTrace.java</include>
895903
<include>src/main/java/org/exist/xquery/functions/fn/FunXmlToJson.java</include>
896904
<include>src/main/java/org/exist/xquery/functions/fn/LoadXQueryModule.java</include>
905+
<include>src/main/java/org/exist/xquery/functions/fn/transform/Convert.java</include>
897906
<include>src/main/java/org/exist/xquery/functions/fn/transform/Options.java</include>
898907
<include>src/main/java/org/exist/xquery/functions/fn/transform/Transform.java</include>
908+
<include>src/main/java/org/exist/xquery/functions/fn/transform/TreeUtils.java</include>
899909
<include>src/main/java/org/exist/xquery/functions/transform/Transform.java</include>
900910
<include>src/test/java/org/exist/xquery/functions/transform/TransformFromPkgTest.java</include>
901911
<include>src/test/java/org/exist/xquery/value/Base64BinaryValueTypeTest.java</include>
@@ -936,6 +946,7 @@
936946
<exclude>src/test/resources-filtered/org/exist/xquery/import-from-pkg-test.conf.xml</exclude>
937947
<exclude>src/test/resources-filtered/org/exist/xquery/functions/transform/transform-from-pkg-test.conf.xml</exclude>
938948
<exclude>src/main/antlr/org/exist/xquery/parser/XQueryTree.g</exclude>
949+
<exclude>src/main/java/org/exist/Indexer.java</exclude>
939950
<exclude>src/main/java/org/exist/backup/SystemExport.java</exclude>
940951
<exclude>src/main/java/org/exist/backup/restore/AppRestoreUtils.java</exclude>
941952
<exclude>src/main/java/org/exist/client/ClientFrame.java</exclude>
@@ -954,11 +965,13 @@
954965
<exclude>src/main/java/org/exist/collections/Collection.java</exclude>
955966
<exclude>src/main/java/org/exist/collections/CollectionConfiguration.java</exclude>
956967
<exclude>src/main/java/org/exist/collections/CollectionConfigurationManager.java</exclude>
968+
<exclude>src/main/java/org/exist/collections/MutableCollection.java</exclude>
957969
<exclude>src/main/java/org/exist/collections/triggers/CollectionTrigger.java</exclude>
958970
<exclude>src/main/java/org/exist/collections/triggers/DocumentTrigger.java</exclude>
959971
<exclude>src/main/java/org/exist/collections/triggers/XQueryStartupTrigger.java</exclude>
960972
<exclude>src/main/java/org/exist/config/Configuration.java</exclude>
961973
<exclude>src/main/java/org/exist/config/ConfigurationImpl.java</exclude>
974+
<exclude>src/main/java/org/exist/dom/memtree/AttrImpl.java</exclude>
962975
<exclude>src/main/java/org/exist/dom/memtree/DocumentImpl.java</exclude>
963976
<exclude>src/main/java/org/exist/dom/memtree/DocumentTypeImpl.java</exclude>
964977
<exclude>src/main/java/org/exist/dom/memtree/DOMIndexer.java</exclude>
@@ -973,13 +986,16 @@
973986
<exclude>src/main/java/org/exist/dom/memtree/reference/ProcessingInstructionReferenceImpl.java</exclude>
974987
<exclude>src/main/java/org/exist/dom/memtree/reference/TextReferenceImpl.java</exclude>
975988
<exclude>src/main/java/org/exist/dom/persistent/AbstractCharacterData.java</exclude>
989+
<exclude>src/main/java/org/exist/dom/persistent/AttrImpl.java</exclude>
976990
<exclude>src/main/java/org/exist/dom/persistent/CommentImpl.java</exclude>
977991
<exclude>src/main/java/org/exist/dom/persistent/DocumentImpl.java</exclude>
978992
<exclude>src/main/java/org/exist/dom/persistent/DocumentSet.java</exclude>
979993
<exclude>src/main/java/org/exist/dom/persistent/ElementImpl.java</exclude>
980994
<exclude>src/main/java/org/exist/dom/persistent/NodeProxy.java</exclude>
981995
<exclude>src/test/java/org/exist/dom/persistent/NodeTest.java</exclude>
996+
<exclude>src/test/java/org/exist/dom/persistent/PersistentDomTest.java</exclude>
982997
<exclude>src/main/java/org/exist/dom/persistent/ProcessingInstructionImpl.java</exclude>
998+
<exclude>src/main/java/org/exist/dom/persistent/StoredNode.java</exclude>
983999
<exclude>src/main/java/org/exist/dom/persistent/SymbolTable.java</exclude>
9841000
<exclude>src/main/java/org/exist/dom/persistent/TextImpl.java</exclude>
9851001
<exclude>src/main/java/org/exist/dom/persistent/VirtualNodeSet.java</exclude>
@@ -1054,6 +1070,8 @@
10541070
<exclude>src/main/java/org/exist/xquery/functions/fn/LoadXQueryModule.java</exclude>
10551071
<exclude>src/main/java/org/exist/xquery/functions/fn/ParsingFunctions.java</exclude>
10561072
<exclude>src/test/java/org/exist/xquery/functions/fn/ParsingFunctionsTest.java</exclude>
1073+
<exclude>src/main/java/org/exist/xquery/functions/fn/transform/Convert.java</exclude>
1074+
<exclude>src/test/java/org/exist/xquery/functions/fn/transform/ConvertTest.java</exclude>
10571075
<exclude>src/test/java/org/exist/xquery/functions/fn/transform/FunTransformITTest.java</exclude>
10581076
<exclude>src/main/java/org/exist/xquery/functions/integer/WordPicture.java</exclude>
10591077
<exclude>src/main/java/org/exist/xquery/functions/system/GetUptime.java</exclude>
@@ -1063,6 +1081,7 @@
10631081
<exclude>src/test/java/org/exist/xquery/functions/xmldb/XMLDBStoreTest.java</exclude>
10641082
<exclude>src/main/java/org/exist/xquery/functions/xmldb/XMLDBXUpdate.java</exclude>
10651083
<exclude>src/test/java/org/exist/xquery/functions/xquery3/SerializeTest.java</exclude>
1084+
<exclude>src/test/java/org/exist/xquery/update/UpdateReplaceTest.java</exclude>
10661085
<exclude>src/main/java/org/exist/xquery/value/AbstractDateTimeValue.java</exclude>
10671086
<exclude>src/test/java/org/exist/xquery/value/DateTimeTypesTest.java</exclude>
10681087
<exclude>src/main/java/org/exist/xquery/value/Type.java</exclude>
@@ -1087,6 +1106,7 @@
10871106
<exclude>src/test/java/org/exist/xquery/XQueryFunctionsTest.java</exclude>
10881107
<exclude>src/main/java/org/exist/xquery/functions/fn/transform/Options.java</exclude>
10891108
<exclude>src/main/java/org/exist/xquery/functions/fn/transform/Transform.java</exclude>
1109+
<exclude>src/main/java/org/exist/xquery/functions/fn/transform/TreeUtils.java</exclude>
10901110
<exclude>src/main/java/org/exist/xquery/functions/transform/Transform.java</exclude>
10911111
<exclude>src/test/java/org/exist/xquery/functions/transform/TransformFromPkgTest.java</exclude>
10921112
<exclude>src/test/java/org/exist/xquery/value/Base64BinaryValueTypeTest.java</exclude>

exist-core/src/main/java/org/exist/Indexer.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,28 @@
11
/*
2+
* Elemental
3+
* Copyright (C) 2024, Evolved Binary Ltd
4+
*
5+
6+
* https://www.evolvedbinary.com | https://www.elemental.xyz
7+
*
8+
* This library is free software; you can redistribute it and/or
9+
* modify it under the terms of the GNU Lesser General Public
10+
* License as published by the Free Software Foundation; version 2.1.
11+
*
12+
* This library is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15+
* Lesser General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU Lesser General Public
18+
* License along with this library; if not, write to the Free Software
19+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20+
*
21+
* NOTE: Parts of this file contain code from 'The eXist-db Authors'.
22+
* The original license header is included below.
23+
*
24+
* =====================================================================
25+
*
226
* eXist-db Open Source Native XML Database
327
* Copyright (C) 2001 The eXist-db Authors
428
*
@@ -600,7 +624,7 @@ public void startElement(final String namespace, final String name, final String
600624
setPrevious(null);
601625
node.setOwnerDocument(document);
602626
node.setAttributes((short) attrLength);
603-
if (nsMappings != null && nsMappings.size() > 0) {
627+
if (!nsMappings.isEmpty()) {
604628
node.setNamespaceMappings(nsMappings);
605629
nsMappings.clear();
606630
}
@@ -624,7 +648,7 @@ public void startElement(final String namespace, final String name, final String
624648
node.setOwnerDocument(document);
625649
node.setNodeId(broker.getBrokerPool().getNodeFactory().createInstance(nodeFactoryInstanceCnt++));
626650
node.setAttributes((short) attrLength);
627-
if (nsMappings != null && nsMappings.size() > 0) {
651+
if (!nsMappings.isEmpty()) {
628652
node.setNamespaceMappings(nsMappings);
629653
nsMappings.clear();
630654
}

exist-core/src/main/java/org/exist/collections/MutableCollection.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,28 @@
11
/*
2+
* Elemental
3+
* Copyright (C) 2024, Evolved Binary Ltd
4+
*
5+
6+
* https://www.evolvedbinary.com | https://www.elemental.xyz
7+
*
8+
* This library is free software; you can redistribute it and/or
9+
* modify it under the terms of the GNU Lesser General Public
10+
* License as published by the Free Software Foundation; version 2.1.
11+
*
12+
* This library is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15+
* Lesser General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU Lesser General Public
18+
* License along with this library; if not, write to the Free Software
19+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20+
*
21+
* NOTE: Parts of this file contain code from 'The eXist-db Authors'.
22+
* The original license header is included below.
23+
*
24+
* =====================================================================
25+
*
226
* eXist-db Open Source Native XML Database
327
* Copyright (C) 2001 The eXist-db Authors
428
*
@@ -1148,7 +1172,7 @@ public void storeDocument(final Txn transaction, final DBBroker broker, final Xm
11481172

11491173
@Override
11501174
public void storeDocument(final Txn transaction, final DBBroker broker, final XmldbURI name, final Node node, @Nullable MimeType mimeType) throws EXistException, PermissionDeniedException, SAXException, LockException, IOException {
1151-
storeDocument(transaction, broker, name, node, mimeType);
1175+
storeDocument(transaction, broker, name, node, mimeType, null, null, null, null, null);
11521176
}
11531177

11541178
@Override

exist-core/src/main/java/org/exist/dom/memtree/AttrImpl.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,28 @@
11
/*
2+
* Elemental
3+
* Copyright (C) 2024, Evolved Binary Ltd
4+
*
5+
6+
* https://www.evolvedbinary.com | https://www.elemental.xyz
7+
*
8+
* This library is free software; you can redistribute it and/or
9+
* modify it under the terms of the GNU Lesser General Public
10+
* License as published by the Free Software Foundation; version 2.1.
11+
*
12+
* This library is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15+
* Lesser General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU Lesser General Public
18+
* License along with this library; if not, write to the Free Software
19+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20+
*
21+
* NOTE: Parts of this file contain code from 'The eXist-db Authors'.
22+
* The original license header is included below.
23+
*
24+
* =====================================================================
25+
*
226
* eXist-db Open Source Native XML Database
327
* Copyright (C) 2001 The eXist-db Authors
428
*
@@ -79,6 +103,11 @@ public Node getFirstChild() {
79103
return null;
80104
}
81105

106+
@Override
107+
public Node getPreviousSibling() {
108+
return null;
109+
}
110+
82111
@Override
83112
public Node getNextSibling() {
84113
return null;

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,28 @@
11
/*
2+
* Elemental
3+
* Copyright (C) 2024, Evolved Binary Ltd
4+
*
5+
6+
* https://www.evolvedbinary.com | https://www.elemental.xyz
7+
*
8+
* This library is free software; you can redistribute it and/or
9+
* modify it under the terms of the GNU Lesser General Public
10+
* License as published by the Free Software Foundation; version 2.1.
11+
*
12+
* This library is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15+
* Lesser General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU Lesser General Public
18+
* License along with this library; if not, write to the Free Software
19+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20+
*
21+
* NOTE: Parts of this file contain code from 'The eXist-db Authors'.
22+
* The original license header is included below.
23+
*
24+
* =====================================================================
25+
*
226
* eXist-db Open Source Native XML Database
327
* Copyright (C) 2001 The eXist-db Authors
428
*
@@ -376,6 +400,11 @@ public Node getFirstChild() {
376400
return null;
377401
}
378402

403+
@Override
404+
public Node getPreviousSibling() {
405+
return null;
406+
}
407+
379408
@Override
380409
public Node getNextSibling() {
381410
return null;

0 commit comments

Comments
 (0)