This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v3
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/v3 by this push:
     new 4aeb203e1f9 CAUSEWAY-2297: ditch ObjectMemberMemento and cleanup
4aeb203e1f9 is described below

commit 4aeb203e1f95f5394006e0dabea94857e0a8a069
Author: Andi Huber <[email protected]>
AuthorDate: Sat Nov 23 19:26:02 2024 +0100

    CAUSEWAY-2297: ditch ObjectMemberMemento and cleanup
---
 core/metamodel/src/main/java/module-info.java      |  3 -
 .../spec/feature/memento/ObjectMemberMemento.java  | 83 ----------------------
 .../specloader/specimpl/ObjectActionDefault.java   | 29 +-------
 .../specloader/specimpl/ObjectMemberAbstract.java  | 30 +++++++-
 .../specimpl/OneToManyAssociationDefault.java      | 30 +-------
 .../specimpl/OneToOneAssociationDefault.java       | 26 -------
 .../viewer/wicket/model/models/ValueModel.java     |  9 ++-
 7 files changed, 35 insertions(+), 175 deletions(-)

diff --git a/core/metamodel/src/main/java/module-info.java 
b/core/metamodel/src/main/java/module-info.java
index f798a8374d4..6bc69e4c47d 100644
--- a/core/metamodel/src/main/java/module-info.java
+++ b/core/metamodel/src/main/java/module-info.java
@@ -112,9 +112,6 @@ open module org.apache.causeway.core.metamodel {
 
     exports org.apache.causeway.core.metamodel.spec;
     exports org.apache.causeway.core.metamodel.spec.feature;
-    exports org.apache.causeway.core.metamodel.spec.feature.memento
-            //TODO don't expose impl. details
-            to org.apache.causeway.viewer.wicket.model;
 
     exports org.apache.causeway.core.metamodel.specloader
             to org.apache.causeway.core.runtimeservices,
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/memento/ObjectMemberMemento.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/memento/ObjectMemberMemento.java
deleted file mode 100644
index 56edf8795b7..00000000000
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/memento/ObjectMemberMemento.java
+++ /dev/null
@@ -1,83 +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.spec.feature.memento;
-
-import java.io.Serializable;
-import java.util.function.Supplier;
-
-import org.apache.causeway.applib.Identifier;
-import org.apache.causeway.core.metamodel.spec.feature.ObjectMember;
-import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.Synchronized;
-
-/**
- * {@link Serializable} representation of an {@link ObjectMember}
-*
-* @implNote thread-safe memoization
-*
-* @since 2.0 {index}
-*/
-@EqualsAndHashCode
-@AllArgsConstructor(access = AccessLevel.PROTECTED)
-public class ObjectMemberMemento implements Serializable {
-
-   private static final long serialVersionUID = 1L;
-
-   @EqualsAndHashCode.Include
-   @Getter private final @NonNull Identifier identifier;
-
-   // -- FACTORY
-
-   public static ObjectMemberMemento forMember(final @NonNull ObjectMember 
objectMember) {
-       return new ObjectMemberMemento(
-               objectMember.getFeatureIdentifier(),
-               objectMember);
-   }
-
-   // -- LOAD/UNMARSHAL
-
-   @EqualsAndHashCode.Exclude
-   private transient ObjectMember objectMember;
-
-   @Synchronized
-   public ObjectMember getObjectMember(final @NonNull 
Supplier<SpecificationLoader> specLoader) {
-       if (objectMember == null) {
-           objectMember = specLoader.get()
-                   
.specForLogicalTypeElseFail(getIdentifier().getLogicalType())
-                   .getMemberElseFail(
-                           
getIdentifier().getMemberNameAndParameterClassNamesIdentityString());
-       }
-       return objectMember;
-   }
-
-   // -- OBJECT CONTRACT
-
-   @Override
-   public String toString() {
-       return getIdentifier().getLogicalTypeName() + "#"
-               + 
getIdentifier().getMemberNameAndParameterClassNamesIdentityString();
-   }
-
-}
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionDefault.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index a5afc9570bc..589cff71727 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -18,9 +18,6 @@
  */
 package org.apache.causeway.core.metamodel.specloader.specimpl;
 
-import java.io.InvalidObjectException;
-import java.io.ObjectInputStream;
-import java.io.Serializable;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.UUID;
@@ -45,7 +42,6 @@ import org.apache.causeway.core.metamodel.commons.UtilStr;
 import org.apache.causeway.core.metamodel.consent.Consent;
 import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.causeway.core.metamodel.consent.InteractionResultSet;
-import org.apache.causeway.core.metamodel.context.MetaModelContext;
 import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
 import org.apache.causeway.core.metamodel.facetapi.FeatureType;
 import org.apache.causeway.core.metamodel.facets.FacetedMethod;
@@ -76,7 +72,7 @@ import lombok.extern.log4j.Log4j2;
 @Log4j2
 public class ObjectActionDefault
 extends ObjectMemberAbstract
-implements ObjectAction, Serializable {
+implements ObjectAction {
     private static final long serialVersionUID = 1L;
 
     public static ActionScope getType(final String typeStr) {
@@ -625,27 +621,4 @@ implements ObjectAction, Serializable {
                 || methodFacade.synthesize(ActionLayout.class).isPresent();
     }
 
-    // -- SERIALIZATION PROXY
-
-    protected final Object writeReplace() {
-        return new SerializationProxy(this);
-    }
-
-    protected final void readObject(final ObjectInputStream stream) throws 
InvalidObjectException {
-        throw new InvalidObjectException("Proxy required");
-    }
-
-    protected record SerializationProxy(Identifier identifier) implements 
Serializable {
-        SerializationProxy(final ObjectActionDefault action) {
-            this(action.getFeatureIdentifier());
-        }
-        private Object readResolve() {
-            return MetaModelContext.instanceElseFail()
-                .getSpecificationLoader()
-                .specForLogicalTypeElseFail(identifier.getLogicalType())
-                .getActionElseFail(
-                        
identifier.getMemberNameAndParameterClassNamesIdentityString());
-        }
-    }
-
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
index 0073c560a0b..9bdafe0430b 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
@@ -18,6 +18,9 @@
  */
 package org.apache.causeway.core.metamodel.specloader.specimpl;
 
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
 import java.util.Optional;
 import java.util.UUID;
 import java.util.function.Function;
@@ -31,6 +34,7 @@ import 
org.apache.causeway.commons.internal.exceptions._Exceptions;
 import org.apache.causeway.core.metamodel.consent.Consent;
 import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.causeway.core.metamodel.context.HasMetaModelContext;
+import org.apache.causeway.core.metamodel.context.MetaModelContext;
 import org.apache.causeway.core.metamodel.facetapi.Facet;
 import org.apache.causeway.core.metamodel.facetapi.Facet.Precedence;
 import org.apache.causeway.core.metamodel.facetapi.FeatureType;
@@ -62,7 +66,8 @@ import lombok.NonNull;
 public abstract class ObjectMemberAbstract
 implements
     ObjectMember,
-    HasMetaModelContext {
+    HasMetaModelContext, Serializable {
+    private static final long serialVersionUID = 1L;
 
     @Getter(onMethod_ = {@Override}) private final @NonNull Identifier 
featureIdentifier;
     @Getter(onMethod_ = {@Override}) private final @NonNull FeatureType 
featureType;
@@ -324,4 +329,27 @@ implements
         return 
getMetaModelContext().getAsciiIdentifierService().asciiIdFor(getId());
     }
 
+    // -- SERIALIZATION PROXY
+
+    protected final Object writeReplace() {
+        return new SerializationProxy(this);
+    }
+
+    protected final void readObject(final ObjectInputStream stream) throws 
InvalidObjectException {
+        throw new InvalidObjectException("Proxy required");
+    }
+
+    protected record SerializationProxy(Identifier identifier) implements 
Serializable {
+        SerializationProxy(final ObjectMember objectMember) {
+            this(objectMember.getFeatureIdentifier());
+        }
+        private Object readResolve() {
+            return MetaModelContext.instanceElseFail()
+                .getSpecificationLoader()
+                .specForLogicalTypeElseFail(identifier.getLogicalType())
+                .getMemberElseFail(
+                        
identifier.getMemberNameAndParameterClassNamesIdentityString());
+        }
+    }
+
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index fe3300b41c1..e2bd80b115a 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -18,10 +18,6 @@
  */
 package org.apache.causeway.core.metamodel.specloader.specimpl;
 
-import java.io.InvalidObjectException;
-import java.io.ObjectInputStream;
-import java.io.Serializable;
-
 import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.annotation.Collection;
 import org.apache.causeway.applib.annotation.CollectionLayout;
@@ -31,7 +27,6 @@ import 
org.apache.causeway.commons.internal.exceptions._Exceptions;
 import 
org.apache.causeway.commons.internal.reflection._GenericResolver.ResolvedType;
 import org.apache.causeway.core.metamodel.commons.ToString;
 import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.causeway.core.metamodel.context.MetaModelContext;
 import org.apache.causeway.core.metamodel.facetapi.FeatureType;
 import org.apache.causeway.core.metamodel.facets.FacetedMethod;
 import org.apache.causeway.core.metamodel.facets.collections.CollectionFacet;
@@ -50,7 +45,7 @@ import lombok.Getter;
 
 public class OneToManyAssociationDefault
 extends ObjectAssociationAbstract
-implements OneToManyAssociation, Serializable {
+implements OneToManyAssociation {
     private static final long serialVersionUID = 1L;
 
     public static OneToManyAssociationDefault forMethod(final FacetedMethod 
facetedMethod) {
@@ -199,27 +194,4 @@ implements OneToManyAssociation, Serializable {
                 || methodFacade.synthesize(CollectionLayout.class).isPresent();
     }
 
-    // -- SERIALIZATION PROXY
-
-    protected final Object writeReplace() {
-        return new SerializationProxy(this);
-    }
-
-    protected final void readObject(final ObjectInputStream stream) throws 
InvalidObjectException {
-        throw new InvalidObjectException("Proxy required");
-    }
-
-    protected record SerializationProxy(Identifier identifier) implements 
Serializable {
-        SerializationProxy(final OneToManyAssociationDefault collection) {
-            this(collection.getFeatureIdentifier());
-        }
-        private Object readResolve() {
-            return MetaModelContext.instanceElseFail()
-                .getSpecificationLoader()
-                .specForLogicalTypeElseFail(identifier.getLogicalType())
-                .getCollectionElseFail(
-                        identifier.getMemberLogicalName());
-        }
-    }
-
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index b25cb3fb118..6ef68de6a62 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -18,8 +18,6 @@
  */
 package org.apache.causeway.core.metamodel.specloader.specimpl;
 
-import java.io.InvalidObjectException;
-import java.io.ObjectInputStream;
 import java.io.Serializable;
 
 import org.apache.causeway.applib.Identifier;
@@ -33,7 +31,6 @@ import 
org.apache.causeway.commons.internal.exceptions._Exceptions;
 import org.apache.causeway.core.metamodel.commons.ToString;
 import org.apache.causeway.core.metamodel.consent.Consent;
 import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.causeway.core.metamodel.context.MetaModelContext;
 import org.apache.causeway.core.metamodel.facetapi.FeatureType;
 import org.apache.causeway.core.metamodel.facets.FacetedMethod;
 import 
org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
@@ -348,27 +345,4 @@ implements OneToOneAssociation, Serializable {
                 || methodFacade.synthesize(PropertyLayout.class).isPresent();
     }
 
-    // -- SERIALIZATION PROXY
-
-    protected final Object writeReplace() {
-        return new SerializationProxy(this);
-    }
-
-    protected final void readObject(final ObjectInputStream stream) throws 
InvalidObjectException {
-        throw new InvalidObjectException("Proxy required");
-    }
-
-    protected record SerializationProxy(Identifier identifier) implements 
Serializable {
-        SerializationProxy(final OneToOneAssociationDefault property) {
-            this(property.getFeatureIdentifier());
-        }
-        private Object readResolve() {
-            return MetaModelContext.instanceElseFail()
-                .getSpecificationLoader()
-                .specForLogicalTypeElseFail(identifier.getLogicalType())
-                .getPropertyElseFail(
-                        identifier.getMemberLogicalName());
-        }
-    }
-
 }
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ValueModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ValueModel.java
index 60d749b6b01..6e5d40ca65d 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ValueModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ValueModel.java
@@ -22,7 +22,6 @@ import 
org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.objectmanager.memento.ObjectMemento;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectMember;
-import 
org.apache.causeway.core.metamodel.spec.feature.memento.ObjectMemberMemento;
 
 import lombok.NonNull;
 
@@ -50,7 +49,7 @@ extends ModelAbstract<ManagedObject> {
             final @NonNull ObjectMember objectMember,
             final @NonNull ManagedObject valueAdapter) {
         super();
-        this.objectMemberMemento = ObjectMemberMemento.forMember(objectMember);
+        this.objectMemberMemento = objectMember;
         this.adapterMemento = valueAdapter.getMemento().orElseThrow();
     }
 
@@ -61,13 +60,13 @@ extends ModelAbstract<ManagedObject> {
 
     // -- META MODEL
 
-    private final ObjectMemberMemento objectMemberMemento;
+    private final ObjectMember objectMemberMemento;
 
     /**
      * The originating {@link ObjectMember} this {@link ValueModel} is 
provided by.
      */
     public ObjectMember getObjectMember() {
-        return 
objectMemberMemento.getObjectMember(getMetaModelContext()::getSpecificationLoader);
+        return objectMemberMemento;
     }
 
 //    @SuppressWarnings("unchecked")
@@ -80,7 +79,7 @@ extends ModelAbstract<ManagedObject> {
 
     private ActionModel actionModelHint;
     /**
-     * The {@link ActionModelImpl model} of the {@link ObjectAction action}
+     * The {@link ActionModel} of the {@link ObjectAction action}
      * that generated this {@link ValueModel}.
      *
      * @see #setActionHint(ActionModel)

Reply via email to