Skip to content

Commit 8044aee

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 eaeac8e commit 8044aee

File tree

53 files changed

+1270
-241
lines changed

Some content is hidden

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

53 files changed

+1270
-241
lines changed

exist-core/pom.xml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,15 +722,26 @@
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/ElementImpl.java</include>
729732
<include>src/main/java/org/exist/dom/persistent/DocumentImpl.java</include>
730733
<include>src/main/java/org/exist/dom/persistent/DocumentSet.java</include>
734+
<include>src/main/java/org/exist/dom/persistent/ElementImpl.java</include>
735+
<include>src/test/java/org/exist/dom/persistent/NodeTest.java</include>
731736
<include>src/main/java/org/exist/dom/persistent/SymbolTable.java</include>
732737
<include>src/main/java/org/exist/dom/persistent/VirtualNodeSet.java</include>
738+
<include>src/main/java/org/exist/http/Descriptor.java</include>
739+
<include>src/main/java/org/exist/http/RESTServer.java</include>
733740
<include>src/main/java/org/exist/http/servlets/XSLTServlet.java</include>
741+
<include>src/main/java/org/exist/http/urlrewrite/ModuleCall.java</include>
742+
<include>src/main/java/org/exist/http/urlrewrite/PathForward.java</include>
743+
<include>src/main/java/org/exist/http/urlrewrite/Redirect.java</include>
744+
<include>src/main/java/org/exist/http/urlrewrite/RewriteConfig.java</include>
734745
<include>src/main/java/org/exist/indexing/Index.java</include>
735746
<include>src/main/java/org/exist/indexing/IndexManager.java</include>
736747
<include>src/main/java/org/exist/jetty/JettyStart.java</include>
@@ -765,14 +776,19 @@
765776
<include>src/main/java/org/exist/test/runner/XQueryTestRunner.java</include>
766777
<include>src/main/java/org/exist/test/runner/XSuite.java</include>
767778
<include>src/main/java/org/exist/util/Collations.java</include>
779+
<include>src/main/java/org/exist/util/Configuration.java</include>
780+
<include>src/main/java/org/exist/util/ParametersExtractor.java</include>
768781
<include>src/main/java/org/exist/util/crypto/digest/DigestType.java</include>
782+
<include>src/test/java/org/exist/w3c/tests/TestCase.java</include>
769783
<include>src/main/java/org/exist/webstart/JnlpJarFiles.java</include>
770784
<include>src/main/java/org/exist/xmldb/RemoteRestoreService.java</include>
771785
<include>src/main/java/org/exist/xmlrpc/ExistRpcTypeFactory.java</include>
786+
<include>src/main/java/org/exist/xqj/Marshaller.java</include>
772787
<include>src/main/java/org/exist/xquery/functions/fn/FunUriCollection.java</include>
773788
<include>src/main/java/org/exist/xquery/functions/fn/ParsingFunctions.java</include>
774789
<include>src/main/java/org/exist/xquery/functions/system/GetUptime.java</include>
775790
<include>src/main/java/org/exist/xquery/functions/system/Shutdown.java</include>
791+
<include>src/main/java/org/exist/xquery/functions/system/TriggerSystemTask.java</include>
776792
<include>src/main/java/org/exist/xquery/functions/xmldb/XMLDBStore.java</include>
777793
<include>src/main/java/org/exist/xquery/value/AbstractDateTimeValue.java</include>
778794
<include>src/main/java/org/exist/xquery/value/Type.java</include>
@@ -796,6 +812,7 @@
796812
<include>src/test/java/org/exist/xquery/XQueryFunctionsTest.java</include>
797813
<include>src/main/java/org/exist/xquery/functions/fn/FunXmlToJson.java</include>
798814
<include>src/main/java/org/exist/xquery/functions/fn/LoadXQueryModule.java</include>
815+
<include>src/main/java/org/exist/xquery/functions/transform/Transform.java</include>
799816
<include>src/test/java/org/exist/xquery/functions/transform/TransformFromPkgTest.java</include>
800817
<include>src/test/java/org/exist/xquery/value/Base64BinaryValueTypeTest.java</include>
801818
<include>src/main/java/org/exist/xslt/XsltURIResolverHelper.java</include>
@@ -848,15 +865,26 @@
848865
<exclude>src/main/java/org/exist/client/security/UserDialog.java</exclude>
849866
<exclude>src/main/java/org/exist/client/security/UserManagerDialog.java</exclude>
850867
<exclude>src/main/java/org/exist/collections/Collection.java</exclude>
868+
<exclude>src/main/java/org/exist/collections/CollectionConfiguration.java</exclude>
851869
<exclude>src/main/java/org/exist/collections/CollectionConfigurationManager.java</exclude>
852870
<exclude>src/main/java/org/exist/collections/triggers/CollectionTrigger.java</exclude>
853871
<exclude>src/main/java/org/exist/collections/triggers/DocumentTrigger.java</exclude>
854872
<exclude>src/main/java/org/exist/config/Configuration.java</exclude>
873+
<exclude>src/main/java/org/exist/config/ConfigurationImpl.java</exclude>
874+
<exclude>src/main/java/org/exist/dom/memtree/ElementImpl.java</exclude>
855875
<exclude>src/main/java/org/exist/dom/persistent/DocumentImpl.java</exclude>
856876
<exclude>src/main/java/org/exist/dom/persistent/DocumentSet.java</exclude>
877+
<exclude>src/main/java/org/exist/dom/persistent/ElementImpl.java</exclude>
878+
<include>src/test/java/org/exist/dom/persistent/NodeTest.java</include>
857879
<exclude>src/main/java/org/exist/dom/persistent/SymbolTable.java</exclude>
858880
<exclude>src/main/java/org/exist/dom/persistent/VirtualNodeSet.java</exclude>
881+
<exclude>src/main/java/org/exist/http/Descriptor.java</exclude>
882+
<exclude>src/main/java/org/exist/http/RESTServer.java</exclude>
859883
<exclude>src/main/java/org/exist/http/servlets/XSLTServlet.java</exclude>
884+
<exclude>src/main/java/org/exist/http/urlrewrite/ModuleCall.java</exclude>
885+
<exclude>src/main/java/org/exist/http/urlrewrite/PathForward.java</exclude>
886+
<exclude>src/main/java/org/exist/http/urlrewrite/Redirect.java</exclude>
887+
<exclude>src/main/java/org/exist/http/urlrewrite/RewriteConfig.java</exclude>
860888
<exclude>src/main/java/org/exist/indexing/Index.java</exclude>
861889
<exclude>src/main/java/org/exist/indexing/IndexManager.java</exclude>
862890
<exclude>src/main/java/org/exist/jetty/JettyStart.java</exclude>
@@ -893,10 +921,13 @@
893921
<exclude>src/main/java/org/exist/test/runner/XSuite.java</exclude>
894922
<exclude>src/main/java/org/exist/util/ByteOrderMark.java</exclude>
895923
<exclude>src/main/java/org/exist/util/Collations.java</exclude>
924+
<exclude>src/main/java/org/exist/util/Configuration.java</exclude>
925+
<exclude>src/main/java/org/exist/util/ParametersExtractor.java</exclude>
896926
<exclude>src/main/java/org/exist/util/crypto/digest/DigestType.java</exclude>
897927
<exclude>src/main/java/org/exist/webstart/JnlpJarFiles.java</exclude>
898928
<exclude>src/main/java/org/exist/xmldb/RemoteRestoreService.java</exclude>
899929
<exclude>src/main/java/org/exist/xmlrpc/ExistRpcTypeFactory.java</exclude>
930+
<exclude>src/main/java/org/exist/xqj/Marshaller.java</exclude>
900931
<exclude>src/test/java/org/exist/xquery/ImportFromPkgTest.java</exclude>
901932
<exclude>src/test/java/org/exist/xquery/WatchdogTest.java</exclude>
902933
<exclude>src/main/java/org/exist/xquery/functions/fn/FunUriCollection.java</exclude>
@@ -907,6 +938,7 @@
907938
<exclude>src/test/java/org/exist/xquery/functions/fn/ParsingFunctionsTest.java</exclude>
908939
<exclude>src/main/java/org/exist/xquery/functions/system/GetUptime.java</exclude>
909940
<exclude>src/main/java/org/exist/xquery/functions/system/Shutdown.java</exclude>
941+
<exclude>src/main/java/org/exist/xquery/functions/system/TriggerSystemTask.java</exclude>
910942
<exclude>src/main/java/org/exist/xquery/functions/xmldb/XMLDBStore.java</exclude>
911943
<exclude>src/test/java/org/exist/xquery/functions/xmldb/XMLDBStoreTest.java</exclude>
912944
<exclude>src/main/java/org/exist/xquery/value/AbstractDateTimeValue.java</exclude>
@@ -930,6 +962,7 @@
930962
<exclude>src/test/java/org/exist/management/JmxRemoteTest.java</exclude>
931963
<exclude>src/test/java/org/exist/xmldb/CreateCollectionsTest.java</exclude>
932964
<exclude>src/test/java/org/exist/xquery/XQueryFunctionsTest.java</exclude>
965+
<exclude>src/main/java/org/exist/xquery/functions/transform/Transform.java</exclude>
933966
<exclude>src/test/java/org/exist/xquery/functions/transform/TransformFromPkgTest.java</exclude>
934967
<exclude>src/test/java/org/exist/xquery/value/Base64BinaryValueTypeTest.java</exclude>
935968
<exclude>src/main/java/org/exist/xslt/XsltURIResolverHelper.java</exclude>
@@ -988,6 +1021,7 @@
9881021
<exclude>src/test/java/org/exist/util/CollectionOfArrayIteratorTest.java</exclude>
9891022
<exclude>src/main/java/org/exist/util/IPUtil.java</exclude>
9901023
<exclude>src/main/java/org/exist/util/MapUtil.java</exclude>
1024+
<exclude>src/test/java/org/exist/w3c/tests/TestCase.java</exclude>
9911025
<exclude>src/main/java/org/exist/xmlrpc/ACEAiderParser.java</exclude>
9921026
<exclude>src/main/java/org/exist/xmlrpc/ACEAiderSerializer.java</exclude>
9931027
<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)