Skip to content

Commit 0989610

Browse files
committed
[bugfix] Fix DOM compliance of in-memory DOM so that Element#getAttribute(String) and Element#getAttributeNS(String, String) return an empty string (and not null) if the attribute does not exist
Closes eXist-db/exist#5672
1 parent cdf4b37 commit 0989610

File tree

52 files changed

+1264
-236
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1264
-236
lines changed

exist-core/pom.xml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,15 +722,27 @@
722722
<include>src/main/java/org/exist/client/security/UserDialog.java</include>
723723
<include>src/main/java/org/exist/client/security/UserManagerDialog.java</include>
724724
<include>src/main/java/org/exist/collections/Collection.java</include>
725+
<include>src/main/java/org/exist/collections/CollectionConfiguration.java</include>
725726
<include>src/main/java/org/exist/collections/CollectionConfigurationManager.java</include>
726727
<include>src/main/java/org/exist/collections/triggers/CollectionTrigger.java</include>
727728
<include>src/main/java/org/exist/collections/triggers/DocumentTrigger.java</include>
728729
<include>src/main/java/org/exist/config/Configuration.java</include>
730+
<include>src/main/java/org/exist/config/ConfigurationImpl.java</include>
731+
<include>src/main/java/org/exist/dom/memtree/DocumentImpl.java</include>
732+
<include>src/main/java/org/exist/dom/memtree/ElementImpl.java</include>
729733
<include>src/main/java/org/exist/dom/persistent/DocumentImpl.java</include>
730734
<include>src/main/java/org/exist/dom/persistent/DocumentSet.java</include>
735+
<include>src/main/java/org/exist/dom/persistent/ElementImpl.java</include>
736+
<include>src/test/java/org/exist/dom/persistent/NodeTest.java</include>
731737
<include>src/main/java/org/exist/dom/persistent/SymbolTable.java</include>
732738
<include>src/main/java/org/exist/dom/persistent/VirtualNodeSet.java</include>
739+
<include>src/main/java/org/exist/http/Descriptor.java</include>
740+
<include>src/main/java/org/exist/http/RESTServer.java</include>
733741
<include>src/main/java/org/exist/http/servlets/XSLTServlet.java</include>
742+
<include>src/main/java/org/exist/http/urlrewrite/ModuleCall.java</include>
743+
<include>src/main/java/org/exist/http/urlrewrite/PathForward.java</include>
744+
<include>src/main/java/org/exist/http/urlrewrite/Redirect.java</include>
745+
<include>src/main/java/org/exist/http/urlrewrite/RewriteConfig.java</include>
734746
<include>src/main/java/org/exist/indexing/Index.java</include>
735747
<include>src/main/java/org/exist/indexing/IndexManager.java</include>
736748
<include>src/main/java/org/exist/jetty/JettyStart.java</include>
@@ -765,14 +777,23 @@
765777
<include>src/main/java/org/exist/test/runner/XQueryTestRunner.java</include>
766778
<include>src/main/java/org/exist/test/runner/XSuite.java</include>
767779
<include>src/main/java/org/exist/util/Collations.java</include>
780+
<include>src/main/java/org/exist/util/Configuration.java</include>
781+
<include>src/main/java/org/exist/util/ParametersExtractor.java</include>
768782
<include>src/main/java/org/exist/util/crypto/digest/DigestType.java</include>
783+
<include>src/main/java/org/exist/util/serializer/DOMStreamer.java</include>
784+
<include>src/main/java/org/exist/util/serializer/SerializerObjectFactory.java</include>
785+
<include>src/test/java/org/exist/w3c/tests/TestCase.java</include>
769786
<include>src/main/java/org/exist/webstart/JnlpJarFiles.java</include>
770787
<include>src/main/java/org/exist/xmldb/RemoteRestoreService.java</include>
771788
<include>src/main/java/org/exist/xmlrpc/ExistRpcTypeFactory.java</include>
789+
<include>src/main/java/org/exist/xqj/Marshaller.java</include>
790+
<include>src/main/java/org/exist/xquery/NameTest.java</include>
791+
<include>src/main/java/org/exist/xquery/functions/fn/FunDeepEqual.java</include>
772792
<include>src/main/java/org/exist/xquery/functions/fn/FunUriCollection.java</include>
773793
<include>src/main/java/org/exist/xquery/functions/fn/ParsingFunctions.java</include>
774794
<include>src/main/java/org/exist/xquery/functions/system/GetUptime.java</include>
775795
<include>src/main/java/org/exist/xquery/functions/system/Shutdown.java</include>
796+
<include>src/main/java/org/exist/xquery/functions/system/TriggerSystemTask.java</include>
776797
<include>src/main/java/org/exist/xquery/functions/xmldb/XMLDBStore.java</include>
777798
<include>src/main/java/org/exist/xquery/value/AbstractDateTimeValue.java</include>
778799
<include>src/main/java/org/exist/xquery/value/Type.java</include>
@@ -796,6 +817,7 @@
796817
<include>src/test/java/org/exist/xquery/XQueryFunctionsTest.java</include>
797818
<include>src/main/java/org/exist/xquery/functions/fn/FunXmlToJson.java</include>
798819
<include>src/main/java/org/exist/xquery/functions/fn/LoadXQueryModule.java</include>
820+
<include>src/main/java/org/exist/xquery/functions/transform/Transform.java</include>
799821
<include>src/test/java/org/exist/xquery/functions/transform/TransformFromPkgTest.java</include>
800822
<include>src/test/java/org/exist/xquery/value/Base64BinaryValueTypeTest.java</include>
801823
<include>src/main/java/org/exist/xslt/XsltURIResolverHelper.java</include>
@@ -848,15 +870,27 @@
848870
<exclude>src/main/java/org/exist/client/security/UserDialog.java</exclude>
849871
<exclude>src/main/java/org/exist/client/security/UserManagerDialog.java</exclude>
850872
<exclude>src/main/java/org/exist/collections/Collection.java</exclude>
873+
<exclude>src/main/java/org/exist/collections/CollectionConfiguration.java</exclude>
851874
<exclude>src/main/java/org/exist/collections/CollectionConfigurationManager.java</exclude>
852875
<exclude>src/main/java/org/exist/collections/triggers/CollectionTrigger.java</exclude>
853876
<exclude>src/main/java/org/exist/collections/triggers/DocumentTrigger.java</exclude>
854877
<exclude>src/main/java/org/exist/config/Configuration.java</exclude>
878+
<exclude>src/main/java/org/exist/config/ConfigurationImpl.java</exclude>
879+
<exclude>src/main/java/org/exist/dom/memtree/DocumentImpl.java</exclude>
880+
<exclude>src/main/java/org/exist/dom/memtree/ElementImpl.java</exclude>
855881
<exclude>src/main/java/org/exist/dom/persistent/DocumentImpl.java</exclude>
856882
<exclude>src/main/java/org/exist/dom/persistent/DocumentSet.java</exclude>
883+
<exclude>src/main/java/org/exist/dom/persistent/ElementImpl.java</exclude>
884+
<include>src/test/java/org/exist/dom/persistent/NodeTest.java</include>
857885
<exclude>src/main/java/org/exist/dom/persistent/SymbolTable.java</exclude>
858886
<exclude>src/main/java/org/exist/dom/persistent/VirtualNodeSet.java</exclude>
887+
<exclude>src/main/java/org/exist/http/Descriptor.java</exclude>
888+
<exclude>src/main/java/org/exist/http/RESTServer.java</exclude>
859889
<exclude>src/main/java/org/exist/http/servlets/XSLTServlet.java</exclude>
890+
<exclude>src/main/java/org/exist/http/urlrewrite/ModuleCall.java</exclude>
891+
<exclude>src/main/java/org/exist/http/urlrewrite/PathForward.java</exclude>
892+
<exclude>src/main/java/org/exist/http/urlrewrite/Redirect.java</exclude>
893+
<exclude>src/main/java/org/exist/http/urlrewrite/RewriteConfig.java</exclude>
860894
<exclude>src/main/java/org/exist/indexing/Index.java</exclude>
861895
<exclude>src/main/java/org/exist/indexing/IndexManager.java</exclude>
862896
<exclude>src/main/java/org/exist/jetty/JettyStart.java</exclude>
@@ -893,10 +927,13 @@
893927
<exclude>src/main/java/org/exist/test/runner/XSuite.java</exclude>
894928
<exclude>src/main/java/org/exist/util/ByteOrderMark.java</exclude>
895929
<exclude>src/main/java/org/exist/util/Collations.java</exclude>
930+
<exclude>src/main/java/org/exist/util/Configuration.java</exclude>
931+
<exclude>src/main/java/org/exist/util/ParametersExtractor.java</exclude>
896932
<exclude>src/main/java/org/exist/util/crypto/digest/DigestType.java</exclude>
897933
<exclude>src/main/java/org/exist/webstart/JnlpJarFiles.java</exclude>
898934
<exclude>src/main/java/org/exist/xmldb/RemoteRestoreService.java</exclude>
899935
<exclude>src/main/java/org/exist/xmlrpc/ExistRpcTypeFactory.java</exclude>
936+
<exclude>src/main/java/org/exist/xqj/Marshaller.java</exclude>
900937
<exclude>src/test/java/org/exist/xquery/ImportFromPkgTest.java</exclude>
901938
<exclude>src/test/java/org/exist/xquery/WatchdogTest.java</exclude>
902939
<exclude>src/main/java/org/exist/xquery/functions/fn/FunUriCollection.java</exclude>
@@ -907,6 +944,7 @@
907944
<exclude>src/test/java/org/exist/xquery/functions/fn/ParsingFunctionsTest.java</exclude>
908945
<exclude>src/main/java/org/exist/xquery/functions/system/GetUptime.java</exclude>
909946
<exclude>src/main/java/org/exist/xquery/functions/system/Shutdown.java</exclude>
947+
<exclude>src/main/java/org/exist/xquery/functions/system/TriggerSystemTask.java</exclude>
910948
<exclude>src/main/java/org/exist/xquery/functions/xmldb/XMLDBStore.java</exclude>
911949
<exclude>src/test/java/org/exist/xquery/functions/xmldb/XMLDBStoreTest.java</exclude>
912950
<exclude>src/main/java/org/exist/xquery/value/AbstractDateTimeValue.java</exclude>
@@ -930,6 +968,7 @@
930968
<exclude>src/test/java/org/exist/management/JmxRemoteTest.java</exclude>
931969
<exclude>src/test/java/org/exist/xmldb/CreateCollectionsTest.java</exclude>
932970
<exclude>src/test/java/org/exist/xquery/XQueryFunctionsTest.java</exclude>
971+
<exclude>src/main/java/org/exist/xquery/functions/transform/Transform.java</exclude>
933972
<exclude>src/test/java/org/exist/xquery/functions/transform/TransformFromPkgTest.java</exclude>
934973
<exclude>src/test/java/org/exist/xquery/value/Base64BinaryValueTypeTest.java</exclude>
935974
<exclude>src/main/java/org/exist/xslt/XsltURIResolverHelper.java</exclude>
@@ -988,6 +1027,7 @@
9881027
<exclude>src/test/java/org/exist/util/CollectionOfArrayIteratorTest.java</exclude>
9891028
<exclude>src/main/java/org/exist/util/IPUtil.java</exclude>
9901029
<exclude>src/main/java/org/exist/util/MapUtil.java</exclude>
1030+
<exclude>src/test/java/org/exist/w3c/tests/TestCase.java</exclude>
9911031
<exclude>src/main/java/org/exist/xmlrpc/ACEAiderParser.java</exclude>
9921032
<exclude>src/main/java/org/exist/xmlrpc/ACEAiderSerializer.java</exclude>
9931033
<exclude>src/main/java/org/exist/xquery/Cardinality.java</exclude>

exist-core/src/main/java/org/exist/collections/CollectionConfiguration.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
*
@@ -160,7 +184,7 @@ protected void read(final DBBroker broker, final Document doc, final boolean che
160184
} else if (VALIDATION_ELEMENT.equals(node.getLocalName())) {
161185
final Element elem = (Element) node;
162186
final String mode = elem.getAttribute(VALIDATION_MODE_ATTR);
163-
if (mode == null) {
187+
if (mode.isEmpty()) {
164188
LOG.debug("Unable to determine validation mode in {}", srcCollectionURI);
165189
validationMode = XMLReaderObjectFactory.VALIDATION_SETTING.UNKNOWN;
166190
} else {

exist-core/src/main/java/org/exist/config/ConfigurationImpl.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
*
@@ -349,7 +373,7 @@ public Long getPropertyLong(final String name, final Long defaultValue, final bo
349373

350374
public Integer getPropertyMegabytes(String name, Integer defaultValue) {
351375
String cacheMem = element.getAttribute(name);
352-
if (cacheMem != null) {
376+
if (!cacheMem.isEmpty()) {
353377
if (cacheMem.endsWith("M") || cacheMem.endsWith("m")) {
354378
cacheMem = cacheMem.substring(0, cacheMem.length() - 1);
355379
}

0 commit comments

Comments
 (0)