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 2014/02/28 19:30:48 UTC
[2/2] git commit: ISIS-541: fixes for contributee associations for
hide/disable ...
ISIS-541: fixes for contributee associations for hide/disable ...
... on contributed actions.
This is the same stuff as in the contributee actions.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/29ec656e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/29ec656e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/29ec656e
Branch: refs/heads/master
Commit: 29ec656eb5c34665abcee748ca3f417c057ddb31
Parents: d8142cb
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Feb 28 18:30:30 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Feb 28 18:30:30 2014 +0000
----------------------------------------------------------------------
.../OneToManyAssociationContributee.java | 34 +++++++++++++++++---
.../OneToOneAssociationContributee.java | 28 ++++++++++++++--
2 files changed, 55 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/29ec656e/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 95046b0..6f73f11 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
@@ -23,7 +23,10 @@ import org.apache.isis.applib.annotation.Render;
import org.apache.isis.applib.annotation.When;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.filter.Filter;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
@@ -35,7 +38,11 @@ import org.apache.isis.core.metamodel.facets.notpersisted.NotPersistedFacet;
import org.apache.isis.core.metamodel.facets.notpersisted.NotPersistedFacetAbstract;
import org.apache.isis.core.metamodel.facets.typeof.TypeOfFacet;
import org.apache.isis.core.metamodel.facets.typeof.TypeOfFacetAbstract;
+import org.apache.isis.core.metamodel.interactions.InteractionUtils;
+import org.apache.isis.core.metamodel.interactions.UsabilityContext;
+import org.apache.isis.core.metamodel.interactions.VisibilityContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
import org.apache.isis.core.progmodel.facets.members.disabled.DisabledFacet;
@@ -45,7 +52,7 @@ import org.apache.isis.core.progmodel.facets.members.resolve.RenderFacetAnnotati
public class OneToManyAssociationContributee extends OneToManyAssociationImpl implements ContributeeMember {
private final ObjectAdapter serviceAdapter;
- private final ObjectAction objectAction;
+ private final ObjectAction serviceAction;
/**
@@ -58,7 +65,11 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
private static ObjectSpecification typeOfSpec(final ObjectActionImpl objectAction, ObjectMemberContext objectMemberContext) {
final TypeOfFacet actionTypeOfFacet = objectAction.getFacet(TypeOfFacet.class);
- return objectMemberContext.getSpecificationLookup().loadSpecification(actionTypeOfFacet.value());
+ SpecificationLoader specificationLookup = objectMemberContext.getSpecificationLookup();
+ // TODO: a bit of a hack; ought really to set up a fallback TypeOfFacetDefault which ensures that there is always
+ // a TypeOfFacet for any contributee associations created from contributed actions.
+ Class<? extends Object> cls = actionTypeOfFacet != null? actionTypeOfFacet.value(): Object.class;
+ return specificationLookup.loadSpecification(cls);
}
public OneToManyAssociationContributee(
@@ -68,7 +79,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
final ObjectMemberContext objectMemberContext) {
super(serviceAction.getFacetedMethod(), typeOfSpec(serviceAction, objectMemberContext), objectMemberContext);
this.serviceAdapter = serviceAdapter;
- this.objectAction = serviceAction;
+ this.serviceAction = serviceAction;
// copy over facets from contributed to own.
FacetUtil.copyFacets(serviceAction.getFacetedMethod(), facetHolder);
@@ -102,7 +113,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
@Override
public ObjectAdapter get(final ObjectAdapter ownerAdapter) {
- return objectAction.execute(serviceAdapter, new ObjectAdapter[]{ownerAdapter});
+ return serviceAction.execute(serviceAdapter, new ObjectAdapter[]{ownerAdapter});
}
@Override
@@ -110,6 +121,21 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
return identifier;
}
+ @Override
+ public Consent isVisible(final AuthenticationSession session, final ObjectAdapter contributee, Where where) {
+ final VisibilityContext<?> ic = serviceAction.createVisibleInteractionContext(session, InteractionInvocationMethod.BY_USER, serviceAdapter, where);
+ ic.putContributee(0, contributee); // by definition, the contributee will be the first arg of the service action
+ return InteractionUtils.isVisibleResult(this, ic).createConsent();
+ }
+
+ @Override
+ public Consent isUsable(final AuthenticationSession session, final ObjectAdapter contributee, Where where) {
+ final UsabilityContext<?> ic = serviceAction.createUsableInteractionContext(session, InteractionInvocationMethod.BY_USER, serviceAdapter, where);
+ ic.putContributee(0, contributee); // by definition, the contributee will be the first arg of the service action
+ return InteractionUtils.isUsableResult(this, ic).createConsent();
+ }
+
+
// //////////////////////////////////////
// FacetHolder
// //////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/29ec656e/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 1d1ec01..d78efcd 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
@@ -22,7 +22,10 @@ import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.When;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.filter.Filter;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
@@ -30,6 +33,9 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.MultiTypedFacet;
import org.apache.isis.core.metamodel.facets.notpersisted.NotPersistedFacet;
import org.apache.isis.core.metamodel.facets.notpersisted.NotPersistedFacetAbstract;
+import org.apache.isis.core.metamodel.interactions.InteractionUtils;
+import org.apache.isis.core.metamodel.interactions.UsabilityContext;
+import org.apache.isis.core.metamodel.interactions.VisibilityContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
@@ -39,7 +45,7 @@ import org.apache.isis.core.progmodel.facets.members.disabled.DisabledFacetImpl;
public class OneToOneAssociationContributee extends OneToOneAssociationImpl implements ContributeeMember {
private final ObjectAdapter serviceAdapter;
- private final ObjectAction objectAction;
+ private final ObjectAction serviceAction;
/**
@@ -57,7 +63,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
final ObjectMemberContext objectMemberContext) {
super(serviceAction.getFacetedMethod(), serviceAction.getReturnType(), objectMemberContext);
this.serviceAdapter = serviceAdapter;
- this.objectAction = serviceAction;
+ this.serviceAction = serviceAction;
// copy over facets from contributed to own.
FacetUtil.copyFacets(serviceAction.getFacetedMethod(), facetHolder);
@@ -89,7 +95,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
@Override
public ObjectAdapter get(final ObjectAdapter ownerAdapter) {
- return objectAction.execute(serviceAdapter, new ObjectAdapter[]{ownerAdapter});
+ return serviceAction.execute(serviceAdapter, new ObjectAdapter[]{ownerAdapter});
}
@Override
@@ -97,6 +103,22 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
return identifier;
}
+
+ @Override
+ public Consent isVisible(final AuthenticationSession session, final ObjectAdapter contributee, Where where) {
+ final VisibilityContext<?> ic = serviceAction.createVisibleInteractionContext(session, InteractionInvocationMethod.BY_USER, serviceAdapter, where);
+ ic.putContributee(0, contributee); // by definition, the contributee will be the first arg of the service action
+ return InteractionUtils.isVisibleResult(this, ic).createConsent();
+ }
+
+ @Override
+ public Consent isUsable(final AuthenticationSession session, final ObjectAdapter contributee, Where where) {
+ final UsabilityContext<?> ic = serviceAction.createUsableInteractionContext(session, InteractionInvocationMethod.BY_USER, serviceAdapter, where);
+ ic.putContributee(0, contributee); // by definition, the contributee will be the first arg of the service action
+ return InteractionUtils.isUsableResult(this, ic).createConsent();
+ }
+
+
// //////////////////////////////////////
// FacetHolder
// //////////////////////////////////////