This is an automated email from the ASF dual-hosted git repository.
arne-bdt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git
The following commit(s) were added to refs/heads/main by this push:
new fbff38a1dd GH-3941: Fixed spliterator characteristics
fbff38a1dd is described below
commit fbff38a1dd92ca4033cab84d6cad964d4e2601e2
Author: bern-SOPTIM <[email protected]>
AuthorDate: Sat May 23 16:47:24 2026 +0200
GH-3941: Fixed spliterator characteristics
The spliterators claim not NULL, which was not explicitly documented and
checked in the set and map implementations for keys and values.
Now non-null key and value are ensured by assertions and documented in the
interfaces.
Also: The Spliterator claimed IMMUTABLE, which is not correct since the
spliterators may throw ConcurrentModificationException.
---
.../apache/jena/mem/collection/FastHashMap.java | 6 ++
.../apache/jena/mem/collection/FastHashSet.java | 7 +-
.../apache/jena/mem/collection/HashCommonMap.java | 5 ++
.../apache/jena/mem/collection/HashCommonSet.java | 2 +
.../org/apache/jena/mem/collection/JenaMap.java | 11 +--
.../apache/jena/mem/collection/JenaMapIndexed.java | 4 +-
.../org/apache/jena/mem/collection/JenaSet.java | 4 +-
.../jena/mem/collection/JenaSetHashOptimized.java | 8 +-
.../apache/jena/mem/collection/JenaSetIndexed.java | 2 +-
.../jena/mem/spliterator/ArraySpliterator.java | 2 +-
.../jena/mem/spliterator/ArraySubSpliterator.java | 2 +-
.../mem/spliterator/SparseArraySpliterator.java | 2 +-
.../mem/spliterator/SparseArraySubSpliterator.java | 2 +-
.../mem/collection/AbstractJenaMapNodeTest.java | 96 +++++++++++-----------
.../jena/mem/collection/FastHashMapTest2.java | 10 +--
.../jena/mem/spliterator/ArraySpliteratorTest.java | 2 +-
.../mem/spliterator/ArraySubSpliteratorTest.java | 2 +-
.../spliterator/SparseArraySpliteratorTest.java | 2 +-
.../spliterator/SparseArraySubSpliteratorTest.java | 2 +-
19 files changed, 94 insertions(+), 77 deletions(-)
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/collection/FastHashMap.java
b/jena-core/src/main/java/org/apache/jena/mem/collection/FastHashMap.java
index 04f1d64878..5a3fa8fc23 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/collection/FastHashMap.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/collection/FastHashMap.java
@@ -132,6 +132,8 @@ public abstract class FastHashMap<K, V> extends
FastHashBase<K> implements JenaM
@Override
public boolean tryPut(K key, V value) {
+ assert(key != null);
+ assert(value != null);
growPositionsArrayIfNeeded();
final var hashCode = key.hashCode();
final var pIndex = findPosition(key, hashCode);
@@ -150,6 +152,8 @@ public abstract class FastHashMap<K, V> extends
FastHashBase<K> implements JenaM
@Override
public void put(K key, V value) {
+ assert(key != null);
+ assert(value != null);
growPositionsArrayIfNeeded();
final var hashCode = key.hashCode();
final var pIndex = findPosition(key, hashCode);
@@ -166,6 +170,8 @@ public abstract class FastHashMap<K, V> extends
FastHashBase<K> implements JenaM
@Override
public int putAndGetIndex(K key, V value) {
+ assert(key != null);
+ assert(value != null);
growPositionsArrayIfNeeded();
final int hashCode = key.hashCode();
final var pIndex = findPosition(key, hashCode);
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/collection/FastHashSet.java
b/jena-core/src/main/java/org/apache/jena/mem/collection/FastHashSet.java
index c793164432..9c8d6ca526 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/collection/FastHashSet.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/collection/FastHashSet.java
@@ -69,6 +69,7 @@ public abstract class FastHashSet<K> extends FastHashBase<K>
implements JenaSetI
@Override
public boolean tryAdd(K key, int hashCode) {
+ assert(key != null);
growPositionsArrayIfNeeded();
final var pIndex = findPosition(key, hashCode);
if (pIndex < 0) {
@@ -93,6 +94,7 @@ public abstract class FastHashSet<K> extends FastHashBase<K>
implements JenaSetI
*/
@Override
public int addAndGetIndex(K key) {
+ assert(key != null);
growPositionsArrayIfNeeded();
final var hashCode = key.hashCode();
final var pIndex = findPosition(key, hashCode);
@@ -113,10 +115,11 @@ public abstract class FastHashSet<K> extends
FastHashBase<K> implements JenaSetI
}
@Override
- public void addUnchecked(K value, int hashCode) {
+ public void addUnchecked(K key, int hashCode) {
+ assert(key != null);
growPositionsArrayIfNeeded();
final var eIndex = getFreeKeyIndex();
- keys[eIndex] = value;
+ keys[eIndex] = key;
hashCodesOrDeletedIndices[eIndex] = hashCode;
positions[findEmptySlotWithoutEqualityCheck(hashCode)] = ~eIndex;
}
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/collection/HashCommonMap.java
b/jena-core/src/main/java/org/apache/jena/mem/collection/HashCommonMap.java
index dcdd555765..563243f8a6 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/collection/HashCommonMap.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/collection/HashCommonMap.java
@@ -84,6 +84,8 @@ public abstract class HashCommonMap<K, V> extends
HashCommonBase<K> implements J
@Override
public boolean tryPut(K key, V value) {
+ assert(key != null);
+ assert(value != null);
final var slot = findSlot(key);
if (slot < 0) {
values[~slot] = value;
@@ -97,6 +99,8 @@ public abstract class HashCommonMap<K, V> extends
HashCommonBase<K> implements J
@Override
public void put(K key, V value) {
+ assert(key != null);
+ assert(value != null);
final var slot = findSlot(key);
if (slot < 0) {
values[~slot] = value;
@@ -126,6 +130,7 @@ public abstract class HashCommonMap<K, V> extends
HashCommonBase<K> implements J
final var slot = findSlot(key);
if (slot < 0) return values[~slot];
final var value = absentValueSupplier.get();
+ assert(value != null);
keys[slot] = key;
values[slot] = value;
if (++size > threshold) grow();
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/collection/HashCommonSet.java
b/jena-core/src/main/java/org/apache/jena/mem/collection/HashCommonSet.java
index acdb91a2be..4628e1b700 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/collection/HashCommonSet.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/collection/HashCommonSet.java
@@ -46,6 +46,7 @@ public abstract class HashCommonSet<K> extends
HashCommonBase<K> implements Jena
@Override
public boolean tryAdd(K key) {
+ assert(key != null);
final var slot = findSlot(key);
if (slot < 0) return false;
keys[slot] = key;
@@ -55,6 +56,7 @@ public abstract class HashCommonSet<K> extends
HashCommonBase<K> implements Jena
@Override
public void addUnchecked(K key) {
+ assert(key != null);
final var slot = findSlot(key);
if (slot < 0) return;
keys[slot] = key;
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/collection/JenaMap.java
b/jena-core/src/main/java/org/apache/jena/mem/collection/JenaMap.java
index 6d2423e009..8f92463db6 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/collection/JenaMap.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/collection/JenaMap.java
@@ -30,7 +30,8 @@ import java.util.stream.StreamSupport;
/**
* A map from keys of type {@code K} to values of type {@code V}.
- * Not thread-safe and does not allow {@code null} keys.
+ * Not thread-safe and does not allow {@code null} keys
+ * and does not allow {@code null} values.
*
* @param <K> the type of the keys in the map
* @param <V> the type of the values in the map
@@ -40,8 +41,8 @@ public interface JenaMap<K, V> extends JenaMapSetCommon<K> {
/**
* Try to put a key-value pair into the map. If the key is already
present, the value is updated.
*
- * @param key the key to put
- * @param value the value to put
+ * @param key the key to put. ({@code null} is not allowed)
+ * @param value the value to put. ({@code null} is not allowed)
* @return true if the key-value pair was put into the map, false if the
key was already present
*/
boolean tryPut(K key, V value);
@@ -49,8 +50,8 @@ public interface JenaMap<K, V> extends JenaMapSetCommon<K> {
/**
* Put a key-value pair into the map. If the key is already present, the
value is updated.
*
- * @param key the key to put
- * @param value the value to put
+ * @param key the key to put. ({@code null} is not allowed)
+ * @param value the value to put. ({@code null} is not allowed)
*/
void put(K key, V value);
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/collection/JenaMapIndexed.java
b/jena-core/src/main/java/org/apache/jena/mem/collection/JenaMapIndexed.java
index 67c366d00e..2805568e15 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/collection/JenaMapIndexed.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/collection/JenaMapIndexed.java
@@ -66,8 +66,8 @@ public interface JenaMapIndexed<K, V> extends JenaMap<K, V> {
* If the key is already present, its value is updated and the existing
* index is returned.
*
- * @param key the key to put
- * @param value the value to put
+ * @param key the key to put. ({@code null} is not allowed)
+ * @param value the value to put. ({@code null} is not allowed)
* @return the index of the entry holding {@code key}
*/
int putAndGetIndex(K key, V value);
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSet.java
b/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSet.java
index 03848073f5..a540e34278 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSet.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSet.java
@@ -31,7 +31,7 @@ public interface JenaSet<E> extends JenaMapSetCommon<E> {
/**
* Add the key to the set if it is not already present.
*
- * @param key the key to add
+ * @param key the key to add. ({@code null} is not allowed)
* @return {@code true} if the key was added, {@code false} if it was
already present
*/
boolean tryAdd(E key);
@@ -43,7 +43,7 @@ public interface JenaSet<E> extends JenaMapSetCommon<E> {
* the key is not already in the set; otherwise the set's invariants will
* break (duplicates may be inserted).
*
- * @param key the key to add
+ * @param key the key to add. ({@code null} is not allowed)
*/
void addUnchecked(E key);
}
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSetHashOptimized.java
b/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSetHashOptimized.java
index 0e1d032b35..e812d392c2 100644
---
a/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSetHashOptimized.java
+++
b/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSetHashOptimized.java
@@ -36,8 +36,8 @@ public interface JenaSetHashOptimized<E> extends JenaSet<E> {
* Add an element with the given precomputed hash code if it is not
* already present.
*
- * @param key the element to add
- * @param hashCode {@code key.hashCode()}
+ * @param key the element to add. ({@code null} is not allowed)
+ * @param hashCode {@code key.hashCode()}.
* @return {@code true} if added, {@code false} if already present
*/
boolean tryAdd(E key, int hashCode);
@@ -46,8 +46,8 @@ public interface JenaSetHashOptimized<E> extends JenaSet<E> {
* Add an element with the given precomputed hash code without checking
* whether it is already present. The caller MUST ensure the key is absent.
*
- * @param key the element to add
- * @param hashCode {@code key.hashCode()}
+ * @param key the element to add. ({@code null} is not allowed)
+ * @param hashCode {@code key.hashCode()}. ({@code null} is not allowed)
*/
void addUnchecked(E key, int hashCode);
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSetIndexed.java
b/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSetIndexed.java
index c7c3d2e1dd..07887c8c60 100644
--- a/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSetIndexed.java
+++ b/jena-core/src/main/java/org/apache/jena/mem/collection/JenaSetIndexed.java
@@ -35,7 +35,7 @@ public interface JenaSetIndexed<E> extends
JenaSetHashOptimized<E> {
* is already present, returns a negative value (typically the bitwise
* complement of the existing index).
*
- * @param key the element to add
+ * @param key the element to add. ({@code null} is not allowed)
* @return the index of the inserted element, or a negative value if the
* element was already present
*/
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/spliterator/ArraySpliterator.java
b/jena-core/src/main/java/org/apache/jena/mem/spliterator/ArraySpliterator.java
index a5033c22cd..023adea27a 100644
---
a/jena-core/src/main/java/org/apache/jena/mem/spliterator/ArraySpliterator.java
+++
b/jena-core/src/main/java/org/apache/jena/mem/spliterator/ArraySpliterator.java
@@ -104,6 +104,6 @@ public class ArraySpliterator<E> implements Spliterator<E> {
@Override
public int characteristics() {
- return DISTINCT | SIZED | SUBSIZED | NONNULL | IMMUTABLE;
+ return DISTINCT | SIZED | SUBSIZED | NONNULL ;
}
}
\ No newline at end of file
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/spliterator/ArraySubSpliterator.java
b/jena-core/src/main/java/org/apache/jena/mem/spliterator/ArraySubSpliterator.java
index 638f2bb0c9..2e8e34fce2 100644
---
a/jena-core/src/main/java/org/apache/jena/mem/spliterator/ArraySubSpliterator.java
+++
b/jena-core/src/main/java/org/apache/jena/mem/spliterator/ArraySubSpliterator.java
@@ -109,6 +109,6 @@ public class ArraySubSpliterator<E> implements
Spliterator<E> {
@Override
public int characteristics() {
- return DISTINCT | SIZED | SUBSIZED | NONNULL | IMMUTABLE;
+ return DISTINCT | SIZED | SUBSIZED | NONNULL ;
}
}
\ No newline at end of file
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/spliterator/SparseArraySpliterator.java
b/jena-core/src/main/java/org/apache/jena/mem/spliterator/SparseArraySpliterator.java
index add45739dc..c8250a6464 100644
---
a/jena-core/src/main/java/org/apache/jena/mem/spliterator/SparseArraySpliterator.java
+++
b/jena-core/src/main/java/org/apache/jena/mem/spliterator/SparseArraySpliterator.java
@@ -113,6 +113,6 @@ public class SparseArraySpliterator<E> implements
Spliterator<E> {
@Override
public int characteristics() {
- return DISTINCT | NONNULL | IMMUTABLE;
+ return DISTINCT | NONNULL ;
}
}
diff --git
a/jena-core/src/main/java/org/apache/jena/mem/spliterator/SparseArraySubSpliterator.java
b/jena-core/src/main/java/org/apache/jena/mem/spliterator/SparseArraySubSpliterator.java
index d79242ac78..b7a2f87fa8 100644
---
a/jena-core/src/main/java/org/apache/jena/mem/spliterator/SparseArraySubSpliterator.java
+++
b/jena-core/src/main/java/org/apache/jena/mem/spliterator/SparseArraySubSpliterator.java
@@ -118,6 +118,6 @@ public class SparseArraySubSpliterator<E> implements
Spliterator<E> {
@Override
public int characteristics() {
- return DISTINCT | NONNULL | IMMUTABLE;
+ return DISTINCT | NONNULL ;
}
}
diff --git
a/jena-core/src/test/java/org/apache/jena/mem/collection/AbstractJenaMapNodeTest.java
b/jena-core/src/test/java/org/apache/jena/mem/collection/AbstractJenaMapNodeTest.java
index c3ae6f94a2..4fc8fc6031 100644
---
a/jena-core/src/test/java/org/apache/jena/mem/collection/AbstractJenaMapNodeTest.java
+++
b/jena-core/src/test/java/org/apache/jena/mem/collection/AbstractJenaMapNodeTest.java
@@ -51,7 +51,7 @@ public abstract class AbstractJenaMapNodeTest {
@Test
public void isEmpty() {
assertTrue(sut.isEmpty());
- sut.tryPut(node("s"), null);
+ sut.tryPut(node("s"), "v");
assertFalse(sut.isEmpty());
}
@@ -89,7 +89,7 @@ public abstract class AbstractJenaMapNodeTest {
@Test
public void testTryRemove() {
- sut.put(node("s"), null);
+ sut.put(node("s"), "v");
assertTrue(sut.tryRemove(node("s")));
assertEquals(0, sut.size());
assertFalse(sut.tryRemove(node("s")));
@@ -97,7 +97,7 @@ public abstract class AbstractJenaMapNodeTest {
@Test
public void testRemoveUnchecked() {
- sut.put(node("s"), null);
+ sut.put(node("s"), "v");
sut.removeUnchecked(node("s"));
assertEquals(0, sut.size());
}
@@ -154,7 +154,7 @@ public abstract class AbstractJenaMapNodeTest {
@Test
public void testClear() {
- sut.put(node("s"), null);
+ sut.put(node("s"), "v");
sut.clear();
assertEquals(0, sut.size());
}
@@ -162,7 +162,7 @@ public abstract class AbstractJenaMapNodeTest {
@Test
public void testContainKey() {
assertFalse(sut.containsKey(node("s")));
- sut.put(node("s"), null);
+ sut.put(node("s"), "v");
assertTrue(sut.containsKey(node("s")));
assertFalse(sut.containsKey(node("s2")));
}
@@ -183,34 +183,34 @@ public abstract class AbstractJenaMapNodeTest {
@Test
public void testKeyIteratorNextThrowsConcurrentModificationException() {
- sut.put(node("s"), null);
+ sut.put(node("s"), "v");
var iter = sut.keyIterator();
- sut.put(node("s2"), null);
+ sut.put(node("s2"), "v2");
assertThrows(ConcurrentModificationException.class, iter::next);
}
@Test
public void
testKeySpliteratorAdvanceThrowsConcurrentModificationException() {
- sut.put(node("s"), null);
+ sut.put(node("s"), "v");
var spliterator = sut.keySpliterator();
- sut.put(node("s2"), null);
+ sut.put(node("s2"), "v1");
assertThrows(ConcurrentModificationException.class, () ->
spliterator.tryAdvance(t -> {
}));
}
@Test
public void testValueIteratorNextThrowsConcurrentModificationException() {
- sut.put(node("s"), null);
+ sut.put(node("s"), "v");
var iter = sut.keyIterator();
- sut.put(node("s2"), null);
+ sut.put(node("s2"), "v2");
assertThrows(ConcurrentModificationException.class, iter::next);
}
@Test
public void
testValueSpliteratorAdvanceThrowsConcurrentModificationException() {
- sut.put(node("s"), null);
+ sut.put(node("s"), "v1");
var spliterator = sut.valueSpliterator();
- sut.put(node("s2"), null);
+ sut.put(node("s2"), "v2");
assertThrows(ConcurrentModificationException.class, () ->
spliterator.tryAdvance(t -> {
}));
}
@@ -219,7 +219,7 @@ public abstract class AbstractJenaMapNodeTest {
public void testKeyIterator1() {
final var n0 = node("s");
- sut.put(n0, null);
+ sut.put(n0, "v");
final var iter = sut.keyIterator();
assertThat(iter.toList(),
IsIterableContainingInAnyOrder.containsInAnyOrder(n0));
@@ -241,8 +241,8 @@ public abstract class AbstractJenaMapNodeTest {
final var n0 = node("s");
final var n1 = node("s2");
- sut.put(n0, null);
- sut.put(n1, null);
+ sut.put(n0, "v0");
+ sut.put(n1, "v1");
final var iter = sut.keyIterator();
assertThat(iter.toList(),
IsIterableContainingInAnyOrder.containsInAnyOrder(n0, n1));
@@ -266,9 +266,9 @@ public abstract class AbstractJenaMapNodeTest {
final var n1 = node("s2");
final var n2 = node("s3");
- sut.put(n0, null);
- sut.put(n1, null);
- sut.put(n2, null);
+ sut.put(n0, "v0");
+ sut.put(n1, "v1");
+ sut.put(n2, "v2");
final var iter = sut.keyIterator();
assertThat(iter.toList(),
IsIterableContainingInAnyOrder.containsInAnyOrder(n0, n1, n2));
@@ -304,7 +304,7 @@ public abstract class AbstractJenaMapNodeTest {
public void testKeySpliterator1() {
final var n0 = node("s");
- sut.put(n0, null);
+ sut.put(n0, "v0");
final var spliterator = sut.keySpliterator();
final var list = StreamSupport.stream(spliterator, false).toList();
@@ -325,8 +325,8 @@ public abstract class AbstractJenaMapNodeTest {
final var n0 = node("s");
final var n1 = node("s2");
- sut.put(n0, null);
- sut.put(n1, null);
+ sut.put(n0, "v0");
+ sut.put(n1, "v1");
final var spliterator = sut.keySpliterator();
final var list = StreamSupport.stream(spliterator, false).toList();
@@ -349,9 +349,9 @@ public abstract class AbstractJenaMapNodeTest {
final var n1 = node("s2");
final var n2 = node("s3");
- sut.put(n0, null);
- sut.put(n1, null);
- sut.put(n2, null);
+ sut.put(n0, "v0");
+ sut.put(n1, "v1");
+ sut.put(n2, "v2");
final var spliterator = sut.keySpliterator();
final var list = StreamSupport.stream(spliterator, false).toList();
@@ -385,7 +385,7 @@ public abstract class AbstractJenaMapNodeTest {
public void testKeyStream1() {
final var n0 = node("s");
- sut.put(n0, null);
+ sut.put(n0, "v");
final var stream = sut.keyStream();
assertThat(stream.toList(),
IsIterableContainingInAnyOrder.containsInAnyOrder(n0));
@@ -404,8 +404,8 @@ public abstract class AbstractJenaMapNodeTest {
final var n0 = node("s");
final var n1 = node("s2");
- sut.put(n0, null);
- sut.put(n1, null);
+ sut.put(n0, "v");
+ sut.put(n1, "v2");
final var stream = sut.keyStream();
assertThat(stream.toList(),
IsIterableContainingInAnyOrder.containsInAnyOrder(n0, n1));
@@ -426,9 +426,9 @@ public abstract class AbstractJenaMapNodeTest {
final var n1 = node("s2");
final var n2 = node("s3");
- sut.put(n0, null);
- sut.put(n1, null);
- sut.put(n2, null);
+ sut.put(n0, "v");
+ sut.put(n1, "v2");
+ sut.put(n2, "v3");
final var stream = sut.keyStream();
assertThat(stream.toList(),
IsIterableContainingInAnyOrder.containsInAnyOrder(n0, n1, n2));
@@ -460,7 +460,7 @@ public abstract class AbstractJenaMapNodeTest {
public void testKeyStreamParallel1() {
final var n0 = node("s");
- sut.put(n0, null);
+ sut.put(n0, "v");
final var stream = sut.keyStreamParallel();
assertThat(stream.toList(),
IsIterableContainingInAnyOrder.containsInAnyOrder(n0));
@@ -479,8 +479,8 @@ public abstract class AbstractJenaMapNodeTest {
final var n0 = node("s");
final var n1 = node("s2");
- sut.put(n0, null);
- sut.put(n1, null);
+ sut.put(n0, "v");
+ sut.put(n1, "v2");
final var stream = sut.keyStreamParallel();
assertThat(stream.toList(),
IsIterableContainingInAnyOrder.containsInAnyOrder(n0, n1));
@@ -501,9 +501,9 @@ public abstract class AbstractJenaMapNodeTest {
final var n1 = node("s2");
final var n2 = node("s3");
- sut.put(n0, null);
- sut.put(n1, null);
- sut.put(n2, null);
+ sut.put(n0, "v");
+ sut.put(n1, "v1");
+ sut.put(n2, "v2");
final var stream = sut.keyStreamParallel();
assertThat(stream.toList(),
IsIterableContainingInAnyOrder.containsInAnyOrder(n0, n1, n2));
@@ -522,11 +522,11 @@ public abstract class AbstractJenaMapNodeTest {
@Test
public void testSize() {
assertEquals(0, sut.size());
- sut.put(node("s"), null);
+ sut.put(node("s"), "v");
assertEquals(1, sut.size());
- sut.put(node("s2"), null);
+ sut.put(node("s2"), "v2");
assertEquals(2, sut.size());
- sut.put(node("s3"), null);
+ sut.put(node("s3"), "v3");
assertEquals(3, sut.size());
}
@@ -535,7 +535,7 @@ public abstract class AbstractJenaMapNodeTest {
assertFalse(sut.anyMatch(t -> true));
assertFalse(sut.anyMatch(t -> false));
- sut.put(node("s"), null);
+ sut.put(node("s"), "v");
assertTrue(sut.anyMatch(t -> true));
assertFalse(sut.anyMatch(t -> false));
}
@@ -546,9 +546,9 @@ public abstract class AbstractJenaMapNodeTest {
final var n1 = node("s2");
final var n2 = node("s3");
- sut.put(n0, null);
- sut.put(n1, null);
- sut.put(n2, null);
+ sut.put(n0, "v");
+ sut.put(n1, "v1");
+ sut.put(n2, "v2");
final var list = new ArrayList<Node>();
sut.anyMatch(n -> {
@@ -561,7 +561,7 @@ public abstract class AbstractJenaMapNodeTest {
@Test
public void put1000Nodes() {
for (int i = 0; i < 1000; i++) {
- sut.put(node("s" + i), null);
+ sut.put(node("s" + i), "v" + i);
}
assertEquals(1000, sut.size());
}
@@ -569,7 +569,7 @@ public abstract class AbstractJenaMapNodeTest {
@Test
public void tryPut1000Nodes() {
for (int i = 0; i < 1000; i++) {
- sut.tryPut(node("s" + i), null);
+ sut.tryPut(node("s" + i), "v" + i);
}
assertEquals(1000, sut.size());
}
@@ -587,7 +587,7 @@ public abstract class AbstractJenaMapNodeTest {
final var nodes = new ArrayList<Node>();
for (int i = 0; i < 1000; i++) {
final var n = node("s" + i);
- sut.put(n, null);
+ sut.put(n, "v" + i);
nodes.add(n);
}
assertEquals(1000, sut.size());
@@ -603,7 +603,7 @@ public abstract class AbstractJenaMapNodeTest {
final var nodes = new ArrayList<Node>();
for (int i = 0; i < 1000; i++) {
final var n = node("s" + i);
- sut.tryPut(n, null);
+ sut.tryPut(n, "v" + i);
nodes.add(n);
}
assertEquals(1000, sut.size());
diff --git
a/jena-core/src/test/java/org/apache/jena/mem/collection/FastHashMapTest2.java
b/jena-core/src/test/java/org/apache/jena/mem/collection/FastHashMapTest2.java
index d932ce2320..3e1983278a 100644
---
a/jena-core/src/test/java/org/apache/jena/mem/collection/FastHashMapTest2.java
+++
b/jena-core/src/test/java/org/apache/jena/mem/collection/FastHashMapTest2.java
@@ -35,11 +35,11 @@ public class FastHashMapTest2 {
@Test
public void testConstructWithInitialSizeAndAdd() {
var sut = new FastNodeHashMap(3);
- sut.put(node("s"), null);
- sut.put(node("s1"), null);
- sut.put(node("s2"), null);
- sut.put(node("s3"), null);
- sut.put(node("s4"), null);
+ sut.put(node("s"), "v");
+ sut.put(node("s1"), "v1");
+ sut.put(node("s2"), "v2");
+ sut.put(node("s3"), "v3");
+ sut.put(node("s4"), "v4");
assertEquals(5, sut.size());
}
diff --git
a/jena-core/src/test/java/org/apache/jena/mem/spliterator/ArraySpliteratorTest.java
b/jena-core/src/test/java/org/apache/jena/mem/spliterator/ArraySpliteratorTest.java
index ae2afc7fd4..f9d2d4a019 100644
---
a/jena-core/src/test/java/org/apache/jena/mem/spliterator/ArraySpliteratorTest.java
+++
b/jena-core/src/test/java/org/apache/jena/mem/spliterator/ArraySpliteratorTest.java
@@ -233,7 +233,7 @@ public class ArraySpliteratorTest {
public void characteristics() {
Integer[] array = new Integer[]{1, 2, 3, 4, 5};
Spliterator<Integer> spliterator = new ArraySpliterator<>(array,
dummySetForConcurrencyCheck);
- assertEquals(DISTINCT | SIZED | SUBSIZED | NONNULL | IMMUTABLE,
spliterator.characteristics());
+ assertEquals(DISTINCT | SIZED | SUBSIZED | NONNULL,
spliterator.characteristics());
}
@Test
diff --git
a/jena-core/src/test/java/org/apache/jena/mem/spliterator/ArraySubSpliteratorTest.java
b/jena-core/src/test/java/org/apache/jena/mem/spliterator/ArraySubSpliteratorTest.java
index 696b6be7be..0f7b33f881 100644
---
a/jena-core/src/test/java/org/apache/jena/mem/spliterator/ArraySubSpliteratorTest.java
+++
b/jena-core/src/test/java/org/apache/jena/mem/spliterator/ArraySubSpliteratorTest.java
@@ -232,7 +232,7 @@ public class ArraySubSpliteratorTest {
public void characteristics() {
Integer[] array = new Integer[]{1, 2, 3, 4, 5};
Spliterator<Integer> spliterator = new ArraySubSpliterator<>(array,
dummySetForConcurrencyCheck);
- assertEquals(DISTINCT | SIZED | SUBSIZED | NONNULL | IMMUTABLE,
spliterator.characteristics());
+ assertEquals(DISTINCT | SIZED | SUBSIZED | NONNULL,
spliterator.characteristics());
}
@Test
diff --git
a/jena-core/src/test/java/org/apache/jena/mem/spliterator/SparseArraySpliteratorTest.java
b/jena-core/src/test/java/org/apache/jena/mem/spliterator/SparseArraySpliteratorTest.java
index bef1779184..1fad90d737 100644
---
a/jena-core/src/test/java/org/apache/jena/mem/spliterator/SparseArraySpliteratorTest.java
+++
b/jena-core/src/test/java/org/apache/jena/mem/spliterator/SparseArraySpliteratorTest.java
@@ -441,7 +441,7 @@ public class SparseArraySpliteratorTest {
public void characteristics() {
Integer[] array = new Integer[]{1, 2, 3, 4, 5};
Spliterator<Integer> spliterator = new SparseArraySpliterator<>(array,
dummySetForConcurrencyCheck);
- assertEquals(DISTINCT | NONNULL | IMMUTABLE,
spliterator.characteristics());
+ assertEquals(DISTINCT | NONNULL, spliterator.characteristics());
}
@Test
diff --git
a/jena-core/src/test/java/org/apache/jena/mem/spliterator/SparseArraySubSpliteratorTest.java
b/jena-core/src/test/java/org/apache/jena/mem/spliterator/SparseArraySubSpliteratorTest.java
index 8b83aeb373..46940c97c1 100644
---
a/jena-core/src/test/java/org/apache/jena/mem/spliterator/SparseArraySubSpliteratorTest.java
+++
b/jena-core/src/test/java/org/apache/jena/mem/spliterator/SparseArraySubSpliteratorTest.java
@@ -444,7 +444,7 @@ public class SparseArraySubSpliteratorTest {
public void characteristics() {
Integer[] array = new Integer[]{1, 2, 3, 4, 5};
Spliterator<Integer> spliterator = new
SparseArraySubSpliterator<>(array, dummySetForConcurrencyCheck);
- assertEquals(DISTINCT | NONNULL | IMMUTABLE,
spliterator.characteristics());
+ assertEquals(DISTINCT | NONNULL, spliterator.characteristics());
}
@Test