This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch CAUSEWAY-3414 in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 91994bd194e33927f16ff2a4decf1bfce6baa2a4 Author: danhaywood <[email protected]> AuthorDate: Thu Apr 6 09:43:41 2023 +0200 CAUSEWAY-3414 : fixes for tableDec. --- .../core/metamodel/facetapi/FacetUtil.java | 19 +++++++++ .../layout/CollectionLayoutFacetFactory.java | 4 +- .../PagedFacetForCollectionLayoutAnnotation.java | 9 ++--- ...ollectionLayoutTableDecoratorFacetAbstract.java | 43 --------------------- ...tForCollectionLayoutAnnotationAsConfigured.java | 33 ---------------- ...LayoutTableDecoratorFacetFromConfiguration.java | 33 ---------------- ...coratorFacetForCollectionLayoutAnnotation.java} | 32 +++++++-------- ...TableDecoratorFacetForCollectionLayoutXml.java} | 9 +++-- ...a => TableDecoratorFacetFromConfiguration.java} | 7 ++-- .../DomainObjectLayoutFacetFactory.java | 4 +- .../PagedFacetForDomainObjectLayoutAnnotation.java | 9 ++--- ...ainObjectLayoutTableDecoratorFacetAbstract.java | 45 ---------------------- ...orDomainObjectLayoutAnnotationAsConfigured.java | 33 ---------------- ...LayoutTableDecoratorFacetFromConfiguration.java | 33 ---------------- ...ratorFacetForDomainObjectLayoutAnnotation.java} | 32 +++++++-------- ...bleDecoratorFacetForDomainObjectLayoutXml.java} | 8 ++-- ...a => TableDecoratorFacetFromConfiguration.java} | 7 ++-- .../tabledec/TableDecoratorFacetAbstract.java | 5 +-- .../services/grid/GridSystemServiceAbstract.java | 8 ++-- .../core/metamodel/spec/feature/ObjectMember.java | 3 +- .../causeway/core/metamodel/util/Facets.java | 23 ++++------- 21 files changed, 91 insertions(+), 308 deletions(-) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facetapi/FacetUtil.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facetapi/FacetUtil.java index 4913fb87aa..8be99bac51 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facetapi/FacetUtil.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facetapi/FacetUtil.java @@ -188,4 +188,23 @@ public final class FacetUtil { : a); } + /** Looks up specified facetType within given {@link FacetHolder}s, honoring Facet {@link Precedence}, + * while first one found wins over later found if they have the same precedence. */ + public static <F extends Facet> Optional<F> lookupFacetInButExcluding( + final @NonNull Class<F> facetType, + final Predicate<Object> excluded, + final FacetHolder ... facetHolders) { + if(facetHolders==null) { + return Optional.empty(); + } + return Stream.of(facetHolders) + .filter(_NullSafe::isPresent) + .filter(x -> !excluded.test(x)) + .map(facetHolder->facetHolder.getFacet(facetType)) + .filter(_NullSafe::isPresent) + .reduce((a, b)->b.getPrecedence().ordinal()>a.getPrecedence().ordinal() + ? b + : a); + } + } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java index 74f44b10e0..6f999930ca 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java @@ -24,7 +24,7 @@ import org.apache.causeway.applib.annotation.CollectionLayout; import org.apache.causeway.core.metamodel.context.MetaModelContext; import org.apache.causeway.core.metamodel.facetapi.FeatureType; import org.apache.causeway.core.metamodel.facets.FacetFactoryAbstract; -import org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet; +import org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.TableDecoratorFacetForCollectionLayoutAnnotation; import org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromCollectionLayoutAnnotation; import org.apache.causeway.core.metamodel.specloader.validator.MetaModelValidatorForAmbiguousMixinAnnotations; @@ -74,7 +74,7 @@ extends FacetFactoryAbstract { .create(collectionLayoutIfAny, facetHolder)); addFacetIfPresent( - CollectionLayoutTableDecoratorFacet + TableDecoratorFacetForCollectionLayoutAnnotation .create(collectionLayoutIfAny, facetHolder)); addFacetIfPresent( diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java index 695bc1e9c1..2e7555258e 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java @@ -18,16 +18,15 @@ */ package org.apache.causeway.core.metamodel.facets.collections.layout; -import java.util.Optional; - +import lombok.val; import org.apache.causeway.applib.annotation.CollectionLayout; import org.apache.causeway.applib.annotation.TableDecorator; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -import org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet; import org.apache.causeway.core.metamodel.facets.object.paged.PagedFacet; import org.apache.causeway.core.metamodel.facets.object.paged.PagedFacetAbstract; +import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacet; -import lombok.val; +import java.util.Optional; public class PagedFacetForCollectionLayoutAnnotation extends PagedFacetAbstract { @@ -35,7 +34,7 @@ public class PagedFacetForCollectionLayoutAnnotation extends PagedFacetAbstract final Optional<CollectionLayout> collectionLayoutIfAny, final FacetHolder holder) { - val tableDecoratorFacet = holder.getFacet(CollectionLayoutTableDecoratorFacet.class); + val tableDecoratorFacet = holder.getFacet(TableDecoratorFacet.class); if (TableDecorator.DatatablesNet.class.equals(tableDecoratorFacet.value())) { return Optional.of(new PagedFacetOverriddenByDataTablesDecoration(holder)); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetAbstract.java deleted file mode 100644 index 2e4b0ced20..0000000000 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetAbstract.java +++ /dev/null @@ -1,43 +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.collections.layout.tabledec; - -import org.apache.causeway.applib.annotation.TableDecorator; -import org.apache.causeway.core.metamodel.facetapi.Facet; -import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -import org.apache.causeway.core.metamodel.facets.SingleValueFacetAbstract; -import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacetAbstract; - -abstract class CollectionLayoutTableDecoratorFacetAbstract -extends TableDecoratorFacetAbstract -implements CollectionLayoutTableDecoratorFacet { - - protected CollectionLayoutTableDecoratorFacetAbstract( - final Class<? extends TableDecorator> value, - final FacetHolder holder, - final Precedence precedence) { - super(value, holder, precedence); - } - - protected CollectionLayoutTableDecoratorFacetAbstract( - final Class<? extends TableDecorator> value, final FacetHolder holder) { - super(value, holder); - } -} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotationAsConfigured.java deleted file mode 100644 index 85e84eb399..0000000000 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotationAsConfigured.java +++ /dev/null @@ -1,33 +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.collections.layout.tabledec; - -import org.apache.causeway.applib.annotation.TableDecorator; -import org.apache.causeway.core.metamodel.facetapi.FacetHolder; - -public class CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotationAsConfigured -extends CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotation { - - CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotationAsConfigured( - final Class<? extends TableDecorator> value, final FacetHolder holder) { - super(value, holder); - } - -} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetFromConfiguration.java deleted file mode 100644 index 21778e12da..0000000000 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetFromConfiguration.java +++ /dev/null @@ -1,33 +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.collections.layout.tabledec; - -import org.apache.causeway.applib.annotation.TableDecorator; -import org.apache.causeway.core.metamodel.facetapi.FacetHolder; - -public class CollectionLayoutTableDecoratorFacetFromConfiguration -extends CollectionLayoutTableDecoratorFacetAbstract { - - CollectionLayoutTableDecoratorFacetFromConfiguration( - final Class<? extends TableDecorator> value, final FacetHolder holder) { - super(value, holder); - } - -} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/TableDecoratorFacetForCollectionLayoutAnnotation.java similarity index 69% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacet.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/TableDecoratorFacetForCollectionLayoutAnnotation.java index c7259f8858..5377d83af1 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/TableDecoratorFacetForCollectionLayoutAnnotation.java @@ -19,28 +19,24 @@ */ package org.apache.causeway.core.metamodel.facets.collections.layout.tabledec; -import java.util.Optional; - import org.apache.causeway.applib.annotation.CollectionLayout; -import org.apache.causeway.applib.annotation.Parameter; import org.apache.causeway.applib.annotation.TableDecorator; import org.apache.causeway.commons.internal.base._Optionals; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -import org.apache.causeway.core.metamodel.facets.SingleValueFacet; import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacet; +import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacetAbstract; -/** - * Determines how dependent parameter values should be updated, - * if one of the earlier parameter values is changed. - * <p> - * Corresponds to annotating the action method {@link Parameter#dependentDefaultsPolicy()}. - * - * @since 2.0 - */ -public interface CollectionLayoutTableDecoratorFacet -extends TableDecoratorFacet { +import java.util.Optional; + +public class TableDecoratorFacetForCollectionLayoutAnnotation +extends TableDecoratorFacetAbstract { + + TableDecoratorFacetForCollectionLayoutAnnotation( + final Class<? extends TableDecorator> value, final FacetHolder holder) { + super(value, holder); + } - static Optional<TableDecoratorFacet> create( + public static Optional<TableDecoratorFacet> create( final Optional<CollectionLayout> collectionLayoutIfAny, final FacetHolder holder) { @@ -48,12 +44,12 @@ extends TableDecoratorFacet { collectionLayoutIfAny .map(CollectionLayout::tableDecorator) - .<CollectionLayoutTableDecoratorFacet>map(tableDecorator -> { - return new CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotation( + .<TableDecoratorFacet>map(tableDecorator -> { + return new TableDecoratorFacetForCollectionLayoutAnnotation( tableDecorator, holder); }) , - () -> new CollectionLayoutTableDecoratorFacetFromConfiguration( + () -> new TableDecoratorFacetFromConfiguration( holder.getConfiguration().getApplib().getAnnotation().getCollectionLayout().getTableDecorator(), holder)); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetForCollectionLayoutXml.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/TableDecoratorFacetForCollectionLayoutXml.java similarity index 83% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetForCollectionLayoutXml.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/TableDecoratorFacetForCollectionLayoutXml.java index 3df87b1159..63245271fd 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetForCollectionLayoutXml.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/TableDecoratorFacetForCollectionLayoutXml.java @@ -24,9 +24,10 @@ import org.apache.causeway.applib.annotation.TableDecorator; import org.apache.causeway.applib.layout.component.CollectionLayoutData; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacet; +import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacetAbstract; -public class CollectionLayoutTableDecoratorFacetForCollectionLayoutXml -extends CollectionLayoutTableDecoratorFacetAbstract { +public class TableDecoratorFacetForCollectionLayoutXml +extends TableDecoratorFacetAbstract { public static Optional<TableDecoratorFacet> create( final CollectionLayoutData collectionLayout, @@ -36,10 +37,10 @@ extends CollectionLayoutTableDecoratorFacetAbstract { return Optional.ofNullable(collectionLayout) .map(CollectionLayoutData::getTableDecorator) .map(tableDecorator-> - new CollectionLayoutTableDecoratorFacetForCollectionLayoutXml(tableDecorator, holder, precedence)); + new TableDecoratorFacetForCollectionLayoutXml(tableDecorator, holder, precedence)); } - private CollectionLayoutTableDecoratorFacetForCollectionLayoutXml( + private TableDecoratorFacetForCollectionLayoutXml( final Class<? extends TableDecorator> value, final FacetHolder holder, final Precedence precedence) { diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/TableDecoratorFacetFromConfiguration.java similarity index 83% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotation.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/TableDecoratorFacetFromConfiguration.java index 9e35c929f0..e30e7cd7fc 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/layout/tabledec/TableDecoratorFacetFromConfiguration.java @@ -21,11 +21,12 @@ package org.apache.causeway.core.metamodel.facets.collections.layout.tabledec; import org.apache.causeway.applib.annotation.TableDecorator; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; +import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacetAbstract; -public class CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotation -extends CollectionLayoutTableDecoratorFacetAbstract { +public class TableDecoratorFacetFromConfiguration +extends TableDecoratorFacetAbstract { - CollectionLayoutTableDecoratorFacetForCollectionLayoutAnnotation( + TableDecoratorFacetFromConfiguration( final Class<? extends TableDecorator> value, final FacetHolder holder) { super(value, holder); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java index a5ce2e6033..5a4423bd9b 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java @@ -23,7 +23,7 @@ import org.apache.causeway.commons.internal.base._Lazy; import org.apache.causeway.core.metamodel.context.MetaModelContext; import org.apache.causeway.core.metamodel.facetapi.FeatureType; import org.apache.causeway.core.metamodel.facets.FacetFactoryAbstract; -import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacet; +import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.TableDecoratorFacetForDomainObjectLayoutAnnotation; import org.apache.causeway.core.metamodel.services.events.MetamodelEventService; import lombok.val; @@ -76,7 +76,7 @@ extends FacetFactoryAbstract { .create(domainObjectLayoutIfAny, facetHolder)); addFacetIfPresent( - DomainObjectLayoutTableDecoratorFacet + TableDecoratorFacetForDomainObjectLayoutAnnotation .create(domainObjectLayoutIfAny, facetHolder)); addFacetIfPresent( diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java index 8488cce6ef..e78b5cdf70 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java @@ -18,16 +18,15 @@ */ package org.apache.causeway.core.metamodel.facets.object.domainobjectlayout; -import java.util.Optional; - +import lombok.val; import org.apache.causeway.applib.annotation.DomainObjectLayout; import org.apache.causeway.applib.annotation.TableDecorator; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacet; import org.apache.causeway.core.metamodel.facets.object.paged.PagedFacet; import org.apache.causeway.core.metamodel.facets.object.paged.PagedFacetAbstract; +import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacet; -import lombok.val; +import java.util.Optional; public class PagedFacetForDomainObjectLayoutAnnotation extends PagedFacetAbstract { @@ -36,7 +35,7 @@ public class PagedFacetForDomainObjectLayoutAnnotation extends PagedFacetAbstrac final FacetHolder holder) { - val tableDecoratorFacet = holder.getFacet(DomainObjectLayoutTableDecoratorFacet.class); + val tableDecoratorFacet = holder.getFacet(TableDecoratorFacet.class); if (TableDecorator.DatatablesNet.class.equals(tableDecoratorFacet.value())) { return Optional.of(new PagedFacetOverriddenByDataTablesDecoration(holder)); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetAbstract.java deleted file mode 100644 index 79d88fdbd6..0000000000 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetAbstract.java +++ /dev/null @@ -1,45 +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.domainobjectlayout.tabledec; - -import org.apache.causeway.applib.annotation.TableDecorator; -import org.apache.causeway.core.metamodel.facetapi.Facet; -import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -import org.apache.causeway.core.metamodel.facets.SingleValueFacetAbstract; -import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacet; -import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacetAbstract; - -abstract class DomainObjectLayoutTableDecoratorFacetAbstract -extends TableDecoratorFacetAbstract -implements DomainObjectLayoutTableDecoratorFacet { - - protected DomainObjectLayoutTableDecoratorFacetAbstract( - final Class<? extends TableDecorator> value, - final FacetHolder holder, - final Facet.Precedence precedence) { - super(value, holder, precedence); - } - - protected DomainObjectLayoutTableDecoratorFacetAbstract( - final Class<? extends TableDecorator> value, - final FacetHolder holder) { - super(value, holder); - } -} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotationAsConfigured.java deleted file mode 100644 index 46726f4f8f..0000000000 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotationAsConfigured.java +++ /dev/null @@ -1,33 +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.domainobjectlayout.tabledec; - -import org.apache.causeway.applib.annotation.TableDecorator; -import org.apache.causeway.core.metamodel.facetapi.FacetHolder; - -public class DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotationAsConfigured -extends DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotation { - - DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotationAsConfigured( - final Class<? extends TableDecorator> value, final FacetHolder holder) { - super(value, holder); - } - -} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetFromConfiguration.java deleted file mode 100644 index 94284885e3..0000000000 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetFromConfiguration.java +++ /dev/null @@ -1,33 +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.domainobjectlayout.tabledec; - -import org.apache.causeway.applib.annotation.TableDecorator; -import org.apache.causeway.core.metamodel.facetapi.FacetHolder; - -public class DomainObjectLayoutTableDecoratorFacetFromConfiguration -extends DomainObjectLayoutTableDecoratorFacetAbstract { - - DomainObjectLayoutTableDecoratorFacetFromConfiguration( - final Class<? extends TableDecorator> value, final FacetHolder holder) { - super(value, holder); - } - -} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/TableDecoratorFacetForDomainObjectLayoutAnnotation.java similarity index 69% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacet.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/TableDecoratorFacetForDomainObjectLayoutAnnotation.java index 765f22c213..ab8434d0f4 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/TableDecoratorFacetForDomainObjectLayoutAnnotation.java @@ -19,28 +19,24 @@ */ package org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec; -import java.util.Optional; - import org.apache.causeway.applib.annotation.DomainObjectLayout; -import org.apache.causeway.applib.annotation.Parameter; import org.apache.causeway.applib.annotation.TableDecorator; import org.apache.causeway.commons.internal.base._Optionals; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -import org.apache.causeway.core.metamodel.facets.SingleValueFacet; import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacet; +import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacetAbstract; -/** - * Determines how dependent parameter values should be updated, - * if one of the earlier parameter values is changed. - * <p> - * Corresponds to annotating the action method {@link Parameter#dependentDefaultsPolicy()}. - * - * @since 2.0 - */ -public interface DomainObjectLayoutTableDecoratorFacet -extends TableDecoratorFacet { +import java.util.Optional; + +public class TableDecoratorFacetForDomainObjectLayoutAnnotation +extends TableDecoratorFacetAbstract { + + TableDecoratorFacetForDomainObjectLayoutAnnotation( + final Class<? extends TableDecorator> value, final FacetHolder holder) { + super(value, holder); + } - static Optional<DomainObjectLayoutTableDecoratorFacet> create( + public static Optional<TableDecoratorFacet> create( final Optional<DomainObjectLayout> domainObjectLayoutIfAny, final FacetHolder holder) { @@ -48,11 +44,11 @@ extends TableDecoratorFacet { domainObjectLayoutIfAny .map(DomainObjectLayout::tableDecorator) - .<DomainObjectLayoutTableDecoratorFacet>map(tableDecorator -> - new DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotation( + .<TableDecoratorFacet>map(tableDecorator -> + new TableDecoratorFacetForDomainObjectLayoutAnnotation( tableDecorator, holder)) , - () -> new DomainObjectLayoutTableDecoratorFacetFromConfiguration( + () -> new TableDecoratorFacetFromConfiguration( holder.getConfiguration().getApplib().getAnnotation().getDomainObjectLayout().getTableDecorator(), holder)); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutXml.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/TableDecoratorFacetForDomainObjectLayoutXml.java similarity index 85% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutXml.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/TableDecoratorFacetForDomainObjectLayoutXml.java index 84956ceede..aaabc6e428 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutXml.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/TableDecoratorFacetForDomainObjectLayoutXml.java @@ -27,8 +27,8 @@ import org.apache.causeway.core.metamodel.facetapi.FacetHolder; import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacet; import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacetAbstract; -public class DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutXml -extends DomainObjectLayoutTableDecoratorFacetAbstract { +public class TableDecoratorFacetForDomainObjectLayoutXml +extends TableDecoratorFacetAbstract { public static Optional<TableDecoratorFacet> create( final DomainObjectLayoutData domainObjectLayout, @@ -38,10 +38,10 @@ extends DomainObjectLayoutTableDecoratorFacetAbstract { return Optional.ofNullable(domainObjectLayout) .map(DomainObjectLayoutData::getTableDecorator) .map(tableDecorator-> - new DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutXml(tableDecorator, holder, precedence)); + new TableDecoratorFacetForDomainObjectLayoutXml(tableDecorator, holder, precedence)); } - private DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutXml( + private TableDecoratorFacetForDomainObjectLayoutXml( final Class<? extends TableDecorator> value, final FacetHolder holder, final Facet.Precedence precedence) { diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/TableDecoratorFacetFromConfiguration.java similarity index 83% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotation.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/TableDecoratorFacetFromConfiguration.java index 2e796f1aeb..76079513c7 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/tabledec/TableDecoratorFacetFromConfiguration.java @@ -21,11 +21,12 @@ package org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabl import org.apache.causeway.applib.annotation.TableDecorator; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; +import org.apache.causeway.core.metamodel.facets.object.tabledec.TableDecoratorFacetAbstract; -public class DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotation -extends DomainObjectLayoutTableDecoratorFacetAbstract { +public class TableDecoratorFacetFromConfiguration +extends TableDecoratorFacetAbstract { - DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutAnnotation( + TableDecoratorFacetFromConfiguration( final Class<? extends TableDecorator> value, final FacetHolder holder) { super(value, holder); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/tabledec/TableDecoratorFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/tabledec/TableDecoratorFacetAbstract.java index bce8ca5ce4..bd23aaa8fb 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/tabledec/TableDecoratorFacetAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/tabledec/TableDecoratorFacetAbstract.java @@ -20,11 +20,8 @@ package org.apache.causeway.core.metamodel.facets.object.tabledec; import org.apache.causeway.applib.annotation.TableDecorator; 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.facets.SingleValueFacetAbstract; -import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacet; -import org.apache.causeway.core.metamodel.facets.object.paged.PagedFacet; import java.util.function.BiConsumer; @@ -36,6 +33,7 @@ implements TableDecoratorFacet { return TableDecoratorFacet.class; } + protected TableDecoratorFacetAbstract( final Class<? extends TableDecorator> value, final FacetHolder holder, @@ -54,4 +52,5 @@ implements TableDecoratorFacet { super.visitAttributes(visitor); visitor.accept("value", value()); } + } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/grid/GridSystemServiceAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/grid/GridSystemServiceAbstract.java index 7638622a62..69f1966c5a 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/grid/GridSystemServiceAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/grid/GridSystemServiceAbstract.java @@ -55,7 +55,7 @@ import org.apache.causeway.core.metamodel.facets.collections.layout.MemberDescri import org.apache.causeway.core.metamodel.facets.collections.layout.MemberNamedFacetForCollectionLayoutXml; import org.apache.causeway.core.metamodel.facets.collections.layout.PagedFacetForCollectionLayoutXml; import org.apache.causeway.core.metamodel.facets.collections.layout.SortedByFacetForCollectionLayoutXml; -import org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetForCollectionLayoutXml; +import org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.TableDecoratorFacetForCollectionLayoutXml; import org.apache.causeway.core.metamodel.facets.members.layout.group.GroupIdAndName; import org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetForLayoutXml; import org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetForLayoutXml; @@ -64,7 +64,7 @@ import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.CssCl import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.CssClassFacetForDomainObjectLayoutXml; import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.ObjectDescribedFacetForDomainObjectLayoutXml; import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.ObjectNamedFacetForDomainObjectLayoutXml; -import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutXml; +import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.TableDecoratorFacetForDomainObjectLayoutXml; import org.apache.causeway.core.metamodel.facets.properties.propertylayout.CssClassFacetForPropertyLayoutXml; import org.apache.causeway.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutXml; import org.apache.causeway.core.metamodel.facets.properties.propertylayout.LabelAtFacetForPropertyLayoutXml; @@ -183,7 +183,7 @@ implements GridSystemService<G> { ObjectNamedFacetForDomainObjectLayoutXml .create(domainObjectLayoutData, objectSpec, precedence)); updateFacetIfPresent( - DomainObjectLayoutTableDecoratorFacetForDomainObjectLayoutXml + TableDecoratorFacetForDomainObjectLayoutXml .create(domainObjectLayoutData, objectSpec, precedence)); } @@ -346,7 +346,7 @@ implements GridSystemService<G> { .create(collectionLayoutData, oneToManyAssociation, precedence)); updateFacetIfPresent( - CollectionLayoutTableDecoratorFacetForCollectionLayoutXml + TableDecoratorFacetForCollectionLayoutXml .create(collectionLayoutData, oneToManyAssociation, precedence)); updateFacetIfPresent( diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/ObjectMember.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/ObjectMember.java index ecafa00340..32164e214e 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/ObjectMember.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/ObjectMember.java @@ -259,10 +259,9 @@ public interface ObjectMember extends ObjectFeature { } default Optional<TableDecorator> getTableDecorator() { - return FacetUtil.lookupFacetIn(TableDecoratorFacet.class, this, getElementType()) + return FacetUtil.lookupFacetInButExcluding(TableDecoratorFacet.class, o -> o == TableDecorator.Default.class, getElementType()) .stream() .map(SingleValueFacet::value) - .filter(x -> x != TableDecorator.Default.class) .map(decoratorClass -> { val decorator = _InstanceUtil.createInstance(decoratorClass, decoratorClass, _Constants.emptyObjects); return injectServicesInto(decorator); diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java index 11bebae81f..d5994a61cf 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java @@ -18,29 +18,20 @@ */ package org.apache.causeway.core.metamodel.util; -import java.util.Optional; -import java.util.OptionalInt; -import java.util.function.Predicate; -import java.util.stream.Stream; - -import org.springframework.lang.Nullable; -import org.springframework.util.ClassUtils; - +import lombok.experimental.UtilityClass; +import lombok.val; import org.apache.causeway.applib.annotation.BookmarkPolicy; import org.apache.causeway.applib.annotation.DomainServiceLayout.MenuBar; import org.apache.causeway.applib.annotation.LabelPosition; import org.apache.causeway.applib.annotation.PromptStyle; -import org.apache.causeway.applib.annotation.TableDecorator; import org.apache.causeway.applib.annotation.Where; import org.apache.causeway.applib.id.LogicalType; import org.apache.causeway.applib.layout.grid.bootstrap.BSGrid; import org.apache.causeway.applib.value.semantics.ValueSemanticsProvider; import org.apache.causeway.commons.collections.Can; -import org.apache.causeway.commons.internal._Constants; import org.apache.causeway.commons.internal.base._Casts; import org.apache.causeway.commons.internal.base._NullSafe; import org.apache.causeway.commons.internal.exceptions._Exceptions; -import org.apache.causeway.commons.internal.factory._InstanceUtil; import org.apache.causeway.core.config.metamodel.facets.ParameterConfigOptions; import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy; import org.apache.causeway.core.metamodel.facetapi.Facet; @@ -49,11 +40,9 @@ import org.apache.causeway.core.metamodel.facets.actcoll.typeof.TypeOfFacet; import org.apache.causeway.core.metamodel.facets.all.hide.HiddenFacet; import org.apache.causeway.core.metamodel.facets.collections.CollectionFacet; import org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet; -import org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet; import org.apache.causeway.core.metamodel.facets.members.cssclass.CssClassFacet; import org.apache.causeway.core.metamodel.facets.object.autocomplete.AutoCompleteFacet; import org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet; -import org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacet; import org.apache.causeway.core.metamodel.facets.object.domainservice.DomainServiceFacet; import org.apache.causeway.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet; import org.apache.causeway.core.metamodel.facets.object.grid.GridFacet; @@ -81,9 +70,13 @@ import org.apache.causeway.core.metamodel.spec.TypeOfAnyCardinality; import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; import org.apache.causeway.core.metamodel.spec.feature.ObjectFeature; +import org.springframework.lang.Nullable; +import org.springframework.util.ClassUtils; -import lombok.val; -import lombok.experimental.UtilityClass; +import java.util.Optional; +import java.util.OptionalInt; +import java.util.function.Predicate; +import java.util.stream.Stream; /** * Facet utility.
