diff --git a/exist-core/pom.xml b/exist-core/pom.xml
index 3e7e580829..6ac47144c5 100644
--- a/exist-core/pom.xml
+++ b/exist-core/pom.xml
@@ -783,11 +783,15 @@
src/test/xquery/util/util.xml
src/test/xquery/xquery3/serialize.xql
src/main/java/org/exist/Indexer.java
+ src/test/java/org/exist/IndexerTest.java
+ src/test/java/org/exist/IndexerTest2.java
+ src/test/java/org/exist/IndexerTest3.java
src/main/resources-filtered/org/exist/system.properties
src/main/java/org/exist/backup/ExportGUI.java
src/main/java/org/exist/backup/ExportMain.java
src/main/java/org/exist/backup/Main.java
src/main/java/org/exist/backup/SystemExport.java
+ src/main/java/org/exist/backup/ZipWriter.java
src/main/java/org/exist/backup/restore/AppRestoreUtils.java
src/main/java/org/exist/client/ClientFrame.java
src/main/java/org/exist/client/CommandlineOptions.java
@@ -823,12 +827,19 @@
src/main/java/org/exist/collections/triggers/XQueryStartupTrigger.java
src/main/java/org/exist/config/Configuration.java
src/main/java/org/exist/config/ConfigurationImpl.java
+ src/main/java/org/exist/config/Configurator.java
+ src/main/java/org/exist/dom/NodeListImpl.java
+ src/main/java/org/exist/dom/memtree/AbstractCharacterData.java
src/main/java/org/exist/dom/memtree/AttrImpl.java
src/main/java/org/exist/dom/memtree/DocumentImpl.java
src/main/java/org/exist/dom/memtree/DOMIndexer.java
+ src/test/java/org/exist/dom/memtree/DOMIndexerTest.java
+ src/test/java/org/exist/dom/memtree/DOMTest.java
src/main/java/org/exist/dom/memtree/ElementImpl.java
src/main/java/org/exist/dom/memtree/MemTreeBuilder.java
+ src/main/java/org/exist/dom/memtree/NamespaceNode.java
src/main/java/org/exist/dom/memtree/NodeImpl.java
+ src/main/java/org/exist/dom/memtree/ProcessingInstructionImpl.java
src/main/java/org/exist/dom/persistent/AbstractCharacterData.java
src/main/java/org/exist/dom/persistent/AttrImpl.java
src/main/java/org/exist/dom/persistent/CommentImpl.java
@@ -839,10 +850,12 @@
src/test/java/org/exist/dom/persistent/NodeTest.java
src/test/java/org/exist/dom/persistent/PersistentDomTest.java
src/main/java/org/exist/dom/persistent/ProcessingInstructionImpl.java
+ src/main/java/org/exist/dom/persistent/SortedNodeSet.java
src/main/java/org/exist/dom/persistent/StoredNode.java
src/main/java/org/exist/dom/persistent/SymbolTable.java
src/main/java/org/exist/dom/persistent/TextImpl.java
src/main/java/org/exist/dom/persistent/VirtualNodeSet.java
+ src/main/java/org/exist/dom/persistent/XMLUtil.java
src/test/java/org/exist/http/AbstractHttpTest.java
src/main/java/org/exist/http/Descriptor.java
src/main/java/org/exist/http/RESTServer.java
@@ -853,6 +866,7 @@
src/main/java/org/exist/http/urlrewrite/Redirect.java
src/main/java/org/exist/http/urlrewrite/RewriteConfig.java
src/main/java/org/exist/indexing/Index.java
+ src/main/java/org/exist/indexing/IndexController.java
src/main/java/org/exist/indexing/IndexManager.java
src/main/java/org/exist/jetty/JettyStart.java
src/main/java/org/exist/jetty/ServerShutdown.java
@@ -882,64 +896,100 @@
src/main/java/org/exist/repo/ExistRepository.java
src/main/java/org/exist/scheduler/impl/QuartzSchedulerImpl.java
src/main/java/org/exist/security/EffectiveSubject.java
+ src/test/java/org/exist/security/FnDocSecurityTest.java
src/main/java/org/exist/security/SecurityManager.java
src/main/java/org/exist/security/SimpleACLPermission.java
+ src/test/java/org/exist/security/XqueryApiTest.java
src/main/java/org/exist/security/internal/AccountImpl.java
src/main/java/org/exist/source/Source.java
src/main/java/org/exist/source/SourceFactory.java
+ src/test/java/org/exist/storage/BFileRecoverTest.java
src/main/java/org/exist/storage/BrokerFactory.java
src/main/java/org/exist/storage/BrokerPool.java
+ src/test/java/org/exist/storage/CollectionTest.java
src/test/java/org/exist/storage/CopyResourceTest.java
src/main/java/org/exist/storage/DBBroker.java
+ src/test/java/org/exist/storage/DOMFileRecoverTest.java
src/main/java/org/exist/storage/Indexable.java
src/main/java/org/exist/storage/IndexSpec.java
src/main/java/org/exist/storage/NativeBroker.java
src/main/java/org/exist/storage/ProcessMonitor.java
+ src/test/java/org/exist/storage/RecoveryTest.java
+ src/test/java/org/exist/storage/RecoveryTest2.java
+ src/test/java/org/exist/storage/btree/BTreeTest.java
+ src/main/java/org/exist/storage/btree/TreeMetrics.java
src/main/java/org/exist/storage/lock/FileLock.java
src/main/java/org/exist/storage/recovery/RecoveryManager.java
src/main/java/org/exist/storage/serializers/Serializer.java
src/test/resources-filtered/org/exist/storage/statistics/conf.xml
src/main/java/org/exist/storage/sync/SyncTask.java
src/main/java/org/exist/test/ExistXmldbEmbeddedServer.java
+ src/main/java/org/exist/test/runner/ExtTestFailureFunction.java
src/main/java/org/exist/test/runner/XMLTestRunner.java
src/main/java/org/exist/test/runner/XQueryTestRunner.java
src/main/java/org/exist/test/runner/XSuite.java
+ src/test/java/org/exist/util/AbstractXMLReaderSecurityTest.java
src/main/java/org/exist/util/Collations.java
src/main/java/org/exist/util/Configuration.java
+ src/test/java/org/exist/util/DOMSerializerTest.java
src/main/java/org/exist/util/ParametersExtractor.java
src/main/java/org/exist/util/crypto/digest/DigestType.java
src/main/java/org/exist/util/serializer/AttrList.java
src/main/java/org/exist/util/serializer/DOMStreamer.java
src/main/java/org/exist/util/serializer/EXISerializer.java
+ src/test/java/org/exist/util/serializer/HTML5WriterTest.java
src/main/java/org/exist/util/serializer/SerializerObjectFactory.java
+ src/main/java/org/exist/util/serializer/json/JSONObject.java
+ src/test/java/org/exist/util/serializer/json/JSONObjectTest.java
+ src/main/java/org/exist/util/serializer/json/JSONSerializer.java
+ src/test/java/org/exist/util/serializer/json/JSONWriterTest.java
src/test/resources/org/exist/validation/catalog.xml
src/test/java/org/exist/validation/CollectionConfigurationValidationModeTest.java
+ src/main/java/org/exist/validation/resolver/SearchResourceResolver.java
src/test/java/org/exist/w3c/tests/TestCase.java
src/main/java/org/exist/webstart/JnlpJarFiles.java
+ src/test/java/org/exist/xmldb/ContentAsDOMTest.java
src/test/java/org/exist/xmldb/CreateCollectionsTest.java
+ src/test/java/org/exist/xmldb/IndexingTest.java
+ src/main/java/org/exist/xmldb/LocalResourceSet.java
+ src/main/java/org/exist/xmldb/LocalXMLResource.java
src/main/java/org/exist/xmldb/RemoteRestoreService.java
+ src/test/java/org/exist/xmldb/ResourceTest.java
+ src/test/java/org/exist/xmldb/TestEXistXMLSerialize.java
+ src/test/java/org/exist/xmldb/TreeLevelOrderTest.java
+ src/test/java/org/exist/xmldb/concurrent/XMLGenerator.java
src/main/java/org/exist/xmlrpc/ExistRpcTypeFactory.java
+ src/main/java/org/exist/xmlrpc/RpcConnection.java
src/main/java/org/exist/xqj/Marshaller.java
+ src/test/java/org/exist/xqj/MarshallerTest.java
+ src/test/java/org/exist/xquery/ConstructedNodesRecoveryTest.java
src/main/java/org/exist/xquery/DynamicTypeCheck.java
src/main/java/org/exist/xquery/ErrorCodes.java
+ src/test/java/org/exist/xquery/ForwardReferenceTest.java
src/main/java/org/exist/xquery/FunctionFactory.java
src/main/java/org/exist/xquery/Optimizer.java
+ src/main/java/org/exist/xquery/PerformanceStatsImpl.java
+ src/main/java/org/exist/xquery/TryCatchExpression.java
src/main/java/org/exist/xquery/UserDefinedFunction.java
src/main/java/org/exist/xquery/XPathUtil.java
src/main/java/org/exist/xquery/XQueryContext.java
src/test/java/org/exist/xquery/XQueryFunctionsTest.java
+ src/test/java/org/exist/xquery/XQueryTest.java
src/main/java/org/exist/xquery/functions/array/ArrayType.java
src/test/java/org/exist/xquery/functions/fn/DocTest.java
src/main/java/org/exist/xquery/functions/fn/FnModule.java
src/main/java/org/exist/xquery/functions/fn/FunBaseURI.java
src/main/java/org/exist/xquery/functions/fn/FunDeepEqual.java
src/main/java/org/exist/xquery/functions/fn/FunParseIetfDate.java
+ src/main/java/org/exist/xquery/functions/fn/FunSerialize.java
src/main/java/org/exist/xquery/functions/fn/FunTrace.java
+ src/main/java/org/exist/xquery/functions/fn/FunUnparsedText.java
src/main/java/org/exist/xquery/functions/fn/FunUriCollection.java
src/main/java/org/exist/xquery/functions/fn/FunXmlToJson.java
src/main/java/org/exist/xquery/functions/fn/LoadXQueryModule.java
src/main/java/org/exist/xquery/functions/fn/ParsingFunctions.java
src/main/java/org/exist/xquery/functions/fn/transform/Convert.java
+ src/main/java/org/exist/xquery/functions/fn/transform/Delivery.java
src/main/java/org/exist/xquery/functions/fn/transform/Options.java
src/main/java/org/exist/xquery/functions/fn/transform/Transform.java
src/main/java/org/exist/xquery/functions/fn/transform/TreeUtils.java
@@ -954,11 +1004,14 @@
src/main/java/org/exist/xquery/functions/util/BuiltinFunctions.java
src/main/java/org/exist/xquery/functions/util/DescribeFunction.java
src/main/java/org/exist/xquery/functions/util/FunctionFunction.java
+ src/main/java/org/exist/xquery/functions/util/LogFunction.java
src/main/java/org/exist/xquery/functions/util/ModuleInfo.java
+ src/main/java/org/exist/xquery/functions/validation/Jaxp.java
src/main/java/org/exist/xquery/functions/xmldb/XMLDBStore.java
src/main/java/org/exist/xquery/functions/xmldb/XMLDBXUpdate.java
src/main/antlr/org/exist/xquery/parser/XQueryTree.g
src/test/java/org/exist/xquery/update/UpdateReplaceTest.java
+ src/main/java/org/exist/xquery/util/ExpressionDumper.java
src/main/java/org/exist/xquery/util/SerializerUtils.java
src/main/java/org/exist/xquery/value/AbstractDateTimeValue.java
src/test/java/org/exist/xquery/value/Base64BinaryValueTypeTest.java
@@ -966,6 +1019,7 @@
src/main/java/org/exist/xquery/value/Type.java
src/main/java/org/exist/xslt/EXistURIResolver.java
src/main/java/org/exist/xslt/XsltURIResolverHelper.java
+ src/test/java/org/exist/xupdate/RemoveAppendTest.java
@@ -1010,11 +1064,15 @@
src/test/xquery/xquery3/postfix-expr.xqm
src/test/xquery/xquery3/serialize.xql
src/main/java/org/exist/Indexer.java
+ src/test/java/org/exist/IndexerTest.java
+ src/test/java/org/exist/IndexerTest2.java
+ src/test/java/org/exist/IndexerTest3.java
src/main/resources-filtered/org/exist/system.properties
src/main/java/org/exist/backup/ExportGUI.java
src/main/java/org/exist/backup/ExportMain.java
src/main/java/org/exist/backup/Main.java
src/main/java/org/exist/backup/SystemExport.java
+ src/main/java/org/exist/backup/ZipWriter.java
src/main/java/org/exist/backup/restore/AppRestoreUtils.java
src/main/java/org/exist/client/ClientFrame.java
src/main/java/org/exist/client/CommandlineOptions.java
@@ -1050,16 +1108,22 @@
src/main/java/org/exist/collections/triggers/XQueryStartupTrigger.java
src/main/java/org/exist/config/Configuration.java
src/main/java/org/exist/config/ConfigurationImpl.java
+ src/main/java/org/exist/config/Configurator.java
+ src/main/java/org/exist/dom/NodeListImpl.java
+ src/main/java/org/exist/dom/memtree/AbstractCharacterData.java
src/main/java/org/exist/dom/memtree/AttrImpl.java
src/main/java/org/exist/dom/memtree/DocumentImpl.java
src/main/java/org/exist/dom/memtree/DocumentTypeImpl.java
src/main/java/org/exist/dom/memtree/DOMIndexer.java
+ src/test/java/org/exist/dom/memtree/DOMIndexerTest.java
+ src/test/java/org/exist/dom/memtree/DOMTest.java
src/main/java/org/exist/dom/memtree/ElementImpl.java
src/main/java/org/exist/dom/memtree/MemTreeBuilder.java
+ src/main/java/org/exist/dom/memtree/NamespaceNode.java
src/main/java/org/exist/dom/memtree/NodeImpl.java
+ src/main/java/org/exist/dom/memtree/ProcessingInstructionImpl.java
src/main/java/org/exist/dom/memtree/reference/AbstractReferenceCharacterData.java
src/main/java/org/exist/dom/memtree/reference/AbstractReferenceNodeImpl.java
- src/main/java/org/exist/dom/memtree/reference/AbstractReferenceNodeImpl.java
src/main/java/org/exist/dom/memtree/reference/CommentReferenceImpl.java
src/main/java/org/exist/dom/memtree/reference/ElementReferenceImpl.java
src/main/java/org/exist/dom/memtree/reference/ProcessingInstructionReferenceImpl.java
@@ -1074,11 +1138,13 @@
src/test/java/org/exist/dom/persistent/NodeTest.java
src/test/java/org/exist/dom/persistent/PersistentDomTest.java
src/main/java/org/exist/dom/persistent/ProcessingInstructionImpl.java
+ src/main/java/org/exist/dom/persistent/SortedNodeSet.java
src/main/java/org/exist/dom/persistent/StoredNode.java
src/main/java/org/exist/dom/persistent/SymbolTable.java
src/main/java/org/exist/dom/persistent/TextImpl.java
src/main/java/org/exist/dom/persistent/VirtualNodeSet.java
src/main/java/org/exist/dom/persistent/XMLDeclarationImpl.java
+ src/main/java/org/exist/dom/persistent/XMLUtil.java
src/test/java/org/exist/http/AbstractHttpTest.java
src/main/java/org/exist/http/Descriptor.java
src/main/java/org/exist/http/RESTServer.java
@@ -1089,6 +1155,7 @@
src/main/java/org/exist/http/urlrewrite/Redirect.java
src/main/java/org/exist/http/urlrewrite/RewriteConfig.java
src/main/java/org/exist/indexing/Index.java
+ src/main/java/org/exist/indexing/IndexController.java
src/main/java/org/exist/indexing/IndexManager.java
src/main/java/org/exist/jetty/JettyStart.java
src/main/java/org/exist/jetty/ServerShutdown.java
@@ -1120,12 +1187,15 @@
src/main/java/org/exist/resolver/XercesXmlResolverAdapter.java
src/main/java/org/exist/scheduler/impl/QuartzSchedulerImpl.java
src/main/java/org/exist/security/EffectiveSubject.java
+ src/test/java/org/exist/security/FnDocSecurityTest.java
src/main/java/org/exist/security/SecurityManager.java
src/main/java/org/exist/security/SimpleACLPermission.java
+ src/test/java/org/exist/security/XqueryApiTest.java
src/main/java/org/exist/security/internal/AccountImpl.java
src/main/java/org/exist/source/Source.java
src/main/java/org/exist/source/SourceFactory.java
src/test/java/org/exist/storage/AbstractRecoverTest.java
+ src/test/java/org/exist/storage/BFileRecoverTest.java
src/main/java/org/exist/storage/BrokerFactory.java
src/main/java/org/exist/storage/BrokerPool.java
src/main/java/org/exist/storage/BrokerPoolService.java
@@ -1133,9 +1203,10 @@
src/main/java/org/exist/storage/BrokerPoolServicesManager.java
src/main/java/org/exist/storage/BrokerPoolServicesManagerException.java
src/test/java/org/exist/storage/BrokerPoolServiceTest.java
+ src/test/java/org/exist/storage/CollectionTest.java
src/test/java/org/exist/storage/CopyResourceTest.java
src/main/java/org/exist/storage/DBBroker.java
- src/main/java/org/exist/storage/FluentBrokerAPI.java
+ src/test/java/org/exist/storage/DOMFileRecoverTest.java
src/main/java/org/exist/storage/FluentBrokerAPI.java
src/main/java/org/exist/storage/Indexable.java
src/main/java/org/exist/storage/IndexSpec.java
@@ -1144,9 +1215,13 @@
src/main/java/org/exist/storage/ProcessMonitor.java
src/test/java/org/exist/storage/RecoverBinaryTest.java
src/test/java/org/exist/storage/RecoverXmlTest.java
+ src/test/java/org/exist/storage/RecoveryTest.java
+ src/test/java/org/exist/storage/RecoveryTest2.java
src/main/java/org/exist/storage/XQueryPool.java
src/main/java/org/exist/storage/blob/**
src/test/java/org/exist/storage/blob/**
+ src/test/java/org/exist/storage/btree/BTreeTest.java
+ src/main/java/org/exist/storage/btree/TreeMetrics.java
src/test/java/org/exist/storage/journal/AbstractJournalTest.java
src/test/java/org/exist/storage/journal/JournalBinaryTest.java
src/main/java/org/exist/storage/journal/JournalManager.java
@@ -1189,14 +1264,17 @@
src/main/java/org/exist/test/DiffMatcher.java
src/main/java/org/exist/test/ExistXmldbEmbeddedServer.java
src/test/java/org/exist/test/Util.java
+ src/main/java/org/exist/test/runner/ExtTestFailureFunction.java
src/main/java/org/exist/test/runner/XMLTestRunner.java
src/main/java/org/exist/test/runner/XQueryTestRunner.java
src/main/java/org/exist/test/runner/XSuite.java
+ src/test/java/org/exist/util/AbstractXMLReaderSecurityTest.java
src/main/java/org/exist/util/ByteOrderMark.java
src/main/java/org/exist/util/Collations.java
src/main/java/org/exist/util/CollectionOfArrayIterator.java
src/test/java/org/exist/util/CollectionOfArrayIteratorTest.java
src/main/java/org/exist/util/Configuration.java
+ src/test/java/org/exist/util/DOMSerializerTest.java
src/main/java/org/exist/util/IPUtil.java
src/main/java/org/exist/util/JREUtil.java
src/main/java/org/exist/util/MapUtil.java
@@ -1208,21 +1286,39 @@
src/main/java/org/exist/util/serializer/AttrList.java
src/main/java/org/exist/util/serializer/DOMStreamer.java
src/main/java/org/exist/util/serializer/EXISerializer.java
+ src/test/java/org/exist/util/serializer/HTML5WriterTest.java
src/main/java/org/exist/util/serializer/SerializerObjectFactory.java
+ src/main/java/org/exist/util/serializer/json/JSONObject.java
+ src/test/java/org/exist/util/serializer/json/JSONObjectTest.java
+ src/main/java/org/exist/util/serializer/json/JSONSerializer.java
+ src/test/java/org/exist/util/serializer/json/JSONWriterTest.java
src/test/resources/org/exist/validation/catalog.xml
src/test/java/org/exist/validation/CollectionConfigurationValidationModeTest.java
+ src/main/java/org/exist/validation/resolver/SearchResourceResolver.java
src/test/java/org/exist/w3c/tests/TestCase.java
src/main/java/org/exist/webstart/JnlpJarFiles.java
+ src/test/java/org/exist/xmldb/ContentAsDOMTest.java
src/test/java/org/exist/xmldb/CreateCollectionsTest.java
+ src/test/java/org/exist/xmldb/IndexingTest.java
+ src/main/java/org/exist/xmldb/LocalResourceSet.java
+ src/main/java/org/exist/xmldb/LocalXMLResource.java
src/main/java/org/exist/xmldb/RemoteRestoreService.java
+ src/test/java/org/exist/xmldb/ResourceTest.java
+ src/test/java/org/exist/xmldb/TestEXistXMLSerialize.java
+ src/test/java/org/exist/xmldb/TreeLevelOrderTest.java
+ src/test/java/org/exist/xmldb/concurrent/XMLGenerator.java
src/main/java/org/exist/xmlrpc/ACEAiderParser.java
src/main/java/org/exist/xmlrpc/ACEAiderSerializer.java
src/main/java/org/exist/xmlrpc/ExistRpcTypeFactory.java
+ src/main/java/org/exist/xmlrpc/RpcConnection.java
src/main/java/org/exist/xqj/Marshaller.java
+ src/test/java/org/exist/xqj/MarshallerTest.java
src/main/java/org/exist/xquery/Cardinality.java
src/test/java/org/exist/xquery/CastExpressionTest.java
+ src/test/java/org/exist/xquery/ConstructedNodesRecoveryTest.java
src/main/java/org/exist/xquery/DynamicTypeCheck.java
src/main/java/org/exist/xquery/ErrorCodes.java
+ src/test/java/org/exist/xquery/ForwardReferenceTest.java
src/main/java/org/exist/xquery/FunctionFactory.java
src/test/resources-filtered/org/exist/xquery/import-from-pkg-test.conf.xml
src/test/java/org/exist/xquery/ImportFromPkgTest.java
@@ -1233,12 +1329,15 @@
src/main/java/org/exist/xquery/Materializable.java
src/main/java/org/exist/xquery/NameTest.java
src/main/java/org/exist/xquery/Optimizer.java
+ src/main/java/org/exist/xquery/PerformanceStatsImpl.java
+ src/main/java/org/exist/xquery/TryCatchExpression.java
src/main/java/org/exist/xquery/UserDefinedFunction.java
src/test/java/org/exist/xquery/WatchdogTest.java
src/main/java/org/exist/xquery/XPathUtil.java
src/main/java/org/exist/xquery/XQueryContext.java
src/test/java/org/exist/xquery/XQueryContextAttributesTest.java
src/test/java/org/exist/xquery/XQueryFunctionsTest.java
+ src/test/java/org/exist/xquery/XQueryTest.java
src/main/java/org/exist/xquery/functions/array/ArrayType.java
src/test/java/org/exist/xquery/functions/fn/DocTest.java
src/main/java/org/exist/xquery/functions/fn/FnModule.java
@@ -1246,7 +1345,9 @@
src/main/java/org/exist/xquery/functions/fn/FunDeepEqual.java
src/main/java/org/exist/xquery/functions/fn/FunDocAvailable.java
src/main/java/org/exist/xquery/functions/fn/FunParseIetfDate.java
+ src/main/java/org/exist/xquery/functions/fn/FunSerialize.java
src/main/java/org/exist/xquery/functions/fn/FunTrace.java
+ src/main/java/org/exist/xquery/functions/fn/FunUnparsedText.java
src/main/java/org/exist/xquery/functions/fn/FunUriCollection.java
src/main/java/org/exist/xquery/functions/fn/FunXmlToJson.java
src/test/java/org/exist/xquery/functions/fn/FunXmlToJsonTest.java
@@ -1255,6 +1356,7 @@
src/test/java/org/exist/xquery/functions/fn/ParsingFunctionsTest.java
src/main/java/org/exist/xquery/functions/fn/transform/Convert.java
src/test/java/org/exist/xquery/functions/fn/transform/ConvertTest.java
+ src/main/java/org/exist/xquery/functions/fn/transform/Delivery.java
src/test/java/org/exist/xquery/functions/fn/transform/FunTransformITTest.java
src/main/java/org/exist/xquery/functions/fn/transform/Options.java
src/main/java/org/exist/xquery/functions/fn/transform/Transform.java
@@ -1275,7 +1377,9 @@
src/main/java/org/exist/xquery/functions/util/DescribeFunction.java
src/main/java/org/exist/xquery/functions/util/Eval.java
src/main/java/org/exist/xquery/functions/util/FunctionFunction.java
+ src/main/java/org/exist/xquery/functions/util/LogFunction.java
src/main/java/org/exist/xquery/functions/util/ModuleInfo.java
+ src/main/java/org/exist/xquery/functions/validation/Jaxp.java
src/test/java/org/exist/xquery/functions/xmldb/AbstractXMLDBTest.java
src/test/java/org/exist/xquery/functions/xmldb/XMLDBAuthenticateTest.java
src/main/java/org/exist/xquery/functions/xmldb/XMLDBStore.java
@@ -1285,6 +1389,7 @@
src/main/antlr/org/exist/xquery/parser/XQueryTree.g
src/main/java/org/exist/xquery/pragmas/TimePragma.java
src/test/java/org/exist/xquery/update/UpdateReplaceTest.java
+ src/main/java/org/exist/xquery/util/ExpressionDumper.java
src/main/java/org/exist/xquery/util/SerializerUtils.java
src/test/java/org/exist/xquery/util/URIUtilsTest.java
src/main/java/org/exist/xquery/value/AbstractDateTimeValue.java
@@ -1302,6 +1407,7 @@
src/main/java/org/exist/xquery/value/Type.java
src/main/java/org/exist/xslt/EXistURIResolver.java
src/main/java/org/exist/xslt/XsltURIResolverHelper.java
+ src/test/java/org/exist/xupdate/RemoveAppendTest.java
${project.parent.relativePath}/../../elemental-parent/elemental-LGPL-21-ONLY-license.template.txt
+ exi-functions-demo.xql
pom.xml
src/**
- exi-functions-demo.xql
@@ -160,6 +160,8 @@
pom.xml
+ src/main/java/org/exist/xquery/modules/exi/DecodeExiFunction.java
+ src/main/java/org/exist/xquery/modules/exi/EncodeExiFunction.java
@@ -170,6 +172,8 @@
${project.parent.relativePath}/../../exist-parent/existdb-LGPL-21-license.template.txt
pom.xml
+ src/main/java/org/exist/xquery/modules/exi/DecodeExiFunction.java
+ src/main/java/org/exist/xquery/modules/exi/EncodeExiFunction.java
diff --git a/extensions/modules/exi/src/main/java/org/exist/xquery/modules/exi/DecodeExiFunction.java b/extensions/modules/exi/src/main/java/org/exist/xquery/modules/exi/DecodeExiFunction.java
index cf01ffebf0..9927ab9c4c 100644
--- a/extensions/modules/exi/src/main/java/org/exist/xquery/modules/exi/DecodeExiFunction.java
+++ b/extensions/modules/exi/src/main/java/org/exist/xquery/modules/exi/DecodeExiFunction.java
@@ -1,4 +1,28 @@
/*
+ * Elemental
+ * Copyright (C) 2024, Evolved Binary Ltd
+ *
+ * admin@evolvedbinary.com
+ * https://www.evolvedbinary.com | https://www.elemental.xyz
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; version 2.1.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * NOTE: Parts of this file contain code from 'The eXist-db Authors'.
+ * The original license header is included below.
+ *
+ * =====================================================================
+ *
* eXist-db Open Source Native XML Database
* Copyright (C) 2001 The eXist-db Authors
*
@@ -125,8 +149,8 @@ public Sequence eval(Sequence[] args, Sequence contextSequence)
context.popDocumentContext();
}
}
- catch(EXIException | SAXException | IOException exie) {
- throw new XPathException(this, new JavaErrorCode(exie.getCause()), exie.getMessage());
+ catch(final EXIException | SAXException | IOException exie) {
+ throw new XPathException(this, JavaErrorCode.fromThrowable(exie.getCause()), exie.getMessage());
}
}
diff --git a/extensions/modules/exi/src/main/java/org/exist/xquery/modules/exi/EncodeExiFunction.java b/extensions/modules/exi/src/main/java/org/exist/xquery/modules/exi/EncodeExiFunction.java
index 5c6b2c70c3..7de440be70 100755
--- a/extensions/modules/exi/src/main/java/org/exist/xquery/modules/exi/EncodeExiFunction.java
+++ b/extensions/modules/exi/src/main/java/org/exist/xquery/modules/exi/EncodeExiFunction.java
@@ -1,4 +1,28 @@
/*
+ * Elemental
+ * Copyright (C) 2024, Evolved Binary Ltd
+ *
+ * admin@evolvedbinary.com
+ * https://www.evolvedbinary.com | https://www.elemental.xyz
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; version 2.1.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * NOTE: Parts of this file contain code from 'The eXist-db Authors'.
+ * The original license header is included below.
+ *
+ * =====================================================================
+ *
* eXist-db Open Source Native XML Database
* Copyright (C) 2001 The eXist-db Authors
*
@@ -114,8 +138,8 @@ public Sequence eval(Sequence[] args, Sequence contextSequence)
// TODO - test!
throw new XPathException(this, ErrorCodes.FODC0002, ioex.getMessage());
}
- catch(EXIException | SAXException exie) {
- throw new XPathException(this, new JavaErrorCode(exie.getCause()), exie.getMessage());
+ catch(final EXIException | SAXException exie) {
+ throw new XPathException(this, JavaErrorCode.fromThrowable(exie.getCause()), exie.getMessage());
}
}
diff --git a/extensions/modules/file/pom.xml b/extensions/modules/file/pom.xml
index 2372273dd7..69448ffe9b 100644
--- a/extensions/modules/file/pom.xml
+++ b/extensions/modules/file/pom.xml
@@ -94,7 +94,6 @@
commons-io
commons-io
- test
@@ -218,6 +217,7 @@
src/test/resources/log4j2.xml
src/test/resources/standalone-webapp/WEB-INF/web.xml
src/main/java/org/exist/xquery/modules/file/FileModuleHelper.java
+ src/main/java/org/exist/xquery/modules/file/FileReadUnicode.java
src/main/java/org/exist/xquery/modules/file/Sync.java
@@ -233,6 +233,7 @@
src/test/resources/log4j2.xml
src/test/resources/standalone-webapp/WEB-INF/web.xml
src/main/java/org/exist/xquery/modules/file/FileModuleHelper.java
+ src/main/java/org/exist/xquery/modules/file/FileReadUnicode.java
src/main/java/org/exist/xquery/modules/file/Sync.java
diff --git a/extensions/modules/file/src/main/java/org/exist/xquery/modules/file/FileReadUnicode.java b/extensions/modules/file/src/main/java/org/exist/xquery/modules/file/FileReadUnicode.java
index b9d9730f66..f4284ac467 100644
--- a/extensions/modules/file/src/main/java/org/exist/xquery/modules/file/FileReadUnicode.java
+++ b/extensions/modules/file/src/main/java/org/exist/xquery/modules/file/FileReadUnicode.java
@@ -1,4 +1,28 @@
/*
+ * Elemental
+ * Copyright (C) 2024, Evolved Binary Ltd
+ *
+ * admin@evolvedbinary.com
+ * https://www.evolvedbinary.com | https://www.elemental.xyz
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; version 2.1.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * NOTE: Parts of this file contain code from 'The eXist-db Authors'.
+ * The original license header is included below.
+ *
+ * =====================================================================
+ *
* eXist-db Open Source Native XML Database
* Copyright (C) 2001 The eXist-db Authors
*
@@ -22,12 +46,12 @@
package org.exist.xquery.modules.file;
import java.io.IOException;
-import java.io.StringWriter;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
+import org.apache.commons.io.output.StringBuilderWriter;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -102,7 +126,7 @@ public Sequence eval(final Sequence[] args, final Sequence contextSequence) thro
}
try(final UnicodeReader reader = new UnicodeReader(Files.newInputStream(file), encoding.name());
- final StringWriter sw = new StringWriter()) {
+ final StringBuilderWriter sw = new StringBuilderWriter()) {
char[] buf = new char[1024];
int len;
diff --git a/extensions/modules/mail/src/main/java/org/exist/xquery/modules/mail/SendEmailFunction.java b/extensions/modules/mail/src/main/java/org/exist/xquery/modules/mail/SendEmailFunction.java
index de9ab84e34..4e611c3aca 100644
--- a/extensions/modules/mail/src/main/java/org/exist/xquery/modules/mail/SendEmailFunction.java
+++ b/extensions/modules/mail/src/main/java/org/exist/xquery/modules/mail/SendEmailFunction.java
@@ -46,6 +46,7 @@
package org.exist.xquery.modules.mail;
import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.output.StringBuilderWriter;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.exist.Version;
@@ -701,7 +702,7 @@ private Mail[] parseMailElement(final Element[] mailElements) throws Transformer
//Convert everything inside to text
final Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
final DOMSource source = new DOMSource(bodyPart.getFirstChild());
- try (final StringWriter strWriter = new StringWriter()) {
+ try (final StringBuilderWriter strWriter = new StringBuilderWriter()) {
final StreamResult result = new StreamResult(strWriter);
transformer.transform(source, result);
mail.setXHTML(strWriter.toString());
@@ -840,7 +841,7 @@ private Message[] parseMessageElement(final Session session, final Element[] mai
//Convert everything inside to text
final Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
final DOMSource source = new DOMSource(bodyPart.getFirstChild());
- try (final StringWriter strWriter = new StringWriter()) {
+ try (final StringBuilderWriter strWriter = new StringBuilderWriter()) {
final StreamResult result = new StreamResult(strWriter);
transformer.transform(source, result);
content = strWriter.toString();
@@ -907,7 +908,7 @@ private Message[] parseMessageElement(final Session session, final Element[] mai
if (Node.ELEMENT_NODE == attachChild.getNodeType()) {
final Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
final DOMSource source = new DOMSource(attachChild);
- try (final StringWriter strWriter = new StringWriter()) {
+ try (final StringBuilderWriter strWriter = new StringBuilderWriter()) {
final StreamResult result = new StreamResult(strWriter);
transformer.transform(source, result);
content.append(strWriter);
diff --git a/extensions/modules/mail/src/test/java/org/exist/xquery/modules/mail/WriteMessageTest.java b/extensions/modules/mail/src/test/java/org/exist/xquery/modules/mail/WriteMessageTest.java
index fd7d45fe67..c12a6020cb 100644
--- a/extensions/modules/mail/src/test/java/org/exist/xquery/modules/mail/WriteMessageTest.java
+++ b/extensions/modules/mail/src/test/java/org/exist/xquery/modules/mail/WriteMessageTest.java
@@ -34,12 +34,12 @@
import com.evolvedbinary.j8fu.tuple.Tuple2;
import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.output.StringBuilderWriter;
import org.exist.util.UUIDGenerator;
import org.junit.Test;
import java.io.IOException;
import java.io.PrintWriter;
-import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -588,7 +588,7 @@ private static SendEmailFunction.Mail createMail() {
private String[] writeMessage(final SendEmailFunction.Mail mail) throws IOException {
final String[] lines;
- try (final StringWriter writer = new StringWriter();
+ try (final StringBuilderWriter writer = new StringBuilderWriter();
final PrintWriter printWriter = new PrintWriter(writer)) {
SendEmailFunction.writeMessage(printWriter, mail, true, CHARSET);