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

Reply via email to