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 2021/07/22 19:27:41 UTC
[isis] branch master updated: ISIS-2818: Add overrides for
XxxDomainEvent for hide/disable/invalidate to evaluate a supplier
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 eafed8d ISIS-2818: Add overrides for XxxDomainEvent for hide/disable/invalidate to evaluate a supplier
eafed8d is described below
commit eafed8d4b7874a5f81dfda0dbf7eeab9566137cb
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jul 22 21:27:27 2021 +0200
ISIS-2818: Add overrides for XxxDomainEvent for hide/disable/invalidate
to evaluate a supplier
---
.../applib/events/domain/AbstractDomainEvent.java | 80 ++++++++++++++++++++--
1 file changed, 76 insertions(+), 4 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java
index da37c89..34fd001 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java
@@ -20,6 +20,9 @@ package org.apache.isis.applib.events.domain;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
+import java.util.function.BooleanSupplier;
+import java.util.function.Supplier;
import javax.annotation.Nullable;
@@ -32,6 +35,7 @@ import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import lombok.Getter;
+import lombok.NonNull;
import lombok.val;
/**
@@ -179,7 +183,7 @@ public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
/**
* Not API, set by the framework.
*/
- public void setEventPhase(Phase phase) {
+ public void setEventPhase(final Phase phase) {
this.eventPhase = phase;
}
@@ -197,6 +201,8 @@ public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
this.identifier = identifier;
}
+ // -- HIDING
+
/**
* Used by the framework to determine if the member should be hidden (not
* rendered).
@@ -214,6 +220,28 @@ public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
}
/**
+ * Same as ... {@code if(condition) hide(); }
+ * @see #hide()
+ */
+ public void hideIf(final boolean condition) {
+ if(condition) {
+ hide();
+ }
+ }
+
+ /**
+ * Same as ... {@code if(shouldHide.getAsBoolean()) hide(); }
+ * @see #hide()
+ */
+ public void hideIf(final @NonNull BooleanSupplier shouldHide) {
+ if(shouldHide.getAsBoolean()) {
+ hide();
+ }
+ }
+
+ // -- DISABLING
+
+ /**
* If {@link #isDisabled() disabled}, then either this method returns
* non-null or {@link #getDisabledReasonTranslatable()} will.
*/
@@ -230,7 +258,6 @@ public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
return disabledReason != null || disabledReasonTranslatable != null;
}
-
/**
* API for subscribers to disable the member, specifying the reason why.
*
@@ -252,6 +279,27 @@ public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
this.disabledReasonTranslatable = reason;
}
+ /**
+ * Same as ... {@code if(reasonSupplier.get()!=null) disable(reasonSupplier.get()); }
+ * @see #disable(String)
+ */
+ public void disableIfReason(final @NonNull Supplier<String> reasonSupplier) {
+ Optional
+ .ofNullable(reasonSupplier.get())
+ .ifPresent(this::disable);
+ }
+
+ /**
+ * Same as ... {@code if(reasonSupplier.get()!=null) disable(reasonSupplier.get()); }
+ * @see #disable(TranslatableString)
+ */
+ public void disableIfTranslatableReason(final @NonNull Supplier<TranslatableString> reasonSupplier) {
+ Optional
+ .ofNullable(reasonSupplier.get())
+ .ifPresent(this::disable);
+ }
+
+ // -- INVALIDATING
/**
* Used by the framework to determine whether the interaction is invalid
@@ -304,6 +352,28 @@ public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
}
/**
+ * Same as ... {@code if(reasonSupplier.get()!=null) invalidate(reasonSupplier.get()); }
+ * @see #invalidate(String)
+ */
+ public void invalidateIfReason(final @NonNull Supplier<String> reasonSupplier) {
+ Optional
+ .ofNullable(reasonSupplier.get())
+ .ifPresent(this::invalidate);
+ }
+
+ /**
+ * Same as ... {@code if(reasonSupplier.get()!=null) invalidate(reasonSupplier.get()); }
+ * @see #disable(TranslatableString)
+ */
+ public void invalidateIfTranslatableReason(final @NonNull Supplier<TranslatableString> reasonSupplier) {
+ Optional
+ .ofNullable(reasonSupplier.get())
+ .ifPresent(this::invalidate);
+ }
+
+ // -- VETOING
+
+ /**
* Use instead of {@link #hide()}, {@link #disable(String)} and
* {@link #invalidate(String)}; just delegates to
* appropriate vetoing method based upon the {@link #getEventPhase() phase}.
@@ -376,6 +446,8 @@ public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
}
}
+ // -- USER DATA
+
/**
* Provides a mechanism to pass data to the next {@link #getEventPhase() phase}.
*/
@@ -384,7 +456,7 @@ public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
/**
* Obtain user-data, as set by a previous {@link #getEventPhase() phase}.
*/
- public Object get(Object key) {
+ public Object get(final Object key) {
return userData.get(key);
}
@@ -395,7 +467,7 @@ public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
*
* Set user-data, for the use of a subsequent {@link #getEventPhase() phase}.
*/
- public void put(Object key, Object value) {
+ public void put(final Object key, final Object value) {
userData.put(key, value);
}