This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/main by this push:
new 7088d8c4bdb CAUSEWAY-3883: simplifies WrappingObject
7088d8c4bdb is described below
commit 7088d8c4bdba7892a4373618348167477d04f3d9
Author: Andi Huber <[email protected]>
AuthorDate: Wed Jun 18 14:49:49 2025 +0200
CAUSEWAY-3883: simplifies WrappingObject
---
.../applib/services/wrapper/WrappingObject.java | 13 +--
.../runtime/wrap/WrapperInvocationHandler.java | 52 +++++++++---
.../wrapper/WrapperFactoryDefault.java | 10 +--
.../handlers/DomainObjectInvocationHandler.java | 93 ++++++----------------
.../wrapper/handlers/PluralInvocationHandler.java | 2 +-
.../wrapper/handlers/ProxyGenerator.java | 27 ++-----
.../wrapper/WrapperFactoryDefaultTest.java | 12 +--
.../ProxyCreatorTestUsingCodegenPlugin.java | 2 +-
8 files changed, 83 insertions(+), 128 deletions(-)
diff --git
a/api/applib/src/main/java/org/apache/causeway/applib/services/wrapper/WrappingObject.java
b/api/applib/src/main/java/org/apache/causeway/applib/services/wrapper/WrappingObject.java
index f5a1827c0f4..e359df42488 100644
---
a/api/applib/src/main/java/org/apache/causeway/applib/services/wrapper/WrappingObject.java
+++
b/api/applib/src/main/java/org/apache/causeway/applib/services/wrapper/WrappingObject.java
@@ -21,9 +21,7 @@
import java.lang.reflect.Modifier;
import java.util.List;
-import org.apache.causeway.applib.services.wrapper.control.ExecutionMode;
import org.apache.causeway.applib.services.wrapper.control.SyncControl;
-import org.apache.causeway.commons.collections.ImmutableEnumSet;
import
org.apache.causeway.commons.internal.proxy._ProxyFactoryService.AdditionalField;
import org.apache.causeway.commons.internal.reflection._Reflect;
@@ -45,7 +43,7 @@ public interface WrappingObject {
final static String ORIGIN_GETTER_NAME = "__causeway_origin";
final static String ORIGIN_FIELD_NAME = "__causeway_origin_field";
final static String SAVE_METHOD_NAME = "__causeway_save";
- final static String EXECUTION_MODES_METHOD_NAME =
"__causeway_executionModes";
+
final static List<AdditionalField> ADDITIONAL_FIELDS = List.of(
new AdditionalField(ORIGIN_FIELD_NAME,
WrappingObject.Origin.class, Modifier.PROTECTED));
@@ -87,13 +85,4 @@ static <T> T withOrigin(T proxyObject, Origin origin) {
*/
void __causeway_save();
- /**
- * The {@link ExecutionMode}(s) inferred from the
- * {@link SyncControl} with which this wrapper was
- * {@link WrapperFactory#wrap(Object, SyncControl) created}.
- */
- ImmutableEnumSet<ExecutionMode> __causeway_executionModes();
-
-
-
}
diff --git
a/core/runtime/src/main/java/org/apache/causeway/core/runtime/wrap/WrapperInvocationHandler.java
b/core/runtime/src/main/java/org/apache/causeway/core/runtime/wrap/WrapperInvocationHandler.java
index 92f9f6cf450..be33af23eb5 100644
---
a/core/runtime/src/main/java/org/apache/causeway/core/runtime/wrap/WrapperInvocationHandler.java
+++
b/core/runtime/src/main/java/org/apache/causeway/core/runtime/wrap/WrapperInvocationHandler.java
@@ -23,10 +23,12 @@
import java.util.Objects;
import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
import org.apache.causeway.applib.services.wrapper.WrappingObject;
import org.apache.causeway.applib.services.wrapper.control.ExecutionMode;
import org.apache.causeway.commons.internal._Constants;
+import org.apache.causeway.commons.internal.base._Lazy;
public interface WrapperInvocationHandler extends InvocationHandler {
@@ -45,19 +47,40 @@ public record ClassMetaData(
Method equalsMethod,
Method hashCodeMethod,
- Method toStringMethod) {
+ Method toStringMethod,
+
+ /**
+ * The <tt>title()</tt> method; may be <tt>null</tt>.
+ */
+ @Nullable Method titleMethod) {
+
+ /**
+ * The <tt>__causeway_origin()</tt> method from {@link
WrappingObject#__causeway_origin()}.
+ */
+ static final _Lazy<Method> __causeway_originMethod =
_Lazy.threadSafe(()->
+
WrappingObject.class.getMethod(WrappingObject.ORIGIN_GETTER_NAME,
_Constants.emptyClasses));
+
+ /**
+ * The <tt>__causeway_save()</tt> method from {@link
WrappingObject#__causeway_save()}.
+ */
+ static final _Lazy<Method> __causeway_saveMethod =
_Lazy.threadSafe(()->
+
WrappingObject.class.getMethod(WrappingObject.SAVE_METHOD_NAME,
_Constants.emptyClasses));
public static ClassMetaData of(
- final @NonNull Object pojo) {
-
- var pojoClass = pojo.getClass();
+ final @NonNull Class<?> pojoClass) {
try {
var equalsMethod = pojoClass.getMethod("equals",
_Constants.classesOfObject);
var hashCodeMethod = pojoClass.getMethod("hashCode",
_Constants.emptyClasses);
var toStringMethod = pojoClass.getMethod("toString",
_Constants.emptyClasses);
+ var titleMethod = (Method)null;
+ try {
+ titleMethod = pojoClass.getMethod("title",
_Constants.emptyClasses);
+ } catch (final NoSuchMethodException e) {
+ // ignore
+ }
return new WrapperInvocationHandler
- .ClassMetaData(pojoClass, equalsMethod,
hashCodeMethod, toStringMethod);
+ .ClassMetaData(pojoClass, equalsMethod,
hashCodeMethod, toStringMethod, titleMethod);
} catch (final NoSuchMethodException e) {
// ///CLOVER:OFF
@@ -71,20 +94,29 @@ public boolean isObjectMethod(final Method method) {
|| hashCodeMethod().equals(method)
|| equalsMethod().equals(method);
}
-
+
+ public boolean isTitleMethod(Method method) {
+ return method.equals(titleMethod);
+ }
+ public boolean isOriginMethod(Method method) {
+ return method.equals(__causeway_originMethod.get());
+ }
+ public boolean isSaveMethod(Method method) {
+ return method.equals(__causeway_saveMethod.get());
+ }
}
public record WrapperInvocation(
- WrappingObject.Origin origin,
- Method method,
- Object[] args) {
+ WrappingObject.@NonNull Origin origin,
+ @NonNull Method method,
+ @NonNull Object[] args) {
static WrapperInvocation of(Object target, Method method, Object[]
args) {
Objects.requireNonNull(target);
var origin = target instanceof WrappingObject wrappingObject
? WrappingObject.getOrigin(wrappingObject)
: WrappingObject.Origin.fallback(target);
- return new WrapperInvocation(origin, method, args);
+ return new WrapperInvocation(origin, method, args!=null ? args :
_Constants.emptyObjects);
}
public boolean shouldEnforceRules() {
diff --git
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/WrapperFactoryDefault.java
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/WrapperFactoryDefault.java
index 1d591931312..4b939ff3754 100644
---
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/WrapperFactoryDefault.java
+++
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/WrapperFactoryDefault.java
@@ -197,8 +197,8 @@ public <T> T wrap(
if (isWrapper(domainObject)) {
var wrapperObject = (WrappingObject) domainObject;
- var executionMode = wrapperObject.__causeway_executionModes();
- if(equivalent(executionMode, syncControl.getExecutionModes())) {
+ var origin = wrapperObject.__causeway_origin();
+ if(equivalent(origin.syncControl().getExecutionModes(),
syncControl.getExecutionModes())) {
return domainObject;
}
var underlyingDomainObject =
wrapperObject.__causeway_origin().pojo();
@@ -233,12 +233,12 @@ public <T> T wrapMixin(
if (isWrapper(mixee)) {
var wrapperObject = (WrappingObject) mixee;
- var executionMode = wrapperObject.__causeway_executionModes();
- var underlyingMixee = wrapperObject.__causeway_origin().pojo();
+ var origin = wrapperObject.__causeway_origin();
+ var underlyingMixee = origin.pojo();
getServiceInjector().injectServicesInto(underlyingMixee);
- if(equivalent(executionMode, syncControl.getExecutionModes())) {
+ if(equivalent(origin.syncControl().getExecutionModes(),
syncControl.getExecutionModes())) {
return mixin;
}
return _Casts.uncheckedCast(createMixinProxy(underlyingMixee,
mixin, syncControl));
diff --git
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java
index 89d576f1185..f6f6e9a4390 100644
---
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java
+++
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -38,7 +38,7 @@
import org.apache.causeway.applib.services.wrapper.events.VisibilityEvent;
import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.commons.functional.IndexedFunction;
-import org.apache.causeway.commons.internal._Constants;
+import org.apache.causeway.commons.internal.assertions._Assert;
import org.apache.causeway.commons.internal.base._Casts;
import org.apache.causeway.commons.internal.base._NullSafe;
import org.apache.causeway.commons.internal.collections._Arrays;
@@ -84,56 +84,19 @@ final class DomainObjectInvocationHandler<T>
private final ProxyGenerator proxyGenerator;
private final MetaModelContext mmc;
- /**
- * The <tt>title()</tt> method; may be <tt>null</tt>.
- */
- protected final Method titleMethod;
-
- /**
- * The <tt>__causeway_origin()</tt> method from {@link
WrappingObject#__causeway_origin()}.
- */
- protected final Method __causeway_originMethod;
-
- /**
- * The <tt>__causeway_save()</tt> method from {@link
WrappingObject#__causeway_save()}.
- */
- protected final Method __causeway_saveMethod;
-
- /**
- * The <tt>__causeway_executionModes()</tt> method from {@link
WrappingObject#__causeway_executionModes()}.
- */
- protected final Method __causeway_executionModes;
-
private final EntityFacet entityFacet;
private final ManagedObject mixeeAdapter;
- public DomainObjectInvocationHandler(
- final T domainObject,
+ DomainObjectInvocationHandler(
+ final Class<T> domainObjectClass,
final ManagedObject mixeeAdapter, // ignored if not handling a
mixin
final ManagedObject targetAdapter,
final ProxyGenerator proxyGenerator) {
this.mmc = targetAdapter.objSpec().getMetaModelContext();
- this.classMetaData =
WrapperInvocationHandler.ClassMetaData.of(domainObject);
+ this.classMetaData =
WrapperInvocationHandler.ClassMetaData.of(domainObjectClass);
this.proxyGenerator = proxyGenerator;
- var _titleMethod = (Method)null;
- try {
- _titleMethod = classMetaData().pojoClass().getMethod("title",
_Constants.emptyClasses);
- } catch (final NoSuchMethodException e) {
- // ignore
- }
- this.titleMethod = _titleMethod;
-
- try {
- this.__causeway_originMethod =
WrappingObject.class.getMethod(WrappingObject.ORIGIN_GETTER_NAME,
_Constants.emptyClasses);
- this.__causeway_saveMethod =
WrappingObject.class.getMethod(WrappingObject.SAVE_METHOD_NAME,
_Constants.emptyClasses);
- this.__causeway_executionModes =
WrappingObject.class.getMethod(WrappingObject.EXECUTION_MODES_METHOD_NAME,
_Constants.emptyClasses);
- } catch (final NoSuchMethodException nsme) {
- throw new IllegalStateException(
- "Could not locate reserved declared methods in the
WrappingObject interfaces",
- nsme);
- }
this.entityFacet = targetAdapter.objSpec().entityFacet().orElse(null);
this.mixeeAdapter = mixeeAdapter;
@@ -144,12 +107,10 @@ public Object invoke(WrapperInvocation wrapperInvocation)
throws Throwable {
final Object target = wrapperInvocation.origin().pojo();
final Method method = wrapperInvocation.method();
- final Object[] args = wrapperInvocation.args();
- var syncControl = wrapperInvocation.origin().syncControl();
if (classMetaData().isObjectMethod(method)
|| isEnhancedEntityMethod(method)) {
- return method.invoke(target, args);
+ return method.invoke(target, wrapperInvocation.args());
}
final ManagedObject targetAdapter =
mmc.getObjectManager().adapt(target);
@@ -158,7 +119,7 @@ public Object invoke(WrapperInvocation wrapperInvocation)
throws Throwable {
MmAssertionUtils.assertIsBookmarkSupported(targetAdapter);
}
- if (method.equals(titleMethod)) {
+ if (classMetaData.isTitleMethod(method) ) {
return handleTitleMethod(wrapperInvocation, targetAdapter);
}
@@ -167,19 +128,13 @@ public Object invoke(WrapperInvocation wrapperInvocation)
throws Throwable {
.orElseThrow();
if(!wrapperInvocation.origin().isFallback()) {
-
- if (method.equals(__causeway_originMethod)) {
+ if (classMetaData.isOriginMethod(method)) {
return wrapperInvocation.origin();
}
-
// save method, through the proxy
- if (method.equals(__causeway_saveMethod)) {
+ if (classMetaData.isSaveMethod(method)) {
return handleSaveMethod(wrapperInvocation, targetAdapter,
targetSpec);
}
-
- if (method.equals(__causeway_executionModes)) {
- return syncControl.getExecutionModes();
- }
}
var objectMember = targetSpec.getMemberElseFail(resolvedMethod);
@@ -191,7 +146,7 @@ public Object invoke(WrapperInvocation wrapperInvocation)
throws Throwable {
}
if (intent == Intent.DEFAULTS || intent ==
Intent.CHOICES_OR_AUTOCOMPLETE) {
- return method.invoke(target, args);
+ return method.invoke(target, wrapperInvocation.args());
}
if (objectMember.isOneToOneAssociation()) {
@@ -203,11 +158,11 @@ public Object invoke(WrapperInvocation wrapperInvocation)
throws Throwable {
final OneToOneAssociation otoa = (OneToOneAssociation)
objectMember;
if (intent == Intent.ACCESSOR) {
- return handleGetterMethodOnProperty(wrapperInvocation,
targetAdapter, args, otoa);
+ return handleGetterMethodOnProperty(wrapperInvocation,
targetAdapter, otoa);
}
if (intent == Intent.MODIFY_PROPERTY || intent ==
Intent.INITIALIZATION) {
- return handleSetterMethodOnProperty(wrapperInvocation,
targetAdapter, args, otoa);
+ return handleSetterMethodOnProperty(wrapperInvocation,
targetAdapter, otoa);
}
}
if (objectMember.isOneToManyAssociation()) {
@@ -218,7 +173,7 @@ public Object invoke(WrapperInvocation wrapperInvocation)
throws Throwable {
final OneToManyAssociation otma = (OneToManyAssociation)
objectMember;
if (intent == Intent.ACCESSOR) {
- return handleGetterMethodOnCollection(wrapperInvocation,
targetAdapter, args, otma, memberId);
+ return handleGetterMethodOnCollection(wrapperInvocation,
targetAdapter, otma, memberId);
}
}
@@ -242,13 +197,15 @@ public Object invoke(WrapperInvocation wrapperInvocation)
throws Throwable {
if (mixinMember != null) {
if(mixinMember instanceof ObjectAction) {
- return handleActionMethod(wrapperInvocation,
mixeeAdapter, args, (ObjectAction)mixinMember);
+ return handleActionMethod(wrapperInvocation,
mixeeAdapter, (ObjectAction)mixinMember);
}
if(mixinMember instanceof OneToOneAssociation) {
- return handleGetterMethodOnProperty(wrapperInvocation,
mixeeAdapter, new Object[0], (OneToOneAssociation)mixinMember);
+ _Assert.assertEquals(0,
wrapperInvocation.args().length);
+ return handleGetterMethodOnProperty(wrapperInvocation,
mixeeAdapter, (OneToOneAssociation)mixinMember);
}
if(mixinMember instanceof OneToManyAssociation) {
- return
handleGetterMethodOnCollection(wrapperInvocation, mixeeAdapter, new Object[0],
(OneToManyAssociation)mixinMember, memberId);
+ _Assert.assertEquals(0,
wrapperInvocation.args().length);
+ return
handleGetterMethodOnCollection(wrapperInvocation, mixeeAdapter,
(OneToManyAssociation)mixinMember, memberId);
}
} else {
throw _Exceptions.illegalState(String.format(
@@ -257,7 +214,7 @@ public Object invoke(WrapperInvocation wrapperInvocation)
throws Throwable {
}
// this is just a regular non-mixin action.
- return handleActionMethod(wrapperInvocation, targetAdapter, args,
objectAction);
+ return handleActionMethod(wrapperInvocation, targetAdapter,
objectAction);
}
throw new UnsupportedOperationException(String.format("Unknown member
type '%s'", objectMember));
@@ -285,7 +242,7 @@ private static ObjectMember determineMixinMember(
// throw new RuntimeException("Unable to find the mixed-in action
corresponding to " + objectAction.getIdentifier().toFullIdentityString());
}
- public InteractionInitiatedBy getInteractionInitiatedBy(final
WrapperInvocation wrapperInvocation) {
+ private InteractionInitiatedBy getInteractionInitiatedBy(final
WrapperInvocation wrapperInvocation) {
return wrapperInvocation.shouldEnforceRules()
? InteractionInitiatedBy.USER
: InteractionInitiatedBy.FRAMEWORK;
@@ -334,10 +291,9 @@ private Object handleSaveMethod(
private Object handleGetterMethodOnProperty(
final WrapperInvocation wrapperInvocation,
final ManagedObject targetAdapter,
- final Object[] args,
final OneToOneAssociation property) {
- zeroArgsElseThrow(args, "get");
+ zeroArgsElseThrow(wrapperInvocation.args(), "get");
runValidationTask(wrapperInvocation, ()->{
checkVisibility(wrapperInvocation, targetAdapter, property);
@@ -363,10 +319,9 @@ private Object handleGetterMethodOnProperty(
private Object handleSetterMethodOnProperty(
final WrapperInvocation wrapperInvocation,
final ManagedObject targetAdapter,
- final Object[] args,
final OneToOneAssociation property) {
- var singleArg = singleArgUnderlyingElseNull(args, "setter");
+ var singleArg = singleArgUnderlyingElseNull(wrapperInvocation.args(),
"setter");
runValidationTask(wrapperInvocation, ()->{
checkVisibility(wrapperInvocation, targetAdapter, property);
@@ -392,11 +347,10 @@ targetAdapter, argumentAdapter,
getInteractionInitiatedBy(wrapperInvocation))
private Object handleGetterMethodOnCollection(
final WrapperInvocation wrapperInvocation,
final ManagedObject targetAdapter,
- final Object[] args,
final OneToManyAssociation collection,
final String memberId) {
- zeroArgsElseThrow(args, "get");
+ zeroArgsElseThrow(wrapperInvocation.args(), "get");
runValidationTask(wrapperInvocation, ()->{
checkVisibility(wrapperInvocation, targetAdapter, collection);
@@ -454,7 +408,6 @@ private Collection<?> wrapCollection(
private Object handleActionMethod(
final WrapperInvocation wrapperInvocation,
final ManagedObject targetAdapter,
- final Object[] args,
final ObjectAction objectAction) {
var head = objectAction.interactionHead(targetAdapter);
@@ -463,7 +416,7 @@ private Object handleActionMethod(
// adapt argument pojos to managed objects
var argAdapters =
objectAction.getParameterTypes().map(IndexedFunction.zeroBased((paramIndex,
paramSpec)->{
// guard against index out of bounds
- var argPojo = _Arrays.get(args, paramIndex).orElse(null);
+ var argPojo = _Arrays.get(wrapperInvocation.args(),
paramIndex).orElse(null);
return argPojo!=null
? objectManager.adapt(argPojo)
: ManagedObject.empty(paramSpec);
diff --git
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/PluralInvocationHandler.java
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/PluralInvocationHandler.java
index 40904c94911..0863614c347 100644
---
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/PluralInvocationHandler.java
+++
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/PluralInvocationHandler.java
@@ -79,7 +79,7 @@ private PluralInvocationHandler(
final CollectionSemantics collectionSemantics) {
this(collectionOrMapToBeProxied,
-
WrapperInvocationHandler.ClassMetaData.of(collectionOrMapToBeProxied),
+
WrapperInvocationHandler.ClassMetaData.of(collectionOrMapToBeProxied.getClass()),
otma, collectionSemantics);
}
diff --git
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/ProxyGenerator.java
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/ProxyGenerator.java
index 259038c1d88..4103ee4fe58 100644
---
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/ProxyGenerator.java
+++
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/ProxyGenerator.java
@@ -18,7 +18,6 @@
*/
package org.apache.causeway.core.runtimeservices.wrapper.handlers;
-import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.util.Collection;
import java.util.Map;
@@ -42,12 +41,7 @@ public <T> T objectProxy(
final ManagedObject adapter,
final SyncControl syncControl) {
- var invocationHandler = new DomainObjectInvocationHandler<T>(
- domainObject,
- null, // mixeeAdapter ignored
- adapter,
- this);
-
+ var invocationHandler = handlerForRegular(domainObject, adapter);
return instantiateProxy(invocationHandler, new
WrappingObject.Origin(domainObject, syncControl));
}
@@ -57,12 +51,7 @@ public <T> T mixinProxy(
final ManagedObject mixinAdapter,
final SyncControl syncControl) {
- var invocationHandler = new DomainObjectInvocationHandler<T>(
- mixin,
- mixeeAdapter,
- mixinAdapter,
- this);
-
+ var invocationHandler = handlerForMixin(mixin, mixeeAdapter,
mixinAdapter);
return instantiateProxy(invocationHandler, new
WrappingObject.Origin(mixin, syncControl));
}
@@ -126,20 +115,20 @@ private <T, P> P instantiatePluralProxy(final Class<T>
base, final PluralInvocat
return _Casts.uncheckedCast(proxyWithoutFields);
}
- public <T> InvocationHandler handlerForRegular(@NonNull T domainObject,
ManagedObject targetAdapter) {
+ public <T> WrapperInvocationHandler handlerForRegular(@NonNull T
domainObject, ManagedObject targetAdapter) {
return new DomainObjectInvocationHandler<>(
- domainObject,
+ domainObject.getClass(),
null, // mixeeAdapter ignored
targetAdapter,
- null);
+ this);
}
- public <T> InvocationHandler handlerForMixin(T mixin, ManagedObject
mixeeAdapter, ManagedObject mixinAdapter) {
+ public <T> WrapperInvocationHandler handlerForMixin(T mixin, ManagedObject
mixeeAdapter, ManagedObject mixinAdapter) {
return new DomainObjectInvocationHandler<>(
- mixin,
+ mixin.getClass(),
mixeeAdapter,
mixinAdapter,
- null);
+ this);
}
}
diff --git
a/core/runtimeservices/src/test/java/org/apache/causeway/core/runtimeservices/wrapper/WrapperFactoryDefaultTest.java
b/core/runtimeservices/src/test/java/org/apache/causeway/core/runtimeservices/wrapper/WrapperFactoryDefaultTest.java
index 3534620326a..6f8ef3e6140 100644
---
a/core/runtimeservices/src/test/java/org/apache/causeway/core/runtimeservices/wrapper/WrapperFactoryDefaultTest.java
+++
b/core/runtimeservices/src/test/java/org/apache/causeway/core/runtimeservices/wrapper/WrapperFactoryDefaultTest.java
@@ -31,7 +31,6 @@
import org.apache.causeway.applib.services.wrapper.WrappingObject;
import org.apache.causeway.applib.services.wrapper.control.ExecutionMode;
import org.apache.causeway.applib.services.wrapper.control.SyncControl;
-import org.apache.causeway.commons.collections.ImmutableEnumSet;
import org.apache.causeway.commons.internal.proxy._ProxyFactoryService;
import org.apache.causeway.core.metamodel._testing.MetaModelContext_forTesting;
import org.apache.causeway.core.metamodel.execution.MemberExecutorService;
@@ -45,9 +44,7 @@ private static class DomainObject {
@RequiredArgsConstructor
private static class WrappingDomainObject extends DomainObject implements
WrappingObject {
-
private final DomainObject wrappedObject;
- private final ImmutableEnumSet<ExecutionMode> modes;
@Override
public void __causeway_save() {
@@ -57,11 +54,6 @@ public void __causeway_save() {
public WrappingObject.Origin __causeway_origin() {
return new WrappingObject.Origin(wrappedObject,
SyncControl.control());
}
-
- @Override
- public ImmutableEnumSet<ExecutionMode> __causeway_executionModes() {
- return modes;
- }
}
private WrapperFactoryDefault wrapperFactory;
@@ -110,7 +102,7 @@ public void wrap_ofUnwrapped_delegates_to_createProxy()
throws Exception {
public void wrap_ofWrapped_sameMode_returnsUnchanged() throws Exception {
// given
final DomainObject wrappedObject = new DomainObject();
- final DomainObject domainObject = new
WrappingDomainObject(wrappedObject,
ImmutableEnumSet.noneOf(ExecutionMode.class));
+ final DomainObject domainObject = new
WrappingDomainObject(wrappedObject);
// when
final DomainObject wrappingObject = wrapperFactory.wrap(domainObject);
@@ -124,7 +116,7 @@ public void wrap_ofWrapped_sameMode_returnsUnchanged()
throws Exception {
public void wrap_ofWrapped_differentMode_delegates_to_createProxy() throws
Exception {
// given
final DomainObject wrappedObject = new DomainObject();
- final DomainObject domainObject = new
WrappingDomainObject(wrappedObject,
ImmutableEnumSet.noneOf(ExecutionMode.class));
+ final DomainObject domainObject = new
WrappingDomainObject(wrappedObject);
// when
final DomainObject wrappingObject = wrapperFactory.wrap(domainObject,
SyncControl.control().withSkipRules());
diff --git
a/core/runtimeservices/src/test/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/ProxyCreatorTestUsingCodegenPlugin.java
b/core/runtimeservices/src/test/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/ProxyCreatorTestUsingCodegenPlugin.java
index d562f6887ac..466e6f7832c 100644
---
a/core/runtimeservices/src/test/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/ProxyCreatorTestUsingCodegenPlugin.java
+++
b/core/runtimeservices/src/test/java/org/apache/causeway/core/runtimeservices/wrapper/handlers/ProxyCreatorTestUsingCodegenPlugin.java
@@ -61,7 +61,7 @@ private static class WrapperInvocationHandlerForTest
implements WrapperInvocatio
private final Employee delegate = new Employee();
private final Set<String> invoked = new HashSet<>();
private final WrapperInvocationHandler.ClassMetaData classMetaData =
new WrapperInvocationHandler.ClassMetaData(
- Employee.class, null, null, null);
+ Employee.class, null, null, null, null);
@Getter @Setter
private boolean resolveObjectChangedEnabled = false;