Skip to content

Commit 60241d0

Browse files
committed
[bugfix] Fix issues with Saxon to eXist-db XDM conversion and vice-versa
Closes eXist-db/exist#5680
1 parent 27eac61 commit 60241d0

File tree

14 files changed

+747
-45
lines changed

14 files changed

+747
-45
lines changed

exist-core/pom.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,7 @@
691691
<include>src/test/java/org/exist/xquery/value/DateTimeTypesTest.java</include>
692692
<include>src/test/java/org/exist/xquery/functions/fn/FunXmlToJsonTest.java</include>
693693
<include>src/test/java/org/exist/xquery/functions/fn/ParsingFunctionsTest.java</include>
694+
<include>src/test/java/org/exist/xquery/functions/fn/transform/ConvertTest.java</include>
694695
<include>src/test/java/org/exist/xquery/functions/fn/transform/FunTransformITTest.java</include>
695696
<include>src/test/java/org/exist/xquery/functions/xmldb/XMLDBStoreTest.java</include>
696697
<include>src/test/java/org/exist/xquery/functions/xquery3/SerializeTest.java</include>
@@ -718,6 +719,7 @@
718719
<include>src/test/resources-filtered/org/exist/storage/statistics/conf.xml</include>
719720
<include>src/test/resources-filtered/org/exist/xquery/functions/transform/transform-from-pkg-test.conf.xml</include>
720721
<include>src/main/antlr/org/exist/xquery/parser/XQueryTree.g</include>
722+
<include>src/main/java/org/exist/Indexer.java</include>
721723
<include>src/main/java/org/exist/backup/SystemExport.java</include>
722724
<include>src/main/java/org/exist/backup/restore/AppRestoreUtils.java</include>
723725
<include>src/main/java/org/exist/client/ClientFrame.java</include>
@@ -736,24 +738,29 @@
736738
<include>src/main/java/org/exist/collections/Collection.java</include>
737739
<include>src/main/java/org/exist/collections/CollectionConfiguration.java</include>
738740
<include>src/main/java/org/exist/collections/CollectionConfigurationManager.java</include>
741+
<include>src/main/java/org/exist/collections/MutableCollection.java</include>
739742
<include>src/main/java/org/exist/collections/triggers/CollectionTrigger.java</include>
740743
<include>src/main/java/org/exist/collections/triggers/DocumentTrigger.java</include>
741744
<include>src/main/java/org/exist/collections/triggers/XQueryStartupTrigger.java</include>
742745
<include>src/main/java/org/exist/config/Configuration.java</include>
743746
<include>src/main/java/org/exist/config/ConfigurationImpl.java</include>
747+
<include>src/main/java/org/exist/dom/memtree/AttrImpl.java</include>
744748
<include>src/main/java/org/exist/dom/memtree/DocumentImpl.java</include>
745749
<include>src/main/java/org/exist/dom/memtree/DOMIndexer.java</include>
746750
<include>src/main/java/org/exist/dom/memtree/ElementImpl.java</include>
747751
<include>src/main/java/org/exist/dom/memtree/MemTreeBuilder.java</include>
748752
<include>src/main/java/org/exist/dom/memtree/NodeImpl.java</include>
749753
<include>src/main/java/org/exist/dom/persistent/AbstractCharacterData.java</include>
754+
<include>src/main/java/org/exist/dom/persistent/AttrImpl.java</include>
750755
<include>src/main/java/org/exist/dom/persistent/CommentImpl.java</include>
751756
<include>src/main/java/org/exist/dom/persistent/DocumentImpl.java</include>
752757
<include>src/main/java/org/exist/dom/persistent/DocumentSet.java</include>
753758
<include>src/main/java/org/exist/dom/persistent/ElementImpl.java</include>
754759
<include>src/main/java/org/exist/dom/persistent/NodeProxy.java</include>
755760
<include>src/test/java/org/exist/dom/persistent/NodeTest.java</include>
761+
<include>src/test/java/org/exist/dom/persistent/PersistentDomTest.java</include>
756762
<include>src/main/java/org/exist/dom/persistent/ProcessingInstructionImpl.java</include>
763+
<include>src/main/java/org/exist/dom/persistent/StoredNode.java</include>
757764
<include>src/main/java/org/exist/dom/persistent/SymbolTable.java</include>
758765
<include>src/main/java/org/exist/dom/persistent/TextImpl.java</include>
759766
<include>src/main/java/org/exist/dom/persistent/VirtualNodeSet.java</include>
@@ -821,6 +828,7 @@
821828
<include>src/main/java/org/exist/xquery/functions/system/TriggerSystemTask.java</include>
822829
<include>src/main/java/org/exist/xquery/functions/xmldb/XMLDBStore.java</include>
823830
<include>src/main/java/org/exist/xquery/functions/xmldb/XMLDBXUpdate.java</include>
831+
<include>src/test/java/org/exist/xquery/update/UpdateReplaceTest.java</include>
824832
<include>src/main/java/org/exist/xquery/util/SerializerUtils.java</include>
825833
<include>src/main/java/org/exist/xquery/value/AbstractDateTimeValue.java</include>
826834
<include>src/main/java/org/exist/xquery/value/Type.java</include>
@@ -848,8 +856,10 @@
848856
<include>src/main/java/org/exist/xquery/functions/fn/FunTrace.java</include>
849857
<include>src/main/java/org/exist/xquery/functions/fn/FunXmlToJson.java</include>
850858
<include>src/main/java/org/exist/xquery/functions/fn/LoadXQueryModule.java</include>
859+
<include>src/main/java/org/exist/xquery/functions/fn/transform/Convert.java</include>
851860
<include>src/main/java/org/exist/xquery/functions/fn/transform/Options.java</include>
852861
<include>src/main/java/org/exist/xquery/functions/fn/transform/Transform.java</include>
862+
<include>src/main/java/org/exist/xquery/functions/fn/transform/TreeUtils.java</include>
853863
<include>src/main/java/org/exist/xquery/functions/transform/Transform.java</include>
854864
<include>src/test/java/org/exist/xquery/functions/transform/TransformFromPkgTest.java</include>
855865
<include>src/test/java/org/exist/xquery/value/Base64BinaryValueTypeTest.java</include>
@@ -890,6 +900,7 @@
890900
<exclude>src/test/resources-filtered/org/exist/xquery/import-from-pkg-test.conf.xml</exclude>
891901
<exclude>src/test/resources-filtered/org/exist/xquery/functions/transform/transform-from-pkg-test.conf.xml</exclude>
892902
<exclude>src/main/antlr/org/exist/xquery/parser/XQueryTree.g</exclude>
903+
<exclude>src/main/java/org/exist/Indexer.java</exclude>
893904
<exclude>src/main/java/org/exist/backup/SystemExport.java</exclude>
894905
<exclude>src/main/java/org/exist/backup/restore/AppRestoreUtils.java</exclude>
895906
<exclude>src/main/java/org/exist/client/ClientFrame.java</exclude>
@@ -908,11 +919,13 @@
908919
<exclude>src/main/java/org/exist/collections/Collection.java</exclude>
909920
<exclude>src/main/java/org/exist/collections/CollectionConfiguration.java</exclude>
910921
<exclude>src/main/java/org/exist/collections/CollectionConfigurationManager.java</exclude>
922+
<exclude>src/main/java/org/exist/collections/MutableCollection.java</exclude>
911923
<exclude>src/main/java/org/exist/collections/triggers/CollectionTrigger.java</exclude>
912924
<exclude>src/main/java/org/exist/collections/triggers/DocumentTrigger.java</exclude>
913925
<exclude>src/main/java/org/exist/collections/triggers/XQueryStartupTrigger.java</exclude>
914926
<exclude>src/main/java/org/exist/config/Configuration.java</exclude>
915927
<exclude>src/main/java/org/exist/config/ConfigurationImpl.java</exclude>
928+
<exclude>src/main/java/org/exist/dom/memtree/AttrImpl.java</exclude>
916929
<exclude>src/main/java/org/exist/dom/memtree/DocumentImpl.java</exclude>
917930
<exclude>src/main/java/org/exist/dom/memtree/DocumentTypeImpl.java</exclude>
918931
<exclude>src/main/java/org/exist/dom/memtree/DOMIndexer.java</exclude>
@@ -927,13 +940,16 @@
927940
<exclude>src/main/java/org/exist/dom/memtree/reference/ProcessingInstructionReferenceImpl.java</exclude>
928941
<exclude>src/main/java/org/exist/dom/memtree/reference/TextReferenceImpl.java</exclude>
929942
<exclude>src/main/java/org/exist/dom/persistent/AbstractCharacterData.java</exclude>
943+
<exclude>src/main/java/org/exist/dom/persistent/AttrImpl.java</exclude>
930944
<exclude>src/main/java/org/exist/dom/persistent/CommentImpl.java</exclude>
931945
<exclude>src/main/java/org/exist/dom/persistent/DocumentImpl.java</exclude>
932946
<exclude>src/main/java/org/exist/dom/persistent/DocumentSet.java</exclude>
933947
<exclude>src/main/java/org/exist/dom/persistent/ElementImpl.java</exclude>
934948
<exclude>src/main/java/org/exist/dom/persistent/NodeProxy.java</exclude>
935949
<exclude>src/test/java/org/exist/dom/persistent/NodeTest.java</exclude>
950+
<exclude>src/test/java/org/exist/dom/persistent/PersistentDomTest.java</exclude>
936951
<exclude>src/main/java/org/exist/dom/persistent/ProcessingInstructionImpl.java</exclude>
952+
<exclude>src/main/java/org/exist/dom/persistent/StoredNode.java</exclude>
937953
<exclude>src/main/java/org/exist/dom/persistent/SymbolTable.java</exclude>
938954
<exclude>src/main/java/org/exist/dom/persistent/TextImpl.java</exclude>
939955
<exclude>src/main/java/org/exist/dom/persistent/VirtualNodeSet.java</exclude>
@@ -1007,6 +1023,8 @@
10071023
<exclude>src/main/java/org/exist/xquery/functions/fn/LoadXQueryModule.java</exclude>
10081024
<exclude>src/main/java/org/exist/xquery/functions/fn/ParsingFunctions.java</exclude>
10091025
<exclude>src/test/java/org/exist/xquery/functions/fn/ParsingFunctionsTest.java</exclude>
1026+
<exclude>src/main/java/org/exist/xquery/functions/fn/transform/Convert.java</exclude>
1027+
<exclude>src/test/java/org/exist/xquery/functions/fn/transform/ConvertTest.java</exclude>
10101028
<exclude>src/test/java/org/exist/xquery/functions/fn/transform/FunTransformITTest.java</exclude>
10111029
<exclude>src/main/java/org/exist/xquery/functions/integer/WordPicture.java</exclude>
10121030
<exclude>src/main/java/org/exist/xquery/functions/system/GetUptime.java</exclude>
@@ -1016,6 +1034,7 @@
10161034
<exclude>src/test/java/org/exist/xquery/functions/xmldb/XMLDBStoreTest.java</exclude>
10171035
<exclude>src/main/java/org/exist/xquery/functions/xmldb/XMLDBXUpdate.java</exclude>
10181036
<exclude>src/test/java/org/exist/xquery/functions/xquery3/SerializeTest.java</exclude>
1037+
<exclude>src/test/java/org/exist/xquery/update/UpdateReplaceTest.java</exclude>
10191038
<exclude>src/main/java/org/exist/xquery/value/AbstractDateTimeValue.java</exclude>
10201039
<exclude>src/test/java/org/exist/xquery/value/DateTimeTypesTest.java</exclude>
10211040
<exclude>src/main/java/org/exist/xquery/value/Type.java</exclude>
@@ -1040,6 +1059,7 @@
10401059
<exclude>src/test/java/org/exist/xquery/XQueryFunctionsTest.java</exclude>
10411060
<exclude>src/main/java/org/exist/xquery/functions/fn/transform/Options.java</exclude>
10421061
<exclude>src/main/java/org/exist/xquery/functions/fn/transform/Transform.java</exclude>
1062+
<exclude>src/main/java/org/exist/xquery/functions/fn/transform/TreeUtils.java</exclude>
10431063
<exclude>src/main/java/org/exist/xquery/functions/transform/Transform.java</exclude>
10441064
<exclude>src/test/java/org/exist/xquery/functions/transform/TransformFromPkgTest.java</exclude>
10451065
<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
*
@@ -591,7 +615,7 @@ public void startElement(final String namespace, final String name, final String
591615
setPrevious(null);
592616
node.setOwnerDocument(document);
593617
node.setAttributes((short) attrLength);
594-
if (nsMappings != null && nsMappings.size() > 0) {
618+
if (!nsMappings.isEmpty()) {
595619
node.setNamespaceMappings(nsMappings);
596620
nsMappings.clear();
597621
}
@@ -615,7 +639,7 @@ public void startElement(final String namespace, final String name, final String
615639
node.setOwnerDocument(document);
616640
node.setNodeId(broker.getBrokerPool().getNodeFactory().createInstance(nodeFactoryInstanceCnt++));
617641
node.setAttributes((short) attrLength);
618-
if (nsMappings != null && nsMappings.size() > 0) {
642+
if (!nsMappings.isEmpty()) {
619643
node.setNamespaceMappings(nsMappings);
620644
nsMappings.clear();
621645
}

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
*
@@ -1160,7 +1184,7 @@ public void storeDocument(final Txn transaction, final DBBroker broker, final Xm
11601184

11611185
@Override
11621186
public void storeDocument(final Txn transaction, final DBBroker broker, final XmldbURI name, final Node node, @Nullable MimeType mimeType) throws EXistException, PermissionDeniedException, SAXException, LockException, IOException {
1163-
storeDocument(transaction, broker, name, node, mimeType);
1187+
storeDocument(transaction, broker, name, node, mimeType, null, null, null, null, null);
11641188
}
11651189

11661190
@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
*
@@ -385,6 +409,11 @@ public Node getFirstChild() {
385409
return null;
386410
}
387411

412+
@Override
413+
public Node getPreviousSibling() {
414+
return null;
415+
}
416+
388417
@Override
389418
public Node getNextSibling() {
390419
return null;

0 commit comments

Comments
 (0)