You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/09/15 08:02:31 UTC
[07/28] isis git commit: ISIS-1194: removing AdapterManager from
ObjectSpecificationDependencies
ISIS-1194: removing AdapterManager from ObjectSpecificationDependencies
- removing ObjectActionContainer#getServiceActionsReturning, as not used anywhere
- ObjectXxxContributee hold servicePojo rather than serviceAdapter, and lookup from AdapterManager on-the-fly
- replace getServiceAdapters() with getServicePojos() in ObjectSpecificationAbstract
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/b8fb1747
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/b8fb1747
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/b8fb1747
Branch: refs/heads/ISIS-1194
Commit: b8fb1747d6b214b51532036bb5c06802f1b613b2
Parents: 7e3fb25
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Sep 14 10:03:46 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Sep 14 10:03:46 2015 +0100
----------------------------------------------------------------------
.../spec/ObjectSpecificationDependencies.java | 9 +-
.../spec/feature/ObjectActionContainer.java | 1 -
.../specloader/ObjectReflectorDefault.java | 2 +-
.../specimpl/ObjectActionContributee.java | 27 ++--
.../specimpl/ObjectSpecificationAbstract.java | 122 +++++++------------
.../OneToManyAssociationContributee.java | 19 +--
.../OneToOneAssociationContributee.java | 25 ++--
.../ObjectSpecificationOnStandaloneList.java | 11 --
.../testspec/ObjectSpecificationStub.java | 5 -
9 files changed, 88 insertions(+), 133 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/b8fb1747/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
index 40a140f..f8def88 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
@@ -16,7 +16,6 @@
*/
package org.apache.isis.core.metamodel.spec;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
@@ -27,19 +26,16 @@ public class ObjectSpecificationDependencies {
private final ServicesInjector servicesInjector;
private final SpecificationLoader specificationLoader;
private final FacetProcessor facetProcessor;
- private final AdapterManager adapterManager;
public ObjectSpecificationDependencies(
final DeploymentCategory deploymentCategory,
final ServicesInjector servicesInjector,
final SpecificationLoader specificationLoader,
- final FacetProcessor facetProcessor,
- final AdapterManager adapterManager) {
+ final FacetProcessor facetProcessor) {
this.deploymentCategory = deploymentCategory;
this.servicesInjector = servicesInjector;
this.specificationLoader = specificationLoader;
this.facetProcessor = facetProcessor;
- this.adapterManager = adapterManager;
}
public DeploymentCategory getDeploymentCategory() {
@@ -58,7 +54,4 @@ public class ObjectSpecificationDependencies {
return facetProcessor;
}
- public AdapterManager getAdapterManager() {
- return adapterManager;
- }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/b8fb1747/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionContainer.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionContainer.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionContainer.java
index 1c6b00e..c9cadc0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionContainer.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionContainer.java
@@ -68,7 +68,6 @@ public interface ObjectActionContainer {
List<ObjectAction> getObjectActions(Contributed contributee);
- List<ObjectAction> getServiceActionsReturning(List<ActionType> type);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b8fb1747/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
index f73d8a7..7c2e3f5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
@@ -452,7 +452,7 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
final ObjectSpecificationDependencies specContext =
new ObjectSpecificationDependencies(
getDeploymentCategory(), servicesInjector, specificationLookup,
- facetProcessor, adapterManager);
+ facetProcessor);
final ObjectMemberDependencies objectMemberDependencies = new ObjectMemberDependencies(
specificationLookup, adapterManager, getRuntimeContext().getMessageBrokerService(), servicesInjector,
http://git-wip-us.apache.org/repos/asf/isis/blob/b8fb1747/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
index 7202e6f..36f19e2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
@@ -51,7 +51,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
public class ObjectActionContributee extends ObjectActionImpl implements ContributeeMember {
- private final ObjectAdapter serviceAdapter;
+ private final Object servicePojo;
private final ObjectActionImpl serviceAction;
private final int contributeeParam;
private final ObjectSpecification contributeeType;
@@ -74,14 +74,14 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
* @param contributeeParam - the parameter number which corresponds to the contributee, and so should be suppressed.
*/
public ObjectActionContributee(
- final ObjectAdapter serviceAdapter,
+ final Object servicePojo,
final ObjectActionImpl serviceAction,
final int contributeeParam,
final ObjectSpecification contributeeType,
final ObjectMemberDependencies objectMemberDependencies) {
super(serviceAction.getFacetedMethod(), objectMemberDependencies);
-
- this.serviceAdapter = serviceAdapter;
+
+ this.servicePojo = servicePojo;
this.serviceAction = serviceAction;
this.contributeeType = contributeeType;
this.contributeeParam = contributeeParam;
@@ -138,11 +138,11 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
final ObjectActionParameterContributee contributedParam;
if(serviceParameter instanceof ObjectActionParameterParseable) {
contributedParam = new ObjectActionParameterParseableContributee(
- serviceAdapter, serviceAction, serviceParameter, serviceParamNum,
+ getServiceAdapter(), serviceAction, serviceParameter, serviceParamNum,
contributeeParamNum, this);
} else if(serviceParameter instanceof OneToOneActionParameterImpl) {
contributedParam = new OneToOneActionParameterContributee(
- serviceAdapter, serviceAction, serviceParameter, serviceParamNum,
+ getServiceAdapter(), serviceAction, serviceParameter, serviceParamNum,
contributeeParamNum, this);
} else {
throw new RuntimeException("Unknown implementation of ObjectActionParameter; " + serviceParameter.getClass().getName());
@@ -162,7 +162,7 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
final ObjectAdapter contributee,
final InteractionInitiatedBy interactionInitiatedBy,
Where where) {
- final VisibilityContext<?> ic = serviceAction.createVisibleInteractionContext(serviceAdapter,
+ final VisibilityContext<?> ic = serviceAction.createVisibleInteractionContext(getServiceAdapter(),
interactionInitiatedBy, where);
ic.putContributee(this.contributeeParam, contributee);
return InteractionUtils.isVisibleResult(this, ic).createConsent();
@@ -172,7 +172,7 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
public Consent isUsable(
final ObjectAdapter contributee,
final InteractionInitiatedBy interactionInitiatedBy, final Where where) {
- final UsabilityContext<?> ic = serviceAction.createUsableInteractionContext(serviceAdapter,
+ final UsabilityContext<?> ic = serviceAction.createUsableInteractionContext(getServiceAdapter(),
interactionInitiatedBy, where);
ic.putContributee(this.contributeeParam, contributee);
return InteractionUtils.isUsableResult(this, ic).createConsent();
@@ -180,7 +180,7 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
@Override
public ObjectAdapter[] getDefaults(final ObjectAdapter target) {
- final ObjectAdapter[] contributorDefaults = serviceAction.getDefaults(serviceAdapter);
+ final ObjectAdapter[] contributorDefaults = serviceAction.getDefaults(getServiceAdapter());
return removeElementFromArray(contributorDefaults, contributeeParam, new ObjectAdapter[]{});
}
@@ -188,7 +188,7 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
public ObjectAdapter[][] getChoices(
final ObjectAdapter target,
final InteractionInitiatedBy interactionInitiatedBy) {
- final ObjectAdapter[][] serviceChoices = serviceAction.getChoices(serviceAdapter,
+ final ObjectAdapter[][] serviceChoices = serviceAction.getChoices(getServiceAdapter(),
interactionInitiatedBy);
return removeElementFromArray(serviceChoices, contributeeParam, new ObjectAdapter[][]{});
}
@@ -198,7 +198,7 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
final ObjectAdapter[] proposedArguments,
final InteractionInitiatedBy interactionInitiatedBy) {
ObjectAdapter[] serviceArguments = argsPlusContributee(contributee, proposedArguments);
- return serviceAction.isProposedArgumentSetValid(serviceAdapter, serviceArguments, interactionInitiatedBy);
+ return serviceAction.isProposedArgumentSetValid(getServiceAdapter(), serviceArguments, interactionInitiatedBy);
}
@Override
@@ -250,7 +250,7 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
}
}
- return serviceAction.execute(serviceAdapter, argsPlusContributee(contributee, arguments),
+ return serviceAction.execute(getServiceAdapter(), argsPlusContributee(contributee, arguments),
interactionInitiatedBy);
}
@@ -332,4 +332,7 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
return list.toArray(t);
}
+ public ObjectAdapter getServiceAdapter() {
+ return getAdapterManager().adapterFor(servicePojo);
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b8fb1747/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 9422e67..8718912 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -46,7 +46,6 @@ import org.apache.isis.core.commons.exceptions.UnknownTypeException;
import org.apache.isis.core.commons.lang.ClassExtensions;
import org.apache.isis.core.commons.util.ToString;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.consent.Consent;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.consent.InteractionResult;
@@ -55,7 +54,6 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
import org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet;
import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
import org.apache.isis.core.metamodel.facets.all.help.HelpFacet;
@@ -124,7 +122,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
private final ServicesInjector servicesInjector;
private final SpecificationLoader specificationLoader;
private final FacetProcessor facetProcessor;
- private final AdapterManager adapterManager;
/**
* Only populated once {@link #introspectTypeHierarchyAndMembers()} is called.
@@ -193,7 +190,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
this.servicesInjector = objectSpecificationDependencies.getServicesInjector();
this.specificationLoader = objectSpecificationDependencies.getSpecificationLoader();
this.facetProcessor = objectSpecificationDependencies.getFacetProcessor();
- this.adapterManager = objectSpecificationDependencies.getAdapterManager();
this.objectMemberDependencies = objectMemberDependencies;
}
@@ -856,55 +852,11 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
// getServiceActionsReturning
// //////////////////////////////////////////////////////////////////////
- @Override
- public List<ObjectAction> getServiceActionsReturning(final List<ActionType> types) {
- final List<ObjectAction> serviceActions = Lists.newArrayList();
- final Iterable<ObjectAdapter> serviceAdapters = getServiceAdapters();
- for (final ObjectAdapter serviceAdapter : serviceAdapters) {
- appendServiceActionsReturning(serviceAdapter, types, serviceActions);
- }
- return serviceActions;
- }
-
- private Iterable<ObjectAdapter> getServiceAdapters() {
- final List<Object> servicePojos = getServicesInjector().getRegisteredServices();
- return Iterables.transform(servicePojos, ObjectAdapter.Functions.adapterForUsing(adapterManager));
- }
-
- private void appendServiceActionsReturning(final ObjectAdapter serviceAdapter, final List<ActionType> types, final List<ObjectAction> relatedActionsToAppendTo) {
- final List<ObjectAction> matchingActionsToAppendTo = Lists.newArrayList();
- for (final ActionType type : types) {
- final List<ObjectAction> serviceActions = serviceAdapter.getSpecification().getObjectActions(type, Contributed.INCLUDED, Filters.<ObjectAction>any());
- for (final ObjectAction serviceAction : serviceActions) {
- addIfReturnsSubtype(serviceAction, matchingActionsToAppendTo);
- }
- }
- relatedActionsToAppendTo.addAll(matchingActionsToAppendTo);
+ private Iterable<Object> getServicePojos() {
+ return getServicesInjector().getRegisteredServices();
}
- private void addIfReturnsSubtype(final ObjectAction serviceAction, final List<ObjectAction> matchingActionsToAppendTo) {
- final ObjectSpecification returnType = serviceAction.getReturnType();
- if (returnType == null) {
- return;
- }
- if (returnType.isParentedOrFreeCollection()) {
- final TypeOfFacet facet = serviceAction.getFacet(TypeOfFacet.class);
- if (facet != null) {
- final ObjectSpecification elementType = facet.valueSpec();
- addIfReturnsSubtype(serviceAction, elementType, matchingActionsToAppendTo);
- }
- } else {
- addIfReturnsSubtype(serviceAction, returnType, matchingActionsToAppendTo);
- }
- }
-
- private void addIfReturnsSubtype(final ObjectAction serviceAction, final ObjectSpecification actionType, final List<ObjectAction> matchingActionsToAppendTo) {
- if (actionType.isOfType(this)) {
- matchingActionsToAppendTo.add(serviceAction);
- }
- }
-
// //////////////////////////////////////////////////////////////////////
// contributee associations (properties and collections)
// //////////////////////////////////////////////////////////////////////
@@ -915,20 +867,20 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
}
final List<ObjectAssociation> contributeeAssociations = Lists.newArrayList();
- for (final ObjectAdapter serviceAdapter : getServiceAdapters()) {
- addContributeeAssociationsIfAny(serviceAdapter, contributeeAssociations);
+ for (final Object servicePojo : getServicePojos()) {
+ addContributeeAssociationsIfAny(servicePojo, contributeeAssociations);
}
return contributeeAssociations;
}
private void addContributeeAssociationsIfAny(
- final ObjectAdapter serviceAdapter,
- final List<ObjectAssociation> contributeeAssociationsToAppendTo) {
- final ObjectSpecification specification = serviceAdapter.getSpecification();
+ final Object servicePojo, final List<ObjectAssociation> contributeeAssociationsToAppendTo) {
+ final Class<?> serviceClass = servicePojo.getClass();
+ final ObjectSpecification specification = specificationLoader.loadSpecification(serviceClass);
if (specification == this) {
return;
}
- final List<ObjectAssociation> contributeeAssociations = createContributeeAssociations(serviceAdapter);
+ final List<ObjectAssociation> contributeeAssociations = createContributeeAssociations(servicePojo);
contributeeAssociationsToAppendTo.addAll(contributeeAssociations);
}
@@ -936,11 +888,19 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
* Synthesises {@link ObjectAssociation}s from matching {@link ObjectAction}s of any of the services
* that accept one parameter
*/
- private List<ObjectAssociation> createContributeeAssociations(final ObjectAdapter serviceAdapter) {
-
- final ObjectSpecification specification = serviceAdapter.getSpecification();
- final List<ObjectAction> serviceActions = specification.getObjectActions(ActionType.USER, Contributed.INCLUDED, Filters.<ObjectAction>any());
-
+ private List<ObjectAssociation> createContributeeAssociations(
+ final ObjectAdapter serviceAdapter) {
+
+ final Object servicePojo = serviceAdapter.getObject();
+ return createContributeeAssociations(servicePojo);
+ }
+
+ private List<ObjectAssociation> createContributeeAssociations(final Object servicePojo) {
+ final Class<?> serviceClass = servicePojo.getClass();
+ final ObjectSpecification specification = specificationLoader.loadSpecification(serviceClass);
+ final List<ObjectAction> serviceActions = specification.getObjectActions(ActionType.USER, Contributed.INCLUDED, Filters
+ .<ObjectAction>any());
+
final List<ObjectActionImpl> contributedActions = Lists.newArrayList();
for (final ObjectAction serviceAction : serviceActions) {
if (isAlwaysHidden(serviceAction)) {
@@ -964,21 +924,28 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
}
contributedActions.add((ObjectActionImpl) serviceAction);
}
-
- return Lists.newArrayList(Iterables.transform(contributedActions, createContributeeAssociationFunctor(serviceAdapter, this)));
- }
+ return Lists.newArrayList(Iterables.transform(contributedActions, createContributeeAssociationFunctor(
+ servicePojo, this)));
+ }
private Function<ObjectActionImpl, ObjectAssociation> createContributeeAssociationFunctor(
final ObjectAdapter serviceAdapter, final ObjectSpecification contributeeType) {
+ final Object servicePojo = serviceAdapter.getObject();
+ return createContributeeAssociationFunctor(servicePojo, contributeeType);
+ }
+
+ private Function<ObjectActionImpl, ObjectAssociation> createContributeeAssociationFunctor(
+ final Object servicePojo,
+ final ObjectSpecification contributeeType) {
return new Function<ObjectActionImpl, ObjectAssociation>(){
@Override
public ObjectAssociation apply(ObjectActionImpl input) {
final ObjectSpecification returnType = input.getReturnType();
- final ObjectAssociationAbstract association = returnType.isNotCollection()
- ? new OneToOneAssociationContributee(serviceAdapter, input, contributeeType,
+ final ObjectAssociationAbstract association = returnType.isNotCollection()
+ ? new OneToOneAssociationContributee(servicePojo, input, contributeeType,
objectMemberDependencies)
- : new OneToManyAssociationContributee(serviceAdapter, input, contributeeType,
+ : new OneToManyAssociationContributee(servicePojo, input, contributeeType,
objectMemberDependencies);
facetProcessor.processMemberOrder(metadataProperties, association);
return association;
@@ -986,7 +953,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
};
}
-
// //////////////////////////////////////////////////////////////////////
// contributee actions
// //////////////////////////////////////////////////////////////////////
@@ -1004,21 +970,23 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
}
final List<ObjectAction> contributeeActions = Lists.newArrayList();
- for (final ObjectAdapter serviceAdapter : getServiceAdapters()) {
- addContributeeActionsIfAny(serviceAdapter, contributeeActions);
+ for (final Object servicePojo : getServicePojos()) {
+ addContributeeActionsIfAny(servicePojo, contributeeActions);
}
return contributeeActions;
}
private void addContributeeActionsIfAny(
- final ObjectAdapter serviceAdapter,
+ final Object servicePojo,
final List<ObjectAction> contributeeActionsToAppendTo) {
- final ObjectSpecification specification = serviceAdapter.getSpecification();
+ final Class<?> serviceType = servicePojo.getClass();
+ final ObjectSpecification specification = getSpecificationLoader().loadSpecification(serviceType);
if (specification == this) {
return;
}
final List<ObjectAction> contributeeActions = Lists.newArrayList();
- final List<ObjectAction> serviceActions = specification.getObjectActions(ActionType.ALL, Contributed.INCLUDED, Filters.<ObjectAction>any());
+ final List<ObjectAction> serviceActions = specification.getObjectActions(ActionType.ALL, Contributed.INCLUDED, Filters
+ .<ObjectAction>any());
for (final ObjectAction serviceAction : serviceActions) {
if (isAlwaysHidden(serviceAction)) {
continue;
@@ -1031,12 +999,12 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
continue;
}
final ObjectActionImpl contributedAction = (ObjectActionImpl) serviceAction;
-
+
// see if qualifies by inspecting all parameters
final int contributeeParam = contributeeParameterMatchOf(contributedAction);
if (contributeeParam != -1) {
- ObjectActionContributee contributeeAction =
- new ObjectActionContributee(serviceAdapter, contributedAction, contributeeParam, this,
+ ObjectActionContributee contributeeAction =
+ new ObjectActionContributee(servicePojo, contributedAction, contributeeParam, this,
objectMemberDependencies);
facetProcessor.processMemberOrder(metadataProperties, contributeeAction);
contributeeActions.add(contributeeAction);
@@ -1044,7 +1012,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
}
contributeeActionsToAppendTo.addAll(contributeeActions);
}
-
+
private boolean isAlwaysHidden(final FacetHolder holder) {
final HiddenFacet hiddenFacet = holder.getFacet(HiddenFacet.class);
return hiddenFacet != null && hiddenFacet.when() == When.ALWAYS && hiddenFacet.where() == Where.ANYWHERE;
http://git-wip-us.apache.org/repos/asf/isis/blob/b8fb1747/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
index 6e21a37..6906338 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
@@ -46,7 +46,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
public class OneToManyAssociationContributee extends OneToManyAssociationImpl implements ContributeeMember {
- private final ObjectAdapter serviceAdapter;
+ private final Object servicePojo;
private final ObjectAction serviceAction;
@@ -68,13 +68,13 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
}
public OneToManyAssociationContributee(
- final ObjectAdapter serviceAdapter,
+ final Object servicePojo,
final ObjectActionImpl serviceAction,
final ObjectSpecification contributeeType,
final ObjectMemberDependencies objectMemberDependencies) {
super(serviceAction.getFacetedMethod(), typeOfSpec(serviceAction, objectMemberDependencies),
objectMemberDependencies);
- this.serviceAdapter = serviceAdapter;
+ this.servicePojo = servicePojo;
this.serviceAction = serviceAction;
//
@@ -97,13 +97,13 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
// CollectionAnnotationFacetFactory is also run against actions.
//
FacetUtil.copyFacets(serviceAction.getFacetedMethod(), facetHolder);
-
+
// calculate the identifier
final Identifier contributorIdentifier = serviceAction.getFacetedMethod().getIdentifier();
final String memberName = contributorIdentifier.getMemberName();
List<String> memberParameterNames = contributorIdentifier.getMemberParameterNames();
-
+
identifier = Identifier.actionIdentifier(contributeeType.getCorrespondingClass().getName(), memberName, memberParameterNames);
}
@@ -120,7 +120,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
@Override
public ObjectAdapter get(final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
- return serviceAction.execute(serviceAdapter, new ObjectAdapter[]{ownerAdapter}, interactionInitiatedBy);
+ return serviceAction.execute(getServiceAdapter(), new ObjectAdapter[]{ownerAdapter}, interactionInitiatedBy);
}
@Override
@@ -145,7 +145,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
final InteractionInitiatedBy interactionInitiatedBy,
Where where) {
final VisibilityContext<?> ic = ((ObjectMemberAbstract)serviceAction).createVisibleInteractionContext(
- serviceAdapter, interactionInitiatedBy, where);
+ getServiceAdapter(), interactionInitiatedBy, where);
ic.putContributee(0, contributee); // by definition, the contributee will be the first arg of the service action
return InteractionUtils.isVisibleResult(this, ic).createConsent();
}
@@ -156,7 +156,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
final InteractionInitiatedBy interactionInitiatedBy, final Where where) {
final ObjectMemberAbstract serviceAction = (ObjectMemberAbstract) this.serviceAction;
final UsabilityContext<?> ic = serviceAction.createUsableInteractionContext(
- serviceAdapter, interactionInitiatedBy, where);
+ getServiceAdapter(), interactionInitiatedBy, where);
ic.putContributee(0, contributee); // by definition, the contributee will be the first arg of the service action
return InteractionUtils.isUsableResult(this, ic).createConsent();
}
@@ -211,4 +211,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
facetHolder.removeFacet(facetType);
}
+ public ObjectAdapter getServiceAdapter() {
+ return getAdapterManager().adapterFor(servicePojo);
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b8fb1747/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
index 24f58ad..b57b7f1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
@@ -17,6 +17,7 @@
package org.apache.isis.core.metamodel.specloader.specimpl;
import java.util.List;
+
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.When;
import org.apache.isis.applib.annotation.Where;
@@ -43,9 +44,8 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
public class OneToOneAssociationContributee extends OneToOneAssociationImpl implements ContributeeMember {
- private final ObjectAdapter serviceAdapter;
+ private final Object servicePojo;
private final ObjectAction serviceAction;
-
/**
* Hold facets rather than delegate to the contributed action (different types might
@@ -56,12 +56,14 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
private final Identifier identifier;
public OneToOneAssociationContributee(
- final ObjectAdapter serviceAdapter,
- final ObjectActionImpl serviceAction,
+ final Object servicePojo,
+ final ObjectActionImpl serviceAction,
final ObjectSpecification contributeeType,
final ObjectMemberDependencies objectMemberDependencies) {
super(serviceAction.getFacetedMethod(), serviceAction.getReturnType(), objectMemberDependencies);
- this.serviceAdapter = serviceAdapter;
+
+ this.servicePojo = servicePojo;
+
this.serviceAction = serviceAction;
//
@@ -69,7 +71,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
//
final NotPersistedFacet notPersistedFacet = new NotPersistedFacetAbstract(this) {};
final DisabledFacet disabledFacet = disabledFacet();
-
+
FacetUtil.addFacet(notPersistedFacet);
FacetUtil.addFacet(disabledFacet);
@@ -86,7 +88,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
final Identifier contributorIdentifier = contributor.getIdentifier();
final String memberName = contributorIdentifier.getMemberName();
List<String> memberParameterNames = contributorIdentifier.getMemberParameterNames();
-
+
identifier = Identifier.actionIdentifier(contributeeType.getCorrespondingClass().getName(), memberName, memberParameterNames);
}
@@ -103,7 +105,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
@Override
public ObjectAdapter get(final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
- return serviceAction.execute(serviceAdapter, new ObjectAdapter[]{ownerAdapter}, interactionInitiatedBy);
+ return serviceAction.execute(getServiceAdapter(), new ObjectAdapter[]{ownerAdapter}, interactionInitiatedBy);
}
@Override
@@ -128,7 +130,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
final InteractionInitiatedBy interactionInitiatedBy,
Where where) {
final VisibilityContext<?> ic = ((ObjectMemberAbstract)serviceAction).createVisibleInteractionContext(
- serviceAdapter, interactionInitiatedBy, where);
+ getServiceAdapter(), interactionInitiatedBy, where);
ic.putContributee(0, contributee); // by definition, the contributee will be the first arg of the service action
return InteractionUtils.isVisibleResult(this, ic).createConsent();
}
@@ -138,7 +140,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
final ObjectAdapter contributee,
final InteractionInitiatedBy interactionInitiatedBy, final Where where) {
final UsabilityContext<?> ic = ((ObjectMemberAbstract)serviceAction).createUsableInteractionContext(
- serviceAdapter, interactionInitiatedBy, where);
+ getServiceAdapter(), interactionInitiatedBy, where);
ic.putContributee(0, contributee); // by definition, the contributee will be the first arg of the service action
return InteractionUtils.isUsableResult(this, ic).createConsent();
}
@@ -193,4 +195,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
facetHolder.removeFacet(facetType);
}
+ private ObjectAdapter getServiceAdapter() {
+ return getAdapterManager().adapterFor(servicePojo);
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b8fb1747/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
index a7f88c3..87a521b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
@@ -169,17 +169,6 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
return null;
}
- // /////////////////////////////////////////////////////
- // Service Actions
- // /////////////////////////////////////////////////////
-
- /**
- * Review: is it necessary to override for this subclass?
- */
- @Override
- public List<ObjectAction> getServiceActionsReturning(final List<ActionType> type) {
- return Collections.emptyList();
- }
http://git-wip-us.apache.org/repos/asf/isis/blob/b8fb1747/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index 8abeac7..3116df6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -100,11 +100,6 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
}
@Override
- public List<ObjectAction> getServiceActionsReturning(final List<ActionType> types) {
- return null;
- }
-
- @Override
public boolean isAbstract() {
return false;
}