This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch 3752-appfeat.filter.spi in repository https://gitbox.apache.org/repos/asf/causeway.git
commit db9e465ae9a6d6a34f5d57fd07d4b66dcc7c0ab0 Author: andi-huber <[email protected]> AuthorDate: Thu Nov 27 11:03:19 2025 +0100 CAUSEWAY-3752: flattens HiddenObjectFacetViaMethod --- .../metamodel/facets/all/hide/HiddenFacet.java | 22 --------- .../facets/members/hidden/HiddenFacetAbstract.java | 3 +- .../facets/object/hidden/HiddenInstanceFacet.java | 3 +- .../facets/object/hidden/HiddenObjectFacet.java | 3 +- .../object/hidden/HiddenObjectFacetAbstract.java | 47 ------------------ .../facets/object/hidden/HiddenTypeFacet.java | 4 +- .../hidden/HiddenTypeFacetFromAuthorization.java | 11 +---- .../hidden/method/HiddenObjectFacetViaMethod.java | 56 +++++++++++----------- 8 files changed, 37 insertions(+), 112 deletions(-) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/hide/HiddenFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/hide/HiddenFacet.java index ce145305973..f73cd0c2d96 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/hide/HiddenFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/hide/HiddenFacet.java @@ -30,28 +30,6 @@ public interface HiddenFacet extends WhereValueFacet, HidingInteractionAdvisor { - public enum Semantics { - - /** regular semantics */ - HIDDEN, - - /** inverted semantics */ - SHOWN; - - public boolean isHidden() { - return this == HIDDEN; - } - - public boolean isShown() { - return this == SHOWN; - } - } - - // default semantics unless inverted - default Semantics getSemantics() { - return Semantics.HIDDEN; - } - // -- PREDICATES static boolean isAlwaysHidden(final @NonNull FacetHolder facetHolder) { diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java index c3a0fc53ece..64cd86ebedc 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java @@ -55,7 +55,7 @@ private HiddenFacetAbstract(final HiddenFacetAbstract toplevelFacet) { } @Override - public String hides(final VisibilityContext ic) { + public final String hides(final VisibilityContext ic) { return hiddenReason(ic.target(), ic.where()); } @@ -68,7 +68,6 @@ public String hides(final VisibilityContext ic) { @Override public final void visitAttributes(final BiConsumer<String, Object> visitor) { super.visitAttributes(visitor); - visitor.accept("semantics", getSemantics()); } } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenInstanceFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenInstanceFacet.java index 2243cb6948c..d6deefe0265 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenInstanceFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenInstanceFacet.java @@ -18,7 +18,6 @@ */ package org.apache.causeway.core.metamodel.facets.object.hidden; -import org.apache.causeway.core.metamodel.facetapi.Facet; import org.apache.causeway.core.metamodel.facets.all.hide.HiddenFacet; import org.apache.causeway.core.metamodel.interactions.HidingInteractionAdvisor; @@ -38,6 +37,6 @@ * @apiNote An unification attempt on HiddenTypeFacet and HiddenObjectFacet into a single, * failed, because both facets must co-exist, where each has veto power (not one overruling the other). */ -public interface HiddenInstanceFacet extends Facet, HidingInteractionAdvisor { +public interface HiddenInstanceFacet extends HidingInteractionAdvisor { } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenObjectFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenObjectFacet.java index 217a021e1b7..a8a72f838fb 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenObjectFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenObjectFacet.java @@ -18,11 +18,12 @@ */ package org.apache.causeway.core.metamodel.facets.object.hidden; +import org.apache.causeway.core.metamodel.facetapi.Facet; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.ObjectMember; -public interface HiddenObjectFacet extends HiddenInstanceFacet { +public interface HiddenObjectFacet extends Facet, HiddenInstanceFacet { /** * Copy this facet to another {@link FacetHolder}. diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java deleted file mode 100644 index cd83642e1a2..00000000000 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.causeway.core.metamodel.facets.object.hidden; - -import org.apache.causeway.core.metamodel.facetapi.Facet; -import org.apache.causeway.core.metamodel.facetapi.FacetAbstract; -import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -import org.apache.causeway.core.metamodel.interactions.vis.VisibilityContext; -import org.apache.causeway.core.metamodel.object.ManagedObject; - -public abstract class HiddenObjectFacetAbstract -extends FacetAbstract -implements HiddenObjectFacet { - - private static final Class<? extends Facet> type() { - return HiddenObjectFacet.class; - } - - public HiddenObjectFacetAbstract(final FacetHolder holder) { - super(type(), holder); - } - - @Override - public String hides(final VisibilityContext ic) { - final ManagedObject toValidate = ic.target(); - return toValidate != null ? hiddenReason(toValidate) : null; - } - - protected abstract String hiddenReason(ManagedObject toHide); - -} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenTypeFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenTypeFacet.java index f05d8e798ed..96d7334cd12 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenTypeFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenTypeFacet.java @@ -18,6 +18,8 @@ */ package org.apache.causeway.core.metamodel.facets.object.hidden; -public interface HiddenTypeFacet extends HiddenInstanceFacet { +import org.apache.causeway.core.metamodel.facetapi.Facet; + +public interface HiddenTypeFacet extends Facet, HiddenInstanceFacet { } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenTypeFacetFromAuthorization.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenTypeFacetFromAuthorization.java index 3245f2a36f5..2a091645fea 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenTypeFacetFromAuthorization.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/HiddenTypeFacetFromAuthorization.java @@ -29,15 +29,8 @@ public record HiddenTypeFacetFromAuthorization( FacetHolder facetHolder ) implements HiddenTypeFacet { - @Override - public Class<? extends Facet> facetType() { - return HiddenTypeFacet.class; - } - - @Override - public Precedence precedence() { - return Precedence.HIGH; // facet has final say, don't override; - } + @Override public Class<? extends Facet> facetType() { return HiddenTypeFacet.class; } + @Override public Precedence precedence() { return Precedence.HIGH; } @Override public String hides(final VisibilityContext vc) { diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java index 0b3b36ebb7e..37d774d5cc6 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java @@ -24,35 +24,33 @@ import org.jspecify.annotations.Nullable; import org.apache.causeway.commons.internal.reflection._GenericResolver.ResolvedMethod; +import org.apache.causeway.core.metamodel.facetapi.Facet; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; import org.apache.causeway.core.metamodel.facets.HasImperativeAspect; import org.apache.causeway.core.metamodel.facets.ImperativeAspect; import org.apache.causeway.core.metamodel.facets.object.hidden.HiddenObjectFacet; -import org.apache.causeway.core.metamodel.facets.object.hidden.HiddenObjectFacetAbstract; import org.apache.causeway.core.metamodel.interactions.vis.VisibilityContext; import org.apache.causeway.core.metamodel.object.ManagedObject; -import lombok.Getter; -import org.jspecify.annotations.NonNull; +public record HiddenObjectFacetViaMethod( + ImperativeAspect imperativeAspect, + FacetHolder facetHolder + ) implements HiddenObjectFacet, HasImperativeAspect { -public class HiddenObjectFacetViaMethod -extends HiddenObjectFacetAbstract -implements HasImperativeAspect { - - @Getter(onMethod_ = {@Override}) private final @NonNull ImperativeAspect imperativeAspect; - - public static Optional<HiddenObjectFacet> create( - final @Nullable ResolvedMethod methodIfAny, - final FacetHolder holder) { - - return Optional.ofNullable(methodIfAny) - .map(method->ImperativeAspect.singleRegularMethod(method, Intent.CHECK_IF_HIDDEN)) - .map(imperativeAspect->new HiddenObjectFacetViaMethod(imperativeAspect, holder)); - } - - private HiddenObjectFacetViaMethod(final ImperativeAspect imperativeAspect, final FacetHolder holder) { - super(holder); - this.imperativeAspect = imperativeAspect; + public static Optional<HiddenObjectFacet> create( + final @Nullable ResolvedMethod methodIfAny, + final FacetHolder holder) { + + return Optional.ofNullable(methodIfAny) + .map(method->ImperativeAspect.singleRegularMethod(method, Intent.CHECK_IF_HIDDEN)) + .map(imperativeAspect->new HiddenObjectFacetViaMethod(imperativeAspect, holder)); + } + + @Override public Class<? extends Facet> facetType() { return HiddenObjectFacet.class; } + @Override public Precedence precedence() { return Precedence.DEFAULT;} + + public ImperativeAspect getImperativeAspect() { + return imperativeAspect; } @Override @@ -61,12 +59,6 @@ public String hides(final VisibilityContext ic) { return toValidate != null ? hiddenReason(toValidate) : null; } - @Override - public String hiddenReason(final ManagedObject target) { - final boolean isHidden = imperativeAspect.eval(target, false); - return isHidden ? "Hidden" : null; - } - @Override public HiddenObjectFacetViaMethod copyTo(final FacetHolder holder) { return new HiddenObjectFacetViaMethod(imperativeAspect, holder); @@ -74,7 +66,15 @@ public HiddenObjectFacetViaMethod copyTo(final FacetHolder holder) { @Override public void visitAttributes(final BiConsumer<String, Object> visitor) { - super.visitAttributes(visitor); + HiddenObjectFacet.super.visitAttributes(visitor); imperativeAspect.visitAttributes(visitor); } + + // -- HELPER + + private String hiddenReason(final ManagedObject target) { + final boolean isHidden = imperativeAspect.eval(target, false); + return isHidden ? "Hidden" : null; + } + }
