You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/09/15 04:22:55 UTC
[isis] branch master updated: ISIS-3210: don't expose specimpl
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 438ab8eceb ISIS-3210: don't expose specimpl
438ab8eceb is described below
commit 438ab8eceb08eb42376f6905649902b569c0f297
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 15 06:22:49 2022 +0200
ISIS-3210: don't expose specimpl
---
core/metamodel/src/main/java/module-info.java | 5 -----
.../command/CommandExecutorServiceDefault.java | 12 +++--------
.../wrapper/WrapperFactoryDefault.java | 23 ++++++++++------------
3 files changed, 13 insertions(+), 27 deletions(-)
diff --git a/core/metamodel/src/main/java/module-info.java b/core/metamodel/src/main/java/module-info.java
index 35db97fb0e..40228eecf3 100644
--- a/core/metamodel/src/main/java/module-info.java
+++ b/core/metamodel/src/main/java/module-info.java
@@ -87,11 +87,6 @@ open module org.apache.isis.core.metamodel {
//TODO don't expose impl. details
to org.apache.isis.viewer.wicket.model;
- exports org.apache.isis.core.metamodel.specloader.specimpl
- //TODO don't expose impl. details
- to //org.apache.isis.viewer.wicket.ui,
- org.apache.isis.core.runtimeservices;
-
exports org.apache.isis.core.metamodel.specloader
to org.apache.isis.core.runtimeservices,
//TODO don't expose to viewers
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
index 071bf74c28..a99d3915d0 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
@@ -60,7 +60,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionMixedIn;
import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
import org.apache.isis.schema.cmd.v2.ActionDto;
import org.apache.isis.schema.cmd.v2.CommandDto;
@@ -193,19 +192,14 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
for (OidDto targetOidDto : targetOidDtos) {
val targetAdapter = valueMarshaller.recoverReferenceFrom(targetOidDto);
- final ObjectAction objectAction = findObjectAction(targetAdapter, logicalMemberIdentifier);
+ val objectAction = findObjectAction(targetAdapter, logicalMemberIdentifier);
// we pass 'null' for the mixedInAdapter; if this action _is_ a mixin then
// it will switch the targetAdapter to be the mixedInAdapter transparently
val argAdapters = argAdaptersFor(actionDto);
- InteractionHead head;
- if(objectAction instanceof ObjectActionMixedIn) {
- ObjectActionMixedIn actionMixedIn = (ObjectActionMixedIn) objectAction;
- head = actionMixedIn.interactionHead(targetAdapter);
- } else {
- head = InteractionHead.regular(targetAdapter);
- }
+ final InteractionHead head = objectAction.interactionHead(targetAdapter);
+
val resultAdapter = objectAction.execute(head, argAdapters, InteractionInitiatedBy.FRAMEWORK);
// flush any Isis PersistenceCommands pending
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
index 52150ee04f..0711040424 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
@@ -92,10 +92,10 @@ import org.apache.isis.core.metamodel.object.ManagedObjects;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
import org.apache.isis.core.metamodel.services.command.CommandDtoFactory;
import org.apache.isis.core.metamodel.spec.feature.MixedIn;
+import org.apache.isis.core.metamodel.spec.feature.MixedInMember;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionMixedIn;
import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
import org.apache.isis.core.runtimeservices.wrapper.dispatchers.InteractionEventDispatcher;
import org.apache.isis.core.runtimeservices.wrapper.dispatchers.InteractionEventDispatcherTypeSafe;
@@ -433,7 +433,7 @@ public class WrapperFactoryDefault implements WrapperFactory {
private <T> MemberAndTarget memberAndTargetForMixin(
final Method method,
- final T mixedIn,
+ final T mixee,
final ManagedObject mixinAdapter) {
val mixinMember = mixinAdapter.getSpecification().getMember(method).orElse(null);
@@ -441,24 +441,21 @@ public class WrapperFactoryDefault implements WrapperFactory {
return MemberAndTarget.notFound();
}
- // find corresponding action of the mixedIn (this is the 'real' target).
- val mixedInClass = mixedIn.getClass();
+ // find corresponding action of the mixee (this is the 'real' target, the target usable for invocation).
+ val mixeeClass = mixee.getClass();
// don't care about anything other than actions
// (contributed properties and collections are read-only).
- final ObjectActionMixedIn targetAction = specificationLoader
- .specForType(mixedInClass)
- .flatMap(mixedInSpec->mixedInSpec.streamAnyActions(MixedIn.INCLUDED)
- .filter(ObjectActionMixedIn.class::isInstance)
- .map(ObjectActionMixedIn.class::cast)
- .filter(x -> x.hasMixinAction((ObjectAction) mixinMember))
+ final ObjectAction targetAction = specificationLoader.specForType(mixeeClass)
+ .flatMap(mixeeSpec->mixeeSpec.streamAnyActions(MixedIn.ONLY)
+ .filter(act -> ((MixedInMember)act).hasMixinAction((ObjectAction) mixinMember))
.findFirst()
)
.orElseThrow(()->new UnsupportedOperationException(String.format(
- "Could not locate objectAction delegating to mixinAction id='%s' on mixedIn class '%s'",
- mixinMember.getId(), mixedInClass.getName())));
+ "Could not locate objectAction delegating to mixinAction id='%s' on mixee class '%s'",
+ mixinMember.getId(), mixeeClass.getName())));
- return MemberAndTarget.foundAction(targetAction, currentObjectManager().adapt(mixedIn), method);
+ return MemberAndTarget.foundAction(targetAction, currentObjectManager().adapt(mixee), method);
}
private static <R> InteractionContext interactionContextFrom(