This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch CAUSEWAY-3955 in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 3081d5189d07a4815a64e047f7ec6985e2952e2e Author: andi-huber <[email protected]> AuthorDate: Wed Jan 14 17:46:27 2026 +0100 CAUSEWAY-3955: deprecates out-dated API (Identifier, LogicalType) --- .../org/apache/causeway/applib/Identifier.java | 44 +++++++++++++++++----- .../apache/causeway/applib/id/HasLogicalType.java | 23 +++++++++-- .../org/apache/causeway/applib/id/LogicalType.java | 36 +++++++++++++----- .../value/semantics/ValueSemanticsProvider.java | 8 +++- .../memento/ObjectMementoCollection.java | 3 +- .../memento/ObjectMementoForEmpty.java | 3 +- .../memento/ObjectMementoForScalar.java | 7 ++-- .../specimpl/ObjectSpecificationAbstract.java | 2 +- .../specimpl/dflt/ObjectSpecificationDefault.java | 2 +- .../widgets/select2/Select2ChoiceExt.java | 10 ++--- .../widgets/select2/Select2MultiChoiceExt.java | 16 ++++---- 11 files changed, 110 insertions(+), 44 deletions(-) diff --git a/api/applib/src/main/java/org/apache/causeway/applib/Identifier.java b/api/applib/src/main/java/org/apache/causeway/applib/Identifier.java index 6c64b76ccc9..00a93b4332b 100644 --- a/api/applib/src/main/java/org/apache/causeway/applib/Identifier.java +++ b/api/applib/src/main/java/org/apache/causeway/applib/Identifier.java @@ -35,6 +35,7 @@ import lombok.Getter; import lombok.NonNull; import lombok.val; +import lombok.experimental.Accessors; /** * Combines {@link LogicalType} and member identification (from properties, collections or actions), @@ -132,20 +133,20 @@ public static Identifier actionIdentifier( // -- INSTANCE FIELDS - @Getter(onMethod_ = {@Override}) private final LogicalType logicalType; + @Getter(onMethod_ = {@Override}) @Accessors(fluent = true) private final LogicalType logicalType; @Getter private final String className; - @Getter private final String memberLogicalName; + @Getter @Accessors(fluent = true) private final String memberLogicalName; /** * Optional. Used for <i>Action Parameters</i>, otherwise {@code -1}. */ - @Getter private final int parameterIndex; - - @Getter private final Can<String> memberParameterClassNames; - - @Getter private final Type type; + @Getter @Accessors(fluent = true) private final int parameterIndex; + + @Getter @Accessors(fluent = true) private final Can<String> memberParameterClassNames; + + @Getter @Accessors(fluent = true) private final Type type; /** * Fully qualified Identity String. (class-name + member-logical-name + param-class-names) @@ -181,7 +182,7 @@ private Identifier( final int parameterIndex) { this.logicalType = logicalType; - this.className = logicalType.getClassName(); + this.className = logicalType.className(); this.memberLogicalName = memberLogicalName; this.memberParameterClassNames = memberParameterClassNames; this.type = type; @@ -210,7 +211,7 @@ public Identifier withParameterIndex(final int parameterIndex) { // -- LOGICAL ID public String getLogicalIdentityString(final @NonNull String delimiter) { - return getLogicalTypeName() + return logicalTypeName() + delimiter + memberNameAndParameterClassNamesIdentityString; } @@ -327,6 +328,29 @@ private static String naturalName(final String name) { private static Can<String> naturalNames(final Can<String> names) { return names.map(Identifier::naturalName); } - + + // -- DEPRECATIONS + + @Deprecated(forRemoval = true) + public final LogicalType getLogicalType() { + return logicalType(); + } + @Deprecated(forRemoval = true) + public final String getMemberLogicalName() { + return memberLogicalName(); + } + @Deprecated(forRemoval = true) + public final Can<String> getMemberParameterClassNames() { + return memberParameterClassNames(); + } + @Deprecated(forRemoval = true) + public final Type getType() { + return type(); + } + @Deprecated(forRemoval = true) + public final int getParameterIndex() { + return parameterIndex(); + } + } diff --git a/api/applib/src/main/java/org/apache/causeway/applib/id/HasLogicalType.java b/api/applib/src/main/java/org/apache/causeway/applib/id/HasLogicalType.java index 85c4fb6c0f4..29e72b741b4 100644 --- a/api/applib/src/main/java/org/apache/causeway/applib/id/HasLogicalType.java +++ b/api/applib/src/main/java/org/apache/causeway/applib/id/HasLogicalType.java @@ -21,15 +21,30 @@ /** * @since 2.0 {@index} */ +@FunctionalInterface public interface HasLogicalType { - LogicalType getLogicalType(); + LogicalType logicalType(); /** - * @see LogicalType#getLogicalTypeName() + * @see LogicalType#logicalName() */ - default String getLogicalTypeName() { - return getLogicalType().getLogicalTypeName(); + default String logicalTypeName() { return logicalType().logicalName(); } + + /** + * @see LogicalType#className() + */ + default String className() { return logicalType().className(); } + + // -- DEPRECATIONS + + @Deprecated(forRemoval = true) + default LogicalType getLogicalType() { + return logicalType(); } + @Deprecated(forRemoval = true) + default String getLogicalTypeName() { + return logicalTypeName(); + } } diff --git a/api/applib/src/main/java/org/apache/causeway/applib/id/LogicalType.java b/api/applib/src/main/java/org/apache/causeway/applib/id/LogicalType.java index 590deb7d67c..782b043adb1 100644 --- a/api/applib/src/main/java/org/apache/causeway/applib/id/LogicalType.java +++ b/api/applib/src/main/java/org/apache/causeway/applib/id/LogicalType.java @@ -40,6 +40,7 @@ import lombok.Synchronized; import lombok.ToString; import lombok.val; +import lombok.experimental.Accessors; /** * A generalization of Java's class type to also hold a logical name, which can be supplied lazily. @@ -65,7 +66,7 @@ public final class LogicalType /** * Type (that is, the {@link Class} this identifier represents). */ - @Getter + @Getter @Accessors(fluent = true) private final Class<?> correspondingClass; @ToString.Exclude @@ -175,8 +176,8 @@ private LogicalType( /** * Canonical name of the corresponding class. */ - public String getClassName() { - return _Strings.nonEmpty(getCorrespondingClass().getCanonicalName()) + public String className() { + return _Strings.nonEmpty(correspondingClass().getCanonicalName()) .orElse("inner"); } @@ -200,7 +201,7 @@ public String getClassName() { * @see SpecificationLoader */ @Synchronized - public String getLogicalTypeName() { + public String logicalName() { if(logicalName == null) { logicalName = requireNonEmpty(logicalNameProvider.get()); } @@ -228,7 +229,7 @@ public String getLogicalTypeSimpleName() { * @implNote the result is not memoized, to keep it simple */ public String getNamespace() { - val logicalTypeName = getLogicalTypeName(); + val logicalTypeName = logicalName(); final int lastDot = logicalTypeName.lastIndexOf('.'); return lastDot >= 0 ? logicalTypeName.substring(0, lastDot) @@ -285,7 +286,7 @@ public int hashCode() { @Override public int compareTo(final @Nullable LogicalType other) { val otherClassName = other!=null - ? other.getCorrespondingClass().getCanonicalName() + ? other.correspondingClass().getCanonicalName() : null; return _Strings.compareNullsFirst(correspondingClass.getCanonicalName(), otherClassName); } @@ -306,8 +307,8 @@ private static class SerializationProxy implements Serializable { private final @NonNull String logicalTypeName; private SerializationProxy(final LogicalType typeIdentifier) { - this.correspondingClass = typeIdentifier.getCorrespondingClass(); - this.logicalTypeName = typeIdentifier.getLogicalTypeName(); + this.correspondingClass = typeIdentifier.correspondingClass(); + this.logicalTypeName = typeIdentifier.logicalName(); } private Object readResolve() { @@ -315,12 +316,29 @@ private Object readResolve() { } } + // -- DEPRECATIONS + + @Deprecated(forRemoval = true) + public final String getLogicalTypeName() { + return logicalName(); + } + + @Deprecated(forRemoval = true) + public final Class<?> getCorrespondingClass() { + return correspondingClass(); + } + + @Deprecated(forRemoval = true) + public String getClassName() { + return className(); + } + // -- HELPER private String requireNonEmpty(final String logicalName) { if(_Strings.isEmpty(logicalName)) { throw _Exceptions.illegalArgument("logical name for type %s cannot be empty", - getCorrespondingClass().getName()); + correspondingClass().getName()); } return logicalName; } diff --git a/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/ValueSemanticsProvider.java b/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/ValueSemanticsProvider.java index eac7e41dbe6..b942eaec2d5 100644 --- a/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/ValueSemanticsProvider.java +++ b/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/ValueSemanticsProvider.java @@ -21,6 +21,8 @@ import org.springframework.lang.Nullable; +import lombok.experimental.Accessors; + import org.apache.causeway.applib.Identifier; import org.apache.causeway.applib.annotation.Value; import org.apache.causeway.applib.services.bookmark.IdStringifier; @@ -53,10 +55,14 @@ */ public interface ValueSemanticsProvider<T> { - @lombok.Value(staticConstructor = "of") + @lombok.Value(staticConstructor = "of") @Accessors(fluent = true) class Context { private final @Nullable Identifier featureIdentifier; private final @Nullable InteractionContext interactionContext; + @Deprecated(forRemoval = true) // replaced by a record in future versions + public final @Nullable Identifier getFeatureIdentifier() { return featureIdentifier; } + @Deprecated(forRemoval = true) // replaced by a record in future versions + public final @Nullable InteractionContext getInteractionContext() { return interactionContext; } } Class<T> getCorrespondingClass(); diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoCollection.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoCollection.java index 122817e5286..72c1015d40a 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoCollection.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoCollection.java @@ -27,6 +27,7 @@ import lombok.Getter; import lombok.NonNull; import lombok.Value; +import lombok.experimental.Accessors; /** * @since 2.0 @@ -38,7 +39,7 @@ public final class ObjectMementoCollection implements ObjectMemento { private final ArrayList<ObjectMemento> container; - @Getter(onMethod_ = {@Override}) + @Getter(onMethod_ = {@Override}) @Accessors(fluent = true) @NonNull private final LogicalType logicalType; @Override diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoForEmpty.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoForEmpty.java index 8ed48882e1e..6c9d3eb8321 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoForEmpty.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoForEmpty.java @@ -27,6 +27,7 @@ import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.ToString; +import lombok.experimental.Accessors; /** * @since 2.0 @@ -37,7 +38,7 @@ public class ObjectMementoForEmpty implements ObjectMemento { private static final long serialVersionUID = 1L; - @Getter(onMethod_ = {@Override}) + @Getter(onMethod_ = {@Override}) @Accessors(fluent = true) @NonNull private LogicalType logicalType; @Override diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoForScalar.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoForScalar.java index 90a35f93ad7..eb175b3c449 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoForScalar.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/memento/ObjectMementoForScalar.java @@ -38,6 +38,7 @@ import lombok.NonNull; import lombok.ToString; import lombok.val; +import lombok.experimental.Accessors; @ToString public final class ObjectMementoForScalar @@ -61,7 +62,7 @@ static ObjectMementoForScalar createPersistent( // -- - @Getter(onMethod_ = {@Override}) final LogicalType logicalType; + @Getter(onMethod_ = {@Override}) @Accessors(fluent = true) final LogicalType logicalType; _Recreatable.RecreateStrategy recreateStrategy; @@ -82,7 +83,7 @@ private ObjectMementoForScalar( .orElseThrow(()->_Exceptions.unrecoverable( "cannot recreate spec from logicalTypeName %s", logicalTypeName)); - this.logicalType = spec.getLogicalType(); + this.logicalType = spec.logicalType(); this.title = "?memento?"; // TODO can we do better? @@ -139,7 +140,7 @@ public ManagedObject reconstructObject(final MetaModelContext mmc) { // intercept when managed by Spring if(spec.getBeanSort().isManagedBeanAny()) { - return spec.getMetaModelContext().lookupServiceAdapterById(getLogicalTypeName()); + return spec.getMetaModelContext().lookupServiceAdapterById(logicalTypeName()); } return recreateStrategy.recreateObject(this, mmc); diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java index 745bead638d..ce215161d2d 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java @@ -229,7 +229,7 @@ public final FeatureType getFeatureType() { } @Override - public final LogicalType getLogicalType() { + public final LogicalType logicalType() { return logicalType; } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java index 5b724a381e9..e424a8bf5af 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java @@ -253,7 +253,7 @@ public Optional<ObjectAction> getDeclaredAction( : streamDeclaredActions(actionScopes, mixedIn) .filter(action-> id.equals(action.getFeatureIdentifier().getMemberNameAndParameterClassNamesIdentityString()) - || id.equals(action.getFeatureIdentifier().getMemberLogicalName()) + || id.equals(action.getFeatureIdentifier().memberLogicalName()) ) .findFirst(); } diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2ChoiceExt.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2ChoiceExt.java index d94290aed8f..a7f1f991b2e 100644 --- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2ChoiceExt.java +++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2ChoiceExt.java @@ -18,16 +18,16 @@ */ package org.apache.causeway.viewer.wicket.ui.components.widgets.select2; -import org.apache.wicket.model.IModel; -import org.wicketstuff.select2.Select2Choice; - import org.apache.causeway.applib.id.HasLogicalType; import org.apache.causeway.applib.id.LogicalType; import org.apache.causeway.core.metamodel.objectmanager.memento.ObjectMemento; import org.apache.causeway.viewer.wicket.model.models.ScalarModel; import org.apache.causeway.viewer.wicket.ui.components.widgets.select2.providers.ChoiceProviderAbstract; +import org.apache.wicket.model.IModel; +import org.wicketstuff.select2.Select2Choice; import lombok.Getter; +import lombok.experimental.Accessors; public class Select2ChoiceExt extends Select2Choice<ObjectMemento> @@ -43,7 +43,7 @@ public static Select2ChoiceExt create( return new Select2ChoiceExt(id, modelObject, scalarModel, choiceProvider); } - @Getter(onMethod_ = {@Override}) private final LogicalType logicalType; + @Getter(onMethod_ = {@Override}) @Accessors(fluent = true) private final LogicalType logicalType; private Select2ChoiceExt( final String id, @@ -52,7 +52,7 @@ private Select2ChoiceExt( final ChoiceProviderAbstract choiceProvider) { super(id, model, choiceProvider); - logicalType = scalarModel.getElementType().getLogicalType(); + logicalType = scalarModel.getElementType().logicalType(); getSettings().setCloseOnSelect(true); getSettings().setWidth("auto"); diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2MultiChoiceExt.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2MultiChoiceExt.java index 9998d4c9f92..f3a0669d086 100644 --- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2MultiChoiceExt.java +++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2MultiChoiceExt.java @@ -21,18 +21,18 @@ import java.util.ArrayList; import java.util.Collection; -import org.apache.wicket.model.IModel; -import org.wicketstuff.select2.Select2MultiChoice; - import org.apache.causeway.applib.id.HasLogicalType; import org.apache.causeway.applib.id.LogicalType; import org.apache.causeway.commons.internal.base._Casts; import org.apache.causeway.core.metamodel.objectmanager.memento.ObjectMemento; import org.apache.causeway.viewer.wicket.model.models.ScalarModel; import org.apache.causeway.viewer.wicket.ui.components.widgets.select2.providers.ChoiceProviderAbstract; +import org.apache.wicket.model.IModel; +import org.wicketstuff.select2.Select2MultiChoice; import lombok.Getter; import lombok.val; +import lombok.experimental.Accessors; public class Select2MultiChoiceExt extends Select2MultiChoice<ObjectMemento> @@ -49,7 +49,7 @@ public static Select2MultiChoiceExt create( return new Select2MultiChoiceExt(id, _Casts.uncheckedCast(modelObject), scalarModel, choiceProvider); } - @Getter(onMethod_ = {@Override}) private final LogicalType logicalType; + @Getter(onMethod_ = {@Override}) @Accessors(fluent = true) private final LogicalType logicalType; Select2MultiChoiceExt( final String id, @@ -58,7 +58,7 @@ public static Select2MultiChoiceExt create( final ChoiceProviderAbstract choiceProvider) { super(id, model, choiceProvider); - logicalType = scalarModel.getElementType().getLogicalType(); + logicalType = scalarModel.getElementType().logicalType(); getSettings().setCloseOnSelect(true); getSettings().setWidth("auto"); @@ -68,11 +68,11 @@ public static Select2MultiChoiceExt create( } public ObjectMemento getPackedModelObject() { - return ObjectMemento.pack(this.getModelObject(), this.getLogicalType()); + return ObjectMemento.pack(this.getModelObject(), this.logicalType()); } public ObjectMemento getPackedConvertedInput() { - return ObjectMemento.pack(this.getConvertedInput(), this.getLogicalType()); + return ObjectMemento.pack(this.getConvertedInput(), this.logicalType()); } public IModel<ObjectMemento> getPackingAdapterModel() { @@ -95,7 +95,7 @@ private IModel<ObjectMemento> createPackingAdapterModel() { final IModel<Collection<ObjectMemento>> delegate; { this.delegate = multi.getModel(); - this.memento = ObjectMemento.pack(delegate.getObject(), multi.getLogicalType()); + this.memento = ObjectMemento.pack(delegate.getObject(), multi.logicalType()); } @Override
