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
     // //////////////////////////////////////