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/01/18 09:27:16 UTC

[isis] branch master updated: ISIS-2223: Mitigate Reliability and Security Issues as detected by Code Quality Analysis

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 a461219  ISIS-2223: Mitigate Reliability and Security Issues as detected by Code Quality Analysis
a461219 is described below

commit a46121937d183e4aeb191db3dff08a01f687244a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Jan 18 10:27:01 2020 +0100

    ISIS-2223: Mitigate Reliability and Security Issues as detected by Code
    Quality Analysis
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-2223
---
 .../org/apache/isis/core/commons/collections/Can.java     | 15 +++++++++++++++
 .../isis/core/commons/collections/Can_Singleton.java      |  3 ++-
 ...ionParameterDefaultsFacetFromAssociatedCollection.java |  2 +-
 3 files changed, 18 insertions(+), 2 deletions(-)

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 9ea69a4..687df33 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
@@ -35,6 +35,7 @@ import javax.annotation.Nullable;
 import javax.enterprise.inject.Instance;
 
 import org.apache.isis.core.commons.internal.base._NullSafe;
+import org.apache.isis.core.commons.internal.exceptions._Exceptions;
 
 import static org.apache.isis.core.commons.internal.base._With.requires;
 
@@ -99,9 +100,23 @@ public interface Can<T> extends Iterable<T> {
     Optional<T> getFirst();
 
     /**
+     * Shortcut for {@code getFirst().orElseThrow(_Exceptions::unexpectedCodeReach)}
+     */
+    default T getFirstOrFail() {
+        return getFirst().orElseThrow(_Exceptions::unexpectedCodeReach);
+    }
+
+    /**
      * @return this Can's single element or an empty Optional if this Can has any cardinality other than ONE 
      */
     Optional<T> getSingleton();
+    
+    /**
+     * Shortcut for {@code getSingleton().orElseThrow(_Exceptions::unexpectedCodeReach)}
+     */
+    default T getSingletonOrFail() {
+        return getSingleton().orElseThrow(_Exceptions::unexpectedCodeReach);
+    }
 
     // -- FACTORIES
 
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 57a1a23..bd694d6 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
@@ -29,6 +29,7 @@ import java.util.function.Supplier;
 import java.util.stream.Stream;
 
 import org.apache.isis.core.commons.internal.base._Casts;
+import org.apache.isis.core.commons.internal.exceptions._Exceptions;
 
 import lombok.Getter;
 import lombok.NonNull;
@@ -84,7 +85,7 @@ final class Can_Singleton<T> implements Can<T> {
             return this;
         }
         if(other.isCardinalityOne()) {
-            return add(other.getSingleton().get());
+            return add(other.getSingleton().orElseThrow(_Exceptions::unexpectedCodeReach));
         }
         val newElements = new ArrayList<T>(other.size()+1);
         newElements.add(element);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java
index 67820c5..5260a45 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java
@@ -43,7 +43,7 @@ public class ActionParameterDefaultsFacetFromAssociatedCollection extends Action
         } catch (Exception e) {
             throw new ApplicationException(e);
         } finally {
-            _selectedPojos.set(Can.empty());
+            _selectedPojos.remove();
         }
     }