You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2026/01/14 16:46:45 UTC
(causeway) 01/01: CAUSEWAY-3955: deprecates out-dated API (Identifier, LogicalType)
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 <ah...@apache.org>
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