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() {