You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/03/31 19:11:25 UTC

[causeway] branch master updated: CAUSEWAY-3401: NPE fixes for prev. commit

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/causeway.git


The following commit(s) were added to refs/heads/master by this push:
     new 252e985e65 CAUSEWAY-3401: NPE fixes for prev. commit
252e985e65 is described below

commit 252e985e65a6c01588144e738805aa0aadb355a8
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Mar 31 21:11:17 2023 +0200

    CAUSEWAY-3401: NPE fixes for prev. commit
---
 .../apache/causeway/core/metamodel/consent/Consent.java  |  5 +++++
 .../facets/members/disabled/DisabledFacetAbstract.java   | 16 ++++++----------
 .../disabled/DisabledFacetForPropertyAnnotation.java     |  6 ++++--
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/consent/Consent.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/consent/Consent.java
index 1328d4b381..48f6e5f7e9 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/consent/Consent.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/consent/Consent.java
@@ -21,6 +21,9 @@ package org.apache.causeway.core.metamodel.consent;
 import java.io.Serializable;
 import java.util.Optional;
 
+import org.apache.causeway.commons.internal.assertions._Assert;
+import org.apache.causeway.commons.internal.base._Strings;
+
 import lombok.NonNull;
 import lombok.experimental.Accessors;
 
@@ -34,9 +37,11 @@ public interface Consent {
         private final boolean inferred;
         private final @NonNull String string;
         public static VetoReason inferred(final String reason) {
+            _Assert.assertTrue(_Strings.isNotEmpty(reason));
             return new VetoReason(true, reason);
         }
         public static VetoReason explicit(final String reason) {
+            _Assert.assertTrue(_Strings.isNotEmpty(reason));
             return new VetoReason(false, reason);
         }
         public Optional<VetoReason> toOptional() {
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
index af8f28babc..7e8aaae562 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
@@ -21,8 +21,6 @@ package org.apache.causeway.core.metamodel.facets.members.disabled;
 import java.util.Optional;
 import java.util.function.BiConsumer;
 
-import org.springframework.lang.Nullable;
-
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.core.metamodel.consent.Consent.VetoReason;
 import org.apache.causeway.core.metamodel.facetapi.Facet;
@@ -49,7 +47,7 @@ implements DisabledFacet {
      * when either sub-classes override {@link #disabledReason(ManagedObject)}
      * or the semantics is inverted (ENABLED)
      */
-    private final @Nullable VetoReason reason;
+    private final @NonNull VetoReason reason;
 
     protected DisabledFacetAbstract(
             final Where where,
@@ -71,18 +69,16 @@ implements DisabledFacet {
 
     @Override
     public Optional<VetoReason> disabledReason(final ManagedObject targetAdapter) {
-        if(getSemantics().isEnabled()) {
-            return Optional.empty();
-        }
-        return Optional.of(reason!=null
-                ? reason
-                : ALWAYS_DISABLED_REASON);
+        // handle inverted semantics
+        return getSemantics().isEnabled()
+            ? Optional.empty()
+            : Optional.of(reason);
     }
 
     @Override
     public Optional<VetoReason> disables(final UsabilityContext ic) {
         if(getSemantics().isEnabled()) {
-            return null;
+            return Optional.empty();
         }
         final ManagedObject target = ic.getTarget();
         final Optional<VetoReason> disabledReason = disabledReason(target);
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
index d7cf16c5d4..a5f3093074 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
@@ -49,8 +49,10 @@ extends DisabledFacetAbstract {
                 return null;
 
             case DISABLED:
-                final String reasonString = _Strings.nullToEmpty(property.editingDisabledReason());
-                final VetoReason disabledReason = VetoReason.explicit(reasonString);
+                 final VetoReason disabledReason = _Strings.isNullOrEmpty(property.editingDisabledReason())
+                     ? ALWAYS_DISABLED_REASON
+                     : VetoReason.explicit(property.editingDisabledReason());
+
                 return new DisabledFacetForPropertyAnnotation(disabledReason, holder);
             case ENABLED:
                 return new DisabledFacetForPropertyAnnotationInvertedSemantics(holder);