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)