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/05/10 09:47:41 UTC
[isis] branch master updated: ISIS-2648: fixes inconsistent
WhereValueFacet alias handling
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 0808de4 ISIS-2648: fixes inconsistent WhereValueFacet alias handling
0808de4 is described below
commit 0808de4e0715f9c1a0ae7ccfa00249c09e300c9f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon May 10 11:47:11 2021 +0200
ISIS-2648: fixes inconsistent WhereValueFacet alias handling
Where.EVERYWHERE and Where.ANYWHERE must be treated equally
---
.../org/apache/isis/applib/annotation/Where.java | 25 +++++++++++++++-------
.../core/metamodel/facets/WhereValueFacet.java | 23 ++++++++++++++++++++
.../metamodel/facets/WhereValueFacetAbstract.java | 13 ++++++-----
.../metamodel/facets/all/hide/HiddenFacet.java | 14 ++----------
.../facets/members/disabled/DisabledFacet.java | 8 +++++++
.../ApplicationFeatureRepositoryDefault.java | 6 +-----
.../specloader/specimpl/ObjectMemberAbstract.java | 9 ++++----
.../specimpl/OneToManyAssociationMixedIn.java | 3 +--
.../specimpl/OneToOneAssociationMixedIn.java | 3 +--
.../components/entity/fieldset/PropertyGroup.java | 5 +++--
10 files changed, 68 insertions(+), 41 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/Where.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/Where.java
index cbd8085..3db35c9 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Where.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/Where.java
@@ -27,9 +27,9 @@ import org.apache.isis.applib.util.Enums;
* Represents the location in the user interface where a class member is to be rendered.
*
* <p>
- * Used to control visibility (eg using the {@link Property#hidden()} annotation) and
- * enablement (eg using the {@link Property#editing()} annotation) in different regions
- * of the user interface.
+ * Used to control visibility (eg using the {@link Property#hidden()} annotation) and
+ * enablement (eg using the {@link Property#editing()} annotation) in different regions
+ * of the user interface.
*
* <p>
* The application programmer may use any of the values of this enum. Some represent
@@ -39,9 +39,9 @@ import org.apache.isis.applib.util.Enums;
* @see Action
* @see Collection
* @see Property
- *
+ *
* @since 1.x {@index}
- *
+ *
* @implNote This enum is also used internally within the framework. When rendering an element,
* the framework developer should only use those values that represent concrete locations.
*/
@@ -184,12 +184,19 @@ public enum Where {
return Enums.getFriendlyNameOf(this);
}
+ public boolean isAlways() {
+ return this == EVERYWHERE
+ || this == ANYWHERE;
+ }
+
public boolean inParentedTable() {
- return this == PARENTED_TABLES || this == ALL_TABLES;
+ return this == PARENTED_TABLES
+ || this == ALL_TABLES;
}
public boolean inStandaloneTable() {
- return this == STANDALONE_TABLES || this == ALL_TABLES;
+ return this == STANDALONE_TABLES
+ || this == ALL_TABLES;
}
/**
@@ -199,7 +206,9 @@ public enum Where {
* For example, {@link #ALL_TABLES} includes {@link #STANDALONE_TABLES}; {@link #ANYWHERE} includes all others.
*/
public boolean includes(Where context) {
- return context == this;
+ return context == this
+ || (this.isAlways()
+ && context.isAlways());
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacet.java
index 495ac99..2bd6eb4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacet.java
@@ -19,11 +19,34 @@
package org.apache.isis.core.metamodel.facets;
+import java.util.Optional;
+
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+import lombok.NonNull;
public interface WhereValueFacet extends Facet {
public Where where();
+ // -- UTILS
+
+ static Optional<Where> where(
+ final @NonNull FacetHolder facetHolder,
+ final @NonNull Class<? extends WhereValueFacet> facetType) {
+ return facetHolder.lookupFacet(facetType)
+ .map(WhereValueFacet::where);
+ }
+
+ // -- PREDICATES
+
+ static boolean isAlways(final @NonNull FacetHolder facetHolder,
+ final @NonNull Class<? extends WhereValueFacet> facetType) {
+ return WhereValueFacet.where(facetHolder, facetType)
+ .map(Where::isAlways)
+ .orElse(false);
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacetAbstract.java
index 62ab646..b508832 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacetAbstract.java
@@ -26,14 +26,17 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import lombok.NonNull;
+
public abstract class WhereValueFacetAbstract extends FacetAbstract implements WhereValueFacet {
- private final Where where;
+
+ private final @NonNull Where where;
public WhereValueFacetAbstract(
- final Class<? extends Facet> facetType,
- final FacetHolder holder,
- final Where where) {
-
+ final @NonNull Class<? extends Facet> facetType,
+ final @NonNull FacetHolder holder,
+ final @NonNull Where where) {
+
super(facetType, holder, Derivation.NOT_DERIVED);
this.where = where;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/hide/HiddenFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/hide/HiddenFacet.java
index 7892ff4..bdd423a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/hide/HiddenFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/hide/HiddenFacet.java
@@ -19,9 +19,6 @@
package org.apache.isis.core.metamodel.facets.all.hide;
-import java.util.Optional;
-
-import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.WhereValueFacet;
import org.apache.isis.core.metamodel.interactions.HidingInteractionAdvisor;
@@ -33,17 +30,10 @@ import lombok.NonNull;
*/
public interface HiddenFacet extends WhereValueFacet, HidingInteractionAdvisor {
- // -- UTILS
+ // -- PREDICATES
static boolean isAlwaysHidden(final @NonNull FacetHolder facetHolder) {
- return hiddenWhere(facetHolder)
- .map(Where.ANYWHERE::equals)
- .orElse(false);
- }
-
- static Optional<Where> hiddenWhere(final @NonNull FacetHolder facetHolder) {
- return facetHolder.lookupFacet(HiddenFacet.class)
- .map(HiddenFacet::where);
+ return WhereValueFacet.isAlways(facetHolder, HiddenFacet.class);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
index 8d35665..c3321c0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
@@ -25,6 +25,8 @@ import org.apache.isis.core.metamodel.facets.WhereValueFacet;
import org.apache.isis.core.metamodel.interactions.DisablingInteractionAdvisor;
import org.apache.isis.core.metamodel.spec.ManagedObject;
+import lombok.NonNull;
+
/**
* Disable a property, collection or action.
*
@@ -51,4 +53,10 @@ public interface DisabledFacet extends WhereValueFacet, DisablingInteractionAdvi
* attached is <i>not</i> mandatory.
*/
public boolean isInvertedSemantics();
+
+ // -- PREDICATES
+
+ static boolean isAlwaysDisabled(final @NonNull FacetHolder facetHolder) {
+ return WhereValueFacet.isAlways(facetHolder, DisabledFacet.class);
+ }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index 50bc768..9cfa93b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -37,7 +37,6 @@ import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.appfeat.ApplicationFeature;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
@@ -352,10 +351,7 @@ implements ApplicationFeatureRepository {
}
protected boolean isHidden(final ObjectSpecification spec) {
- final HiddenFacet facet = spec.getFacet(HiddenFacet.class);
- return facet != null &&
- !facet.isFallback() &&
- (facet.where() == Where.EVERYWHERE || facet.where() == Where.ANYWHERE);
+ return HiddenFacet.isAlwaysHidden(spec);
}
protected boolean isBuiltIn(final ObjectSpecification spec) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
index a067243..87021ce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
@@ -165,11 +165,10 @@ implements ObjectMember, HasMetaModelContext, HasFacetHolder {
@Override
public boolean isAlwaysHidden() {
- final HiddenFacet facet = getFacet(HiddenFacet.class);
- return facet != null &&
- !facet.isFallback() &&
- (facet.where() == Where.EVERYWHERE || facet.where() == Where.ANYWHERE)
- ;
+
+ return HiddenFacet.isAlwaysHidden(getFacetHolder());
+
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
index 41770cc..bd9a09c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
@@ -19,7 +19,6 @@
package org.apache.isis.core.metamodel.specloader.specimpl;
import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
@@ -139,7 +138,7 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
private DisabledFacet disabledFacet() {
final DisabledFacet originalFacet = facetHolder.getFacet(DisabledFacet.class);
if( originalFacet != null &&
- originalFacet.where() == Where.ANYWHERE) {
+ originalFacet.where().isAlways()) {
return originalFacet;
}
// ensure that the contributed association is always disabled
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
index 317983b..4289a76 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
@@ -19,7 +19,6 @@
package org.apache.isis.core.metamodel.specloader.specimpl;
import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
@@ -118,7 +117,7 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
private DisabledFacet disabledFacet() {
final DisabledFacet originalFacet = facetHolder.getFacet(DisabledFacet.class);
if( originalFacet != null &&
- originalFacet.where() == Where.ANYWHERE) {
+ originalFacet.where().isAlways()) {
return originalFacet;
}
// ensure that the contributed association is always disabled
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
index 49615b8..1c95aac 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
@@ -180,9 +180,10 @@ public class PropertyGroup extends PanelAbstract<ManagedObject, EntityModel> imp
.filter(_NullSafe::isPresent)
.filter(objectAssociation -> {
val hiddenFacet = objectAssociation.getFacet(HiddenFacet.class);
- if(hiddenFacet != null && !hiddenFacet.isFallback()) {
+ if(hiddenFacet != null) {
// static invisible.
- if(hiddenFacet.where() == Where.EVERYWHERE || hiddenFacet.where() == Where.OBJECT_FORMS) {
+ if(hiddenFacet.where().isAlways()
+ || hiddenFacet.where() == Where.OBJECT_FORMS) {
return false;
}
}