You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/05/06 08:08:53 UTC
[isis] branch master updated: ISIS-2311: add predicate
Can.contains(T)
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 33cec79 ISIS-2311: add predicate Can.contains(T)
33cec79 is described below
commit 33cec795ef8471da3ac1b8f1f105487f19a6701e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed May 6 10:08:37 2020 +0200
ISIS-2311: add predicate Can.contains(T)
---
.../main/java/org/apache/isis/core/commons/collections/Can.java | 9 +++++++++
.../java/org/apache/isis/core/commons/collections/Can_Empty.java | 7 +++++++
.../org/apache/isis/core/commons/collections/Can_Multiple.java | 8 ++++++++
.../org/apache/isis/core/commons/collections/Can_Singleton.java | 6 ++++++
4 files changed, 30 insertions(+)
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can.java b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can.java
index 7a341bc..8d08b0b 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.NoSuchElementException;
+import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -121,6 +122,12 @@ public interface Can<T> extends Iterable<T>, Serializable {
default T getSingletonOrFail() {
return getSingleton().orElseThrow(_Exceptions::noSuchElement);
}
+
+ /**
+ * @return whether this Can contains given {@code element}, that is, at least one contained element
+ * passes the {@link Objects#equals(Object, Object)} test with respect to the given element.
+ */
+ boolean contains(T element);
// -- FACTORIES
@@ -539,5 +546,7 @@ public interface Can<T> extends Iterable<T>, Serializable {
* @return a non-null array, containing the elements of this Can
*/
T[] toArray(Class<T> elementType);
+
+
}
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Empty.java b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Empty.java
index c813dc9..a17feca 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Empty.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Empty.java
@@ -66,6 +66,11 @@ final class Can_Empty<T> implements Can<T> {
public Optional<T> get(int elementIndex) {
return Optional.empty();
}
+
+ @Override
+ public boolean contains(T element) {
+ return false;
+ }
@Override
public int size() {
@@ -137,4 +142,6 @@ final class Can_Empty<T> implements Can<T> {
return array;
}
+
+
}
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Multiple.java b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Multiple.java
index 7439c4a..71aee59 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Multiple.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Multiple.java
@@ -67,6 +67,14 @@ final class Can_Multiple<T> implements Can<T> {
}
@Override
+ public boolean contains(T element) {
+ if(element==null) {
+ return false; // an optimization: Can's dont't contain null
+ }
+ return elements.contains(element);
+ }
+
+ @Override
public Optional<T> get(int elementIndex) {
// we do an index out of bounds check ourselves, in order to prevent any stack-traces,
// that pollute the heap
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Singleton.java b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Singleton.java
index 68911bc..2a41fbe 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Singleton.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Singleton.java
@@ -24,6 +24,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
import java.util.function.Supplier;
import java.util.stream.Stream;
@@ -70,6 +71,11 @@ final class Can_Singleton<T> implements Can<T> {
public int size() {
return 1;
}
+
+ @Override
+ public boolean contains(T element) {
+ return Objects.equals(this.element, element);
+ }
@Override
public Iterator<T> iterator() {