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/03 14:33:10 UTC
[79/87] [abbrv] isis git commit: ISIS-1044: adding
interactionInitiatedBy as param to all interactions with metamodel members.
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index e5599f0..c79e957 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -30,7 +30,7 @@ import org.apache.isis.applib.profiles.Localization;
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.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.consent.InteractionResult;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
@@ -218,7 +218,7 @@ public interface ObjectSpecification extends Specification, ObjectActionContaine
* Create an {@link InteractionContext} representing an attempt to read the
* object's title.
*/
- ObjectTitleContext createTitleInteractionContext(AuthenticationSession session, InteractionInvocationMethod invocationMethod, ObjectAdapter targetObjectAdapter);
+ ObjectTitleContext createTitleInteractionContext(AuthenticationSession session, InteractionInitiatedBy invocationMethod, ObjectAdapter targetObjectAdapter);
// //////////////////////////////////////////////////////////////
// ValidityContext, Validity
@@ -229,19 +229,19 @@ public interface ObjectSpecification extends Specification, ObjectActionContaine
* object.
* @param deploymentCategory TODO
*/
- ObjectValidityContext createValidityInteractionContext(DeploymentCategory deploymentCategory, AuthenticationSession session, InteractionInvocationMethod invocationMethod, ObjectAdapter targetObjectAdapter);
+ ObjectValidityContext createValidityInteractionContext(DeploymentCategory deploymentCategory, AuthenticationSession session, InteractionInitiatedBy invocationMethod, ObjectAdapter targetObjectAdapter);
/**
* Determines whether the specified object is in a valid state (for example,
* so can be persisted); represented as a {@link Consent}.
*/
- Consent isValid(ObjectAdapter adapter);
+ Consent isValid(ObjectAdapter adapter, final InteractionInitiatedBy interactionInitiatedBy);
/**
* Determines whether the specified object is in a valid state (for example,
* so can be persisted); represented as a {@link InteractionResult}.
*/
- InteractionResult isValidResult(ObjectAdapter adapter);
+ InteractionResult isValidResult(ObjectAdapter adapter, final InteractionInitiatedBy interactionInitiatedBy);
// //////////////////////////////////////////////////////////////
// Facets
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/CurrentHolder.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/CurrentHolder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/CurrentHolder.java
index 3389610..826da6c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/CurrentHolder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/CurrentHolder.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.spec.feature;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
/**
* Mix-in interface for {@link ObjectFeature}s that reference or otherwise
@@ -41,6 +42,6 @@ public interface CurrentHolder {
* For example, if this is an {@link OneToOneAssociation}, then returns the
* referenced object.
*/
- ObjectAdapter get(final ObjectAdapter owner);
+ ObjectAdapter get(final ObjectAdapter owner, final InteractionInitiatedBy interactionInitiatedBy);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/MutableCurrentHolder.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/MutableCurrentHolder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/MutableCurrentHolder.java
index 0487c32..5469854 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/MutableCurrentHolder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/MutableCurrentHolder.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.spec.feature;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
/**
* Mix-in interface for {@link ObjectAction}s that reference or otherwise
@@ -41,11 +42,13 @@ public interface MutableCurrentHolder extends CurrentHolder {
* <p>
* For example, if this is a {@link OneToOneAssociation}, then updates the
* object referenced .
- *
- * @param owner
+ * @param owner
* @param newValue
- * - the new value, or <tt>null</tt>
+ * @param interactionInitiatedBy
*/
- void set(final ObjectAdapter owner, final ObjectAdapter newValue);
+ void set(
+ final ObjectAdapter owner,
+ final ObjectAdapter newValue,
+ final InteractionInitiatedBy interactionInitiatedBy);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
index ea308cf..594c8c8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
@@ -19,12 +19,15 @@ package org.apache.isis.core.metamodel.spec.feature;
import java.util.List;
+import com.google.common.base.Functions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Strings;
+import com.google.common.collect.Lists;
+
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.ActionSemantics;
import org.apache.isis.applib.annotation.Bulk;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPosition;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.filter.Filter;
import org.apache.isis.applib.value.Blob;
@@ -33,7 +36,8 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.lang.StringFunctions;
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.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetFilters;
import org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet;
@@ -41,19 +45,13 @@ import org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFace
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet;
+import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPosition;
import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
import org.apache.isis.core.metamodel.facets.object.wizard.WizardFacet;
-import org.apache.isis.core.metamodel.interactions.AccessContext;
-import org.apache.isis.core.metamodel.interactions.ActionInvocationContext;
import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
import org.apache.isis.core.metamodel.spec.ActionType;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import com.google.common.base.Functions;
-import com.google.common.base.Predicate;
-import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
-
public interface ObjectAction extends ObjectMember {
// //////////////////////////////////////////////////////
@@ -106,38 +104,29 @@ public interface ObjectAction extends ObjectMember {
final ObjectAdapter target,
final ObjectAdapter[] parameters,
final AuthenticationSession authenticationSession,
- final Where where) throws AuthorizationException;
+ final Where where, final InteractionInitiatedBy interactionInitiatedBy) throws AuthorizationException;
/**
* Invokes the action's method on the target object given the specified set
* of parameters.
*/
- ObjectAdapter execute(ObjectAdapter target, ObjectAdapter[] parameters);
+ ObjectAdapter execute(
+ ObjectAdapter target,
+ ObjectAdapter[] parameters,
+ final InteractionInitiatedBy interactionInitiatedBy);
// //////////////////////////////////////////////////////////////////
// valid
// //////////////////////////////////////////////////////////////////
-/**
- * Creates an {@link ActionInvocationContext interaction context}
- * representing an attempt to invoke this action.
- *
- * <p>
- * Typically it is easier to just call
- * {@link #isProposedArgumentSetValid(ObjectAdapter, ObjectAdapter[])
- *
- * @link #isProposedArgumentSetValidResultSet(ObjectAdapter,
- * ObjectAdapter[])}; this is provided as API for symmetry with
- * interactions (such as {@link AccessContext} accesses) have no
- * corresponding vetoing methods.
- */
- public ActionInvocationContext createActionInvocationInteractionContext(AuthenticationSession session,
- InteractionInvocationMethod invocationMethod, ObjectAdapter targetObject, ObjectAdapter[] proposedArguments);
/**
* Whether the provided argument set is valid, represented as a {@link Consent}.
*/
- Consent isProposedArgumentSetValid(ObjectAdapter object, ObjectAdapter[] proposedArguments);
+ Consent isProposedArgumentSetValid(
+ ObjectAdapter object,
+ ObjectAdapter[] proposedArguments,
+ final InteractionInitiatedBy interactionInitiatedBy);
// //////////////////////////////////////////////////////
// Parameters (declarative)
@@ -197,7 +186,7 @@ public interface ObjectAction extends ObjectMember {
ObjectAdapter[][] getChoices(
ObjectAdapter target,
final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory);
+ final DeploymentCategory deploymentCategory, final InteractionInitiatedBy interactionInitiatedBy);
// //////////////////////////////////////////////////////
// Utils
@@ -280,16 +269,21 @@ public interface ObjectAction extends ObjectMember {
private Predicates() {
}
- public static Predicate<ObjectAction> dynamicallyVisible(final AuthenticationSession session,
- final ObjectAdapter target, final Where where) {
+ // UNUSED?
+ public static Predicate<ObjectAction> dynamicallyVisible(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
return org.apache.isis.applib.filter.Filters
- .asPredicate(Filters.dynamicallyVisible(session, target, where));
+ .asPredicate(Filters.dynamicallyVisible(target, interactionInitiatedBy, where));
}
+ // UNUSED?
public static Predicate<ObjectAction> withId(final String actionId) {
return org.apache.isis.applib.filter.Filters.asPredicate(Filters.withId(actionId));
}
+ // UNUSED?
public static Predicate<ObjectAction> withNoValidationRules() {
return org.apache.isis.applib.filter.Filters.asPredicate(Filters.withNoValidationRules());
}
@@ -302,10 +296,12 @@ public interface ObjectAction extends ObjectMember {
return org.apache.isis.applib.filter.Filters.asPredicate(Filters.bulk());
}
+ // UNUSED?
public static Predicate<ObjectAction> notBulkOnly() {
return org.apache.isis.applib.filter.Filters.asPredicate(Filters.notBulkOnly());
}
+ // UNUSED?
public static Predicate<ObjectAction> memberOrderOf(ObjectAssociation association) {
return org.apache.isis.applib.filter.Filters.asPredicate(Filters.memberOrderOf(association));
}
@@ -324,12 +320,14 @@ public interface ObjectAction extends ObjectMember {
* @deprecated -use {@link com.google.common.base.Predicate equivalent}
*/
@Deprecated
- public static Filter<ObjectAction> dynamicallyVisible(final AuthenticationSession session,
- final ObjectAdapter target, final Where where) {
+ public static Filter<ObjectAction> dynamicallyVisible(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
return new Filter<ObjectAction>() {
@Override
public boolean accept(final ObjectAction objectAction) {
- final Consent visible = objectAction.isVisible(session, target, where);
+ final Consent visible = objectAction.isVisible(target, interactionInitiatedBy, where);
return visible.isAllowed();
}
};
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
index 54a3b8c..6503304 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
@@ -25,7 +25,7 @@ import org.apache.isis.applib.filter.Filter;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
import org.apache.isis.core.metamodel.interactions.ActionArgumentContext;
@@ -40,7 +40,7 @@ public interface ObjectActionParameter extends ObjectFeature, CurrentHolder {
*
* <p>
* Either this or {@link #isCollection()} will be true.
- *
+ *
* <p>
* Design note: modelled after {@link ObjectAssociation#isNotCollection()}
*/
@@ -88,7 +88,12 @@ public interface ObjectActionParameter extends ObjectFeature, CurrentHolder {
@Override
String getName();
- ActionArgumentContext createProposedArgumentInteractionContext(AuthenticationSession session, InteractionInvocationMethod invocationMethod, ObjectAdapter targetObject, ObjectAdapter[] args, int position);
+ // internal API
+ ActionArgumentContext createProposedArgumentInteractionContext(
+ final ObjectAdapter targetObject,
+ final ObjectAdapter[] args,
+ final int position,
+ final InteractionInitiatedBy interactionInitiatedBy);
/**
@@ -104,8 +109,7 @@ public interface ObjectActionParameter extends ObjectFeature, CurrentHolder {
ObjectAdapter[] getAutoComplete(
final ObjectAdapter adapter,
final String searchArg,
- final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory);
+ final InteractionInitiatedBy interactionInitiatedBy);
@@ -123,8 +127,7 @@ public interface ObjectActionParameter extends ObjectFeature, CurrentHolder {
ObjectAdapter[] getChoices(
final ObjectAdapter adapter,
final ObjectAdapter[] argumentsIfAvailable,
- final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory);
+ final InteractionInitiatedBy interactionInitiatedBy);
ObjectAdapter getDefault(ObjectAdapter adapter);
@@ -135,9 +138,13 @@ public interface ObjectActionParameter extends ObjectFeature, CurrentHolder {
*
* @param adapter
* @param proposedValue
+ * @param interactionInitiatedBy
* @return
*/
- String isValid(ObjectAdapter adapter, Object proposedValue, Localization localization);
+ String isValid(
+ ObjectAdapter adapter,
+ Object proposedValue,
+ final InteractionInitiatedBy interactionInitiatedBy, Localization localization);
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
index dd69917..7e76770 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
@@ -34,6 +34,7 @@ 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.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
@@ -53,7 +54,7 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
* For example, if this is an {@link OneToOneAssociation}, then returns the
* referenced object.
*/
- ObjectAdapter get(final ObjectAdapter owner);
+ ObjectAdapter get(final ObjectAdapter owner, final InteractionInitiatedBy interactionInitiatedBy);
/**
* Get the name for the business key, if one has been specified.
@@ -80,9 +81,8 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
* user can choose from.
*/
public ObjectAdapter[] getChoices(
- ObjectAdapter object,
- final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory);
+ final ObjectAdapter object,
+ final InteractionInitiatedBy interactionInitiatedBy);
/**
@@ -98,7 +98,7 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
final ObjectAdapter object,
final String searchArg,
final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory);
+ final DeploymentCategory deploymentCategory, final InteractionInitiatedBy interactionInitiatedBy);
int getAutoCompleteMinLength();
@@ -112,7 +112,7 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
* Returns <code>true</code> if this field on the specified object is deemed
* to be empty, or has no content.
*/
- boolean isEmpty(ObjectAdapter target);
+ boolean isEmpty(ObjectAdapter target, final InteractionInitiatedBy interactionInitiatedBy);
/**
* Determines if this field must be complete before the object is in a valid
@@ -173,30 +173,35 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
/**
* Only fields that are for reference properties (ie 1:1 associations)
*/
+ // UNUSED ?
public final static Predicate<ObjectAssociation> REFERENCE_PROPERTIES =
org.apache.isis.applib.filter.Filters.asPredicate(Filters.REFERENCE_PROPERTIES);
/**
* Only fields that are for properties (ie 1:1 associations)
*/
+ // UNUSED ?
public final static Predicate<ObjectAssociation> WHERE_VISIBLE_IN_COLLECTION_TABLE =
org.apache.isis.applib.filter.Filters.asPredicate(Filters.WHERE_VISIBLE_IN_COLLECTION_TABLE);
/**
* Only fields that are for properties (ie 1:1 associations)
*/
+ // UNUSED ?
public final static Predicate<ObjectAssociation> WHERE_VISIBLE_IN_STANDALONE_TABLE =
org.apache.isis.applib.filter.Filters.asPredicate(Filters.WHERE_VISIBLE_IN_STANDALONE_TABLE);
/**
* All fields (that is, excludes out nothing).
*/
+ // UNUSED ?
public final static Predicate<ObjectAssociation> ALL =
org.apache.isis.applib.filter.Filters.asPredicate(Filters.ALL);
/**
* Only fields that are for collections (ie 1:m associations)
*/
+ // UNUSED ?
public final static Predicate<ObjectAssociation> COLLECTIONS =
org.apache.isis.applib.filter.Filters.asPredicate(Filters.COLLECTIONS);
@@ -207,16 +212,28 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
public static final Predicate<ObjectAssociation> VISIBLE_AT_LEAST_SOMETIMES =
org.apache.isis.applib.filter.Filters.asPredicate(Filters.VISIBLE_AT_LEAST_SOMETIMES);
+ // UNUSED ?
public static final Predicate<ObjectAssociation> staticallyVisible(final Where context) {
return org.apache.isis.applib.filter.Filters.asPredicate(Filters.staticallyVisible(context));
}
- public static final Predicate<ObjectAssociation> dynamicallyVisible(final AuthenticationSession session, final ObjectAdapter target, final Where where) {
- return org.apache.isis.applib.filter.Filters.asPredicate(Filters.dynamicallyVisible(session, target, where));
+ // UNUSED ?
+ public static final Predicate<ObjectAssociation> dynamicallyVisible(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.dynamicallyVisible(target,
+ interactionInitiatedBy, where
+ ));
}
- public static final Predicate<ObjectAssociation> enabled(final AuthenticationSession session, final ObjectAdapter adapter, final Where where) {
- return org.apache.isis.applib.filter.Filters.asPredicate(Filters.enabled(session, adapter, where));
+ public static final Predicate<ObjectAssociation> enabled(
+ final ObjectAdapter adapter,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.enabled(adapter,
+ interactionInitiatedBy, where
+ ));
}
}
@@ -347,11 +364,14 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
* @deprecated -use {@link com.google.common.base.Predicate equivalent}
*/
@Deprecated
- public static Filter<ObjectAssociation> dynamicallyVisible(final AuthenticationSession session, final ObjectAdapter target, final Where where) {
+ public static Filter<ObjectAssociation> dynamicallyVisible(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
return new Filter<ObjectAssociation>() {
@Override
public boolean accept(final ObjectAssociation objectAssociation) {
- final Consent visible = objectAssociation.isVisible(session, target, where);
+ final Consent visible = objectAssociation.isVisible(target, interactionInitiatedBy, where);
return visible.isAllowed();
}
};
@@ -361,11 +381,14 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
* @deprecated -use {@link com.google.common.base.Predicate equivalent}
*/
@Deprecated
- public static Filter<ObjectAssociation> enabled(final AuthenticationSession session, final ObjectAdapter adapter, final Where where) {
+ public static Filter<ObjectAssociation> enabled(
+ final ObjectAdapter adapter,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
return new Filter<ObjectAssociation>() {
@Override
public boolean accept(final ObjectAssociation objectAssociation) {
- final Consent usable = objectAssociation.isUsable(session, adapter, where);
+ final Consent usable = objectAssociation.isUsable(adapter, interactionInitiatedBy, where);
return usable.isAllowed();
}
};
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFilters.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFilters.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFilters.java
index 68500be..a0e0b5d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFilters.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFilters.java
@@ -18,8 +18,8 @@ package org.apache.isis.core.metamodel.spec.feature;
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.InteractionInitiatedBy;
@Deprecated
public class ObjectAssociationFilters {
@@ -28,66 +28,81 @@ public class ObjectAssociationFilters {
* @deprecated - use {@link ObjectAssociation.Filters#PROPERTIES}
*/
@Deprecated
+ // UNUSED?
public final static Filter<ObjectAssociation> PROPERTIES = ObjectAssociation.Filters.PROPERTIES;
/**
* @deprecated - use {@link ObjectAssociation.Filters#REFERENCE_PROPERTIES}
*/
@Deprecated
+ // UNUSED?
public final static Filter<ObjectAssociation> REFERENCE_PROPERTIES = ObjectAssociation.Filters.REFERENCE_PROPERTIES;
/**
* @deprecated - use {@link ObjectAssociation.Filters#WHERE_VISIBLE_IN_COLLECTION_TABLE}
*/
@Deprecated
+ // UNUSED?
public final static Filter<ObjectAssociation> WHERE_VISIBLE_IN_COLLECTION_TABLE = ObjectAssociation.Filters.WHERE_VISIBLE_IN_COLLECTION_TABLE;
/**
* @deprecated - use {@link ObjectAssociation.Filters#WHERE_VISIBLE_IN_STANDALONE_TABLE}
*/
@Deprecated
+ // UNUSED?
public final static Filter<ObjectAssociation> WHERE_VISIBLE_IN_STANDALONE_TABLE = ObjectAssociation.Filters.WHERE_VISIBLE_IN_STANDALONE_TABLE;
/**
- * @deprecated - use {@link ObjectAssociation.Filters#ALL}
+ * @deprecated
*/
@Deprecated
+ // UNUSED ?
public final static Filter<ObjectAssociation> ALL = ObjectAssociation.Filters.ALL;
/**
- * @deprecated - use {@link ObjectAssociation.Filters#COLLECTIONS}
+ * @deprecated
*/
@Deprecated
+ // UNUSED ?
public final static Filter<ObjectAssociation> COLLECTIONS = ObjectAssociation.Filters.COLLECTIONS;
/**
- * @deprecated - use {@link ObjectAssociation.Filters#VISIBLE_AT_LEAST_SOMETIMES}
+ * @deprecated
*/
@Deprecated
+ // UNUSED ?
public static final Filter<ObjectAssociation> VISIBLE_AT_LEAST_SOMETIMES = ObjectAssociation.Filters.VISIBLE_AT_LEAST_SOMETIMES;
/**
- * @deprecated - use {@link ObjectAssociation.Filters#dynamicallyVisible(AuthenticationSession, ObjectAdapter, Where)}
+ * @deprecated
*/
@Deprecated
+ // UNUSED ?
public static final Filter<ObjectAssociation> staticallyVisible(final Where context) {
return ObjectAssociation.Filters.staticallyVisible(context);
}
/**
- * @deprecated - use {@link ObjectAssociation.Filters#dynamicallyVisible(AuthenticationSession, ObjectAdapter, Where)}
+ * @deprecated
*/
+ // UNUSED ?
@Deprecated
- public static Filter<ObjectAssociation> dynamicallyVisible(final AuthenticationSession session, final ObjectAdapter target, final Where where) {
- return ObjectAssociation.Filters.dynamicallyVisible(session, target, where);
+ public static Filter<ObjectAssociation> dynamicallyVisible(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
+ return ObjectAssociation.Filters.dynamicallyVisible(target, interactionInitiatedBy, where);
}
/**
- * @deprecated - use {@link ObjectAssociation.Filters#enabled(AuthenticationSession, ObjectAdapter, Where)}
+ * @deprecated
*/
@Deprecated
- public static Filter<ObjectAssociation> enabled(final AuthenticationSession session, final ObjectAdapter adapter, final Where where) {
- return ObjectAssociation.Filters.enabled(session, adapter, where);
+ public static Filter<ObjectAssociation> enabled(
+ final ObjectAdapter adapter,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
+ return ObjectAssociation.Filters.enabled(adapter, interactionInitiatedBy, where);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
index 71f74f7..277c734 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
@@ -21,15 +21,10 @@ package org.apache.isis.core.metamodel.spec.feature;
import org.apache.isis.applib.annotation.When;
import org.apache.isis.applib.annotation.Where;
-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.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
-import org.apache.isis.core.metamodel.interactions.AccessContext;
-import org.apache.isis.core.metamodel.interactions.InteractionContext;
-import org.apache.isis.core.metamodel.interactions.UsabilityContext;
-import org.apache.isis.core.metamodel.interactions.VisibilityContext;
/**
* Provides reflective access to an action or a field on a domain object.
@@ -62,54 +57,35 @@ public interface ObjectMember extends ObjectFeature {
*/
boolean isAlwaysHidden();
- /**
- * Create an {@link InteractionContext} to represent an attempt to view this
- * member (that is, to check if it is visible or not).
- *
- * <p>
- * Typically it is easier to just call
- * {@link #isVisible(AuthenticationSession, ObjectAdapter, Where)}; this is
- * provided as API for symmetry with interactions (such as
- * {@link AccessContext} accesses) have no corresponding vetoing methods.
- */
- VisibilityContext<?> createVisibleInteractionContext(AuthenticationSession session, InteractionInvocationMethod invocationMethod, ObjectAdapter targetObjectAdapter, Where where);
/**
* Determines if this member is visible, represented as a {@link Consent}.
* @param target
* may be <tt>null</tt> if just checking for authorization.
- * @param where
- * the member is being rendered in the UI
+ * @param interactionInitiatedBy
+ * @param where
*/
- Consent isVisible(AuthenticationSession session, ObjectAdapter target, Where where);
+ Consent isVisible(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where);
// /////////////////////////////////////////////////////////////
// Disabled (or enabled)
// /////////////////////////////////////////////////////////////
/**
- * Create an {@link InteractionContext} to represent an attempt to
- * use this member (that is, to check if it is usable or not).
- *
- * <p>
- * Typically it is easier to just call
- * {@link #isUsable(AuthenticationSession, ObjectAdapter, Where)}; this is
- * provided as API for symmetry with interactions (such as
- * {@link AccessContext} accesses) have no corresponding vetoing methods.
- */
- UsabilityContext<?> createUsableInteractionContext(AuthenticationSession session, InteractionInvocationMethod invocationMethod, ObjectAdapter target, Where where);
-
- /**
* Determines whether this member is usable, represented as a
* {@link Consent}.
* @param target
* may be <tt>null</tt> if just checking for authorization.
- * @param where
- * the member is being rendered in the UI
- *
- * @see #isUsableResult(AuthenticationSession, ObjectAdapter)
+ * @param interactionInitiatedBy
+ * @param where
*/
- Consent isUsable(AuthenticationSession session, ObjectAdapter target, Where where);
+ Consent isUsable(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where);
// /////////////////////////////////////////////////////////////
// isAssociation, isAction
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToManyAssociation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToManyAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToManyAssociation.java
index 0abc308..a4f5c81 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToManyAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToManyAssociation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.spec.feature;
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.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.interactions.AccessContext;
import org.apache.isis.core.metamodel.interactions.InteractionContext;
import org.apache.isis.core.metamodel.interactions.ValidityContext;
@@ -33,29 +33,21 @@ public interface OneToManyAssociation extends ObjectAssociation, OneToManyFeatur
// add
// /////////////////////////////////////////////////////////////
- /**
- * Creates an {@link InteractionContext} that represents validation of a
- * candidate object to be added to the collection.
- *
- * <p>
- * Typically it is easier to just call
- * {@link #isValidToAdd(ObjectAdapter, ObjectAdapter)}; this is
- * provided as API for symmetry with interactions (such as
- * {@link AccessContext} accesses) have no corresponding vetoing methods.
- */
- public ValidityContext<?> createValidateAddInteractionContext(AuthenticationSession session, InteractionInvocationMethod invocationMethod, ObjectAdapter owningObjectAdapter, ObjectAdapter proposedObjectToAdd);
/**
* Determines if the specified element can be added to the collection field,
* represented as a {@link Consent}.
*
* <p>
- * If allowed the {@link #addElement(ObjectAdapter, ObjectAdapter) add}
+ * If allowed the {@link #addElement(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy) add}
* method can be called with the same parameters.
*
- * @see #addElement(ObjectAdapter, ObjectAdapter)
+ * @see #addElement(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy)
*/
- Consent isValidToAdd(ObjectAdapter owningObjectAdapter, ObjectAdapter proposedObjectToAdd);
+ Consent isValidToAdd(
+ ObjectAdapter owningObjectAdapter,
+ ObjectAdapter proposedObjectToAdd,
+ final InteractionInitiatedBy interactionInitiatedBy);
/**
* Add the specified element to this collection field in the specified
@@ -67,35 +59,30 @@ public interface OneToManyAssociation extends ObjectAssociation, OneToManyFeatur
*
* @see #isValidToAdd(ObjectAdapter, ObjectAdapter)
*/
- void addElement(ObjectAdapter owningObjectAdapter, ObjectAdapter objectToAdd);
+ void addElement(
+ ObjectAdapter owningObjectAdapter,
+ ObjectAdapter objectToAdd,
+ final InteractionInitiatedBy interactionInitiatedBy);
// /////////////////////////////////////////////////////////////
// remove
// /////////////////////////////////////////////////////////////
- /**
- * Creates an {@link InteractionContext} that represents validation of a
- * candidate object to be removed from the collection.
- *
- * <p>
- * Typically it is easier to just call
- * {@link #isValidToAdd(ObjectAdapter, ObjectAdapter)}; this is
- * provided as API for symmetry with interactions (such as
- * {@link AccessContext} accesses) have no corresponding vetoing methods.
- */
- ValidityContext<?> createValidateRemoveInteractionContext(AuthenticationSession session, InteractionInvocationMethod invocationMethod, ObjectAdapter owningObjectAdapter, ObjectAdapter proposedObjectToRemove);
/**
* Determines if the specified element can be removed from the collection
* field, represented as a {@link Consent}.
*
* <p>
- * If allowed the {@link #removeElement(ObjectAdapter, ObjectAdapter)
+ * If allowed the {@link #removeElement(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy)
* remove} method can be called with the same parameters.
*
- * @see #removeElement(ObjectAdapter, ObjectAdapter)
+ * @see #removeElement(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy)
*/
- Consent isValidToRemove(ObjectAdapter owningObjectAdapter, ObjectAdapter proposedObjectToRemove);
+ Consent isValidToRemove(
+ ObjectAdapter owningObjectAdapter,
+ ObjectAdapter proposedObjectToRemove,
+ final InteractionInitiatedBy interactionInitiatedBy);
/**
* Remove the specified element from this collection field in the specified
@@ -107,7 +94,10 @@ public interface OneToManyAssociation extends ObjectAssociation, OneToManyFeatur
*
* @see #isValidToRemove(ObjectAdapter, ObjectAdapter)
*/
- void removeElement(ObjectAdapter owningObjectAdapter, ObjectAdapter oObjectToRemove);
+ void removeElement(
+ ObjectAdapter owningObjectAdapter,
+ ObjectAdapter oObjectToRemove,
+ final InteractionInitiatedBy interactionInitiatedBy);
// /////////////////////////////////////////////////////////////
// clear
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java
index 0d8fcce..3e8e3ea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java
@@ -21,14 +21,9 @@ package org.apache.isis.core.metamodel.spec.feature;
import com.google.common.base.Function;
-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.interactions.AccessContext;
-import org.apache.isis.core.metamodel.interactions.InteractionContext;
-import org.apache.isis.core.metamodel.interactions.PropertyAccessContext;
-import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
/**
@@ -46,30 +41,16 @@ public interface OneToOneAssociation extends ObjectAssociation, OneToOneFeature,
*/
void initAssociation(ObjectAdapter inObject, ObjectAdapter associate);
- /**
- * Creates an {@link InteractionContext} that represents access to this
- * property.
- */
- public PropertyAccessContext createAccessInteractionContext(AuthenticationSession session, InteractionInvocationMethod interactionMethod, ObjectAdapter targetObjectAdapter);
- /**
- * Creates an {@link InteractionContext} that represents validation of a
- * proposed new value for the property.
- *
- * <p>
- * Typically it is easier to just call
- * {@link #isAssociationValid(ObjectAdapter, ObjectAdapter)} or
- * {@link #isAssociationValidResult(ObjectAdapter, ObjectAdapter)}; this is
- * provided as API for symmetry with interactions (such as
- * {@link AccessContext} accesses) have no corresponding vetoing methods.
- */
- public ValidityContext<?> createValidateInteractionContext(AuthenticationSession session, InteractionInvocationMethod interactionMethod, ObjectAdapter targetObjectAdapter, ObjectAdapter proposedValue);
/**
* Determines if the specified reference is valid for setting this field in
* the specified object, represented as a {@link Consent}.
*/
- Consent isAssociationValid(ObjectAdapter inObject, ObjectAdapter associate);
+ public Consent isAssociationValid(
+ final ObjectAdapter targetAdapter,
+ final ObjectAdapter proposedAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy);
/**
* Set up the association represented by this field in the specified object
@@ -79,21 +60,24 @@ public interface OneToOneAssociation extends ObjectAssociation, OneToOneFeature,
* object to this logical state the <code>initAssociation</code> method
* should be used on each of the objects.
*
- * @deprecated - see {@link #set(ObjectAdapter, ObjectAdapter)}
+ * @deprecated - see {@link MutableCurrentHolder#set(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy)}
* @see #initAssociation(ObjectAdapter, ObjectAdapter)
*/
@Deprecated
- void setAssociation(ObjectAdapter inObject, ObjectAdapter associate);
+ void setAssociation(
+ ObjectAdapter inObject,
+ ObjectAdapter associate,
+ final InteractionInitiatedBy interactionInitiatedBy);
/**
* Clear this reference field (make it <code>null</code>) in the specified
* object, and remove any association back-link.
*
- * @see #setAssociation(ObjectAdapter, ObjectAdapter)
- * @deprecated - see {@link #set(ObjectAdapter, ObjectAdapter)}
+ * @see #setAssociation(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy)
+ * @deprecated - see {@link MutableCurrentHolder#set(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy)}
*/
@Deprecated
- void clearAssociation(ObjectAdapter inObject);
+ void clearAssociation(ObjectAdapter inObject, final InteractionInitiatedBy interactionInitiatedBy);
// //////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/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 cdeb1a1..fc2c9cc 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
@@ -34,7 +34,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.lang.ObjectExtensions;
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.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -160,15 +160,22 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
@Override
- public Consent isVisible(final AuthenticationSession session, final ObjectAdapter contributee, Where where) {
- final VisibilityContext<?> ic = serviceAction.createVisibleInteractionContext(session, InteractionInvocationMethod.BY_USER, serviceAdapter, where);
+ public Consent isVisible(
+ final ObjectAdapter contributee,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ Where where) {
+ final VisibilityContext<?> ic = serviceAction.createVisibleInteractionContext(serviceAdapter,
+ interactionInitiatedBy, where);
ic.putContributee(this.contributeeParam, contributee);
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);
+ public Consent isUsable(
+ final ObjectAdapter contributee,
+ final InteractionInitiatedBy interactionInitiatedBy, final Where where) {
+ final UsabilityContext<?> ic = serviceAction.createUsableInteractionContext(serviceAdapter,
+ interactionInitiatedBy, where);
ic.putContributee(this.contributeeParam, contributee);
return InteractionUtils.isUsableResult(this, ic).createConsent();
}
@@ -183,19 +190,25 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
public ObjectAdapter[][] getChoices(
final ObjectAdapter target,
final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory) {
+ final DeploymentCategory deploymentCategory, final InteractionInitiatedBy interactionInitiatedBy) {
final ObjectAdapter[][] serviceChoices = serviceAction.getChoices(serviceAdapter, authenticationSession,
- deploymentCategory);
+ deploymentCategory, interactionInitiatedBy);
return removeElementFromArray(serviceChoices, contributeeParam, new ObjectAdapter[][]{});
}
- public Consent isProposedArgumentSetValid(final ObjectAdapter contributee, final ObjectAdapter[] proposedArguments) {
+ public Consent isProposedArgumentSetValid(
+ final ObjectAdapter contributee,
+ final ObjectAdapter[] proposedArguments,
+ final InteractionInitiatedBy interactionInitiatedBy) {
ObjectAdapter[] serviceArguments = argsPlusContributee(contributee, proposedArguments);
- return serviceAction.isProposedArgumentSetValid(serviceAdapter, serviceArguments);
+ return serviceAction.isProposedArgumentSetValid(serviceAdapter, serviceArguments, interactionInitiatedBy);
}
@Override
- public ObjectAdapter execute(final ObjectAdapter contributee, final ObjectAdapter[] arguments) {
+ public ObjectAdapter execute(
+ final ObjectAdapter contributee,
+ final ObjectAdapter[] arguments,
+ final InteractionInitiatedBy interactionInitiatedBy) {
// this code also exists in ActionInvocationFacetViaMethod
// we need to repeat it here because the target adapter should be the contributee, not the contributing service.
@@ -240,7 +253,8 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
}
}
- return serviceAction.execute(serviceAdapter, argsPlusContributee(contributee, arguments));
+ return serviceAction.execute(serviceAdapter, argsPlusContributee(contributee, arguments),
+ interactionInitiatedBy);
}
private ObjectAdapter[] argsPlusContributee(final ObjectAdapter contributee, final ObjectAdapter[] arguments) {
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
index 61a5f23..8cc209f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.commons.debug.DebugString;
import org.apache.isis.core.commons.exceptions.UnknownTypeException;
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.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.consent.InteractionResultSet;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -281,8 +281,11 @@ public class ObjectActionImpl extends ObjectMemberAbstract implements ObjectActi
// /////////////////////////////////////////////////////////////
@Override
- public VisibilityContext<?> createVisibleInteractionContext(final AuthenticationSession session, final InteractionInvocationMethod invocationMethod, final ObjectAdapter targetObjectAdapter, Where where) {
- return new ActionVisibilityContext(getDeploymentCategory(), session, invocationMethod, targetObjectAdapter, getIdentifier(), where);
+ public VisibilityContext<?> createVisibleInteractionContext(
+ final ObjectAdapter targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+ Where where) {
+ final AuthenticationSession session = getAuthenticationSession();
+ return new ActionVisibilityContext(getDeploymentCategory(), session, interactionInitiatedBy, targetObjectAdapter, getIdentifier(), where);
}
// /////////////////////////////////////////////////////////////
@@ -290,45 +293,55 @@ public class ObjectActionImpl extends ObjectMemberAbstract implements ObjectActi
// /////////////////////////////////////////////////////////////
@Override
- public UsabilityContext<?> createUsableInteractionContext(final AuthenticationSession session, final InteractionInvocationMethod invocationMethod, final ObjectAdapter targetObjectAdapter, Where where) {
- return new ActionUsabilityContext(getDeploymentCategory(), session, invocationMethod, targetObjectAdapter, getIdentifier(), where);
+ public UsabilityContext<?> createUsableInteractionContext(
+ final ObjectAdapter targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+ Where where) {
+ final AuthenticationSession session = getAuthenticationSession();
+ return new ActionUsabilityContext(getDeploymentCategory(), session, interactionInitiatedBy, targetObjectAdapter, getIdentifier(), where);
}
// //////////////////////////////////////////////////////////////////
// validate
// //////////////////////////////////////////////////////////////////
- /**
- * TODO: currently this method is hard-coded to assume all interactions are
- * initiated {@link InteractionInvocationMethod#BY_USER by user}.
- */
@Override
- public Consent isProposedArgumentSetValid(final ObjectAdapter target, final ObjectAdapter[] proposedArguments) {
- return isProposedArgumentSetValidResultSet(target, proposedArguments).createConsent();
+ public Consent isProposedArgumentSetValid(
+ final ObjectAdapter target,
+ final ObjectAdapter[] proposedArguments,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ return isProposedArgumentSetValidResultSet(target, proposedArguments, interactionInitiatedBy).createConsent();
}
- private InteractionResultSet isProposedArgumentSetValidResultSet(final ObjectAdapter object, final ObjectAdapter[] proposedArguments) {
- final InteractionInvocationMethod invocationMethod = InteractionInvocationMethod.BY_USER;
+ private InteractionResultSet isProposedArgumentSetValidResultSet(
+ final ObjectAdapter objectAdapter,
+ final ObjectAdapter[] proposedArguments,
+ final InteractionInitiatedBy interactionInitiatedBy) {
final InteractionResultSet resultSet = new InteractionResultSet();
final List<ObjectActionParameter> actionParameters = getParameters();
if (proposedArguments != null) {
for (int i = 0; i < proposedArguments.length; i++) {
- final ValidityContext<?> ic = actionParameters.get(i).createProposedArgumentInteractionContext(getAuthenticationSession(), invocationMethod, object, proposedArguments, i);
+ final ValidityContext<?> ic =
+ actionParameters.get(i).createProposedArgumentInteractionContext(
+ objectAdapter, proposedArguments, i, interactionInitiatedBy
+ );
InteractionUtils.isValidResultSet(getParameter(i), ic, resultSet);
}
}
// only check the action's own validity if all the arguments are OK.
if (resultSet.isAllowed()) {
- final ValidityContext<?> ic = createActionInvocationInteractionContext(getAuthenticationSession(), invocationMethod, object, proposedArguments);
+ final ValidityContext<?> ic = createActionInvocationInteractionContext(
+ objectAdapter, proposedArguments, interactionInitiatedBy);
InteractionUtils.isValidResultSet(this, ic, resultSet);
}
return resultSet;
}
- @Override
- public ActionInvocationContext createActionInvocationInteractionContext(final AuthenticationSession session, final InteractionInvocationMethod invocationMethod, final ObjectAdapter targetObject, final ObjectAdapter[] proposedArguments) {
- return new ActionInvocationContext(getDeploymentCategory(), getAuthenticationSession(), invocationMethod, targetObject, getIdentifier(), proposedArguments);
+ private ActionInvocationContext createActionInvocationInteractionContext(
+ final ObjectAdapter targetObject,
+ final ObjectAdapter[] proposedArguments,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ return new ActionInvocationContext(getDeploymentCategory(), getAuthenticationSession(), interactionInitiatedBy, targetObject, getIdentifier(), proposedArguments);
}
// //////////////////////////////////////////////////////////////////
@@ -336,36 +349,44 @@ public class ObjectActionImpl extends ObjectMemberAbstract implements ObjectActi
// //////////////////////////////////////////////////////////////////
@Override
- public ObjectAdapter executeWithRuleChecking(final ObjectAdapter target, final ObjectAdapter[] arguments, final AuthenticationSession authenticationSession, final Where where) {
+ public ObjectAdapter executeWithRuleChecking(
+ final ObjectAdapter target,
+ final ObjectAdapter[] arguments,
+ final AuthenticationSession authenticationSession,
+ final Where where, final InteractionInitiatedBy interactionInitiatedBy) {
// see it?
- final Consent visibility = isVisible(authenticationSession, target, where);
+ final Consent visibility = isVisible(target, interactionInitiatedBy, where);
if (visibility.isVetoed()) {
throw new AuthorizationException();
}
// use it?
- final Consent usability = isUsable(authenticationSession, target, where);
+ final Consent usability = isUsable(target, interactionInitiatedBy, where);
if(usability.isVetoed()) {
throw new AuthorizationException();
}
// do it?
- final Consent validity = isProposedArgumentSetValid(target, arguments);
+ final Consent validity = isProposedArgumentSetValid(target, arguments, interactionInitiatedBy);
if(validity.isVetoed()) {
throw new RecoverableException(validity.getReason());
}
- return execute(target, arguments);
+ return execute(target, arguments, interactionInitiatedBy);
}
@Override
- public ObjectAdapter execute(final ObjectAdapter target, final ObjectAdapter[] arguments) {
+ public ObjectAdapter execute(
+ final ObjectAdapter target,
+ final ObjectAdapter[] arguments,
+ final InteractionInitiatedBy interactionInitiatedBy) {
if(LOG.isDebugEnabled()) {
LOG.debug("execute action " + target + "." + getId());
}
final ActionInvocationFacet facet = getFacet(ActionInvocationFacet.class);
- return facet.invoke(this, target, arguments, getAuthenticationSession(), getDeploymentCategory());
+ return facet.invoke(this, target, arguments, getAuthenticationSession(), getDeploymentCategory(),
+ interactionInitiatedBy);
}
protected ActionInvocationFacet getActionInvocationFacet() {
@@ -436,9 +457,11 @@ public class ObjectActionImpl extends ObjectMemberAbstract implements ObjectActi
@Override
public ObjectAdapter[][] getChoices(
final ObjectAdapter target,
- final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory) {
+ final AuthenticationSession authenticationSessionUNUSED,
+ final DeploymentCategory deploymentCategory,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final AuthenticationSession session = getAuthenticationSession();
final int parameterCount = getParameterCount();
Object[][] parameterChoicesPojos;
@@ -447,7 +470,8 @@ public class ObjectActionImpl extends ObjectMemberAbstract implements ObjectActi
if (!facet.isNoop()) {
// using the old choicesXxx() approach
- parameterChoicesPojos = facet.getChoices(target, authenticationSession, deploymentCategory);
+ parameterChoicesPojos = facet.getChoices(target, session, deploymentCategory,
+ interactionInitiatedBy);
// if no options, or not the right number of pojos, then default
if (parameterChoicesPojos == null) {
@@ -465,8 +489,8 @@ public class ObjectActionImpl extends ObjectMemberAbstract implements ObjectActi
for (int i = 0; i < parameterCount; i++) {
final ActionParameterChoicesFacet paramFacet = parameters.get(i).getFacet(ActionParameterChoicesFacet.class);
if (paramFacet != null && !paramFacet.isNoop()) {
- parameterChoicesPojos[i] = paramFacet.getChoices(target, null, authenticationSession,
- deploymentCategory);
+ parameterChoicesPojos[i] = paramFacet.getChoices(target, null, session,
+ deploymentCategory, interactionInitiatedBy);
} else {
parameterChoicesPojos[i] = new Object[0];
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 4adc3aa..3f8e313 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -38,7 +38,7 @@ import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.consent.Allow;
import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.consent.InteractionResultSet;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -259,16 +259,20 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
@Override
public ObjectAdapter[] getAutoComplete(
- ObjectAdapter adapter,
- String searchArg,
- final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory) {
+ final ObjectAdapter adapter,
+ final String searchArg,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+
+ final AuthenticationSession authenticationSession = getAuthenticationSession();
+ final DeploymentCategory deploymentCategory = getDeploymentCategory();
+
final List<ObjectAdapter> adapters = Lists.newArrayList();
final ActionParameterAutoCompleteFacet facet = getFacet(ActionParameterAutoCompleteFacet.class);
if (facet != null) {
- final Object[] choices = facet.autoComplete(adapter, searchArg, authenticationSession, deploymentCategory);
+ final Object[] choices = facet.autoComplete(adapter, searchArg, authenticationSession, deploymentCategory,
+ interactionInitiatedBy);
checkChoicesOrAutoCompleteType(getSpecificationLoader(), choices, getSpecification());
for (final Object choice : choices) {
adapters.add(getAdapterMap().adapterFor(choice));
@@ -303,25 +307,27 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
public ObjectAdapter[] getChoices(
final ObjectAdapter adapter,
final ObjectAdapter[] argumentsIfAvailable,
- final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory) {
+ final InteractionInitiatedBy interactionInitiatedBy) {
final List<ObjectAdapter> argListIfAvailable = ListExtensions.mutableCopy(argumentsIfAvailable);
final ObjectAdapter target = targetForDefaultOrChoices(adapter, argListIfAvailable);
final List<ObjectAdapter> args = argsForDefaultOrChoices(adapter, argListIfAvailable);
- return findChoices(target, args, authenticationSession, deploymentCategory);
+ return findChoices(target, args, interactionInitiatedBy);
}
private ObjectAdapter[] findChoices(
final ObjectAdapter target,
final List<ObjectAdapter> args,
- final AuthenticationSession authenticationSession, final DeploymentCategory deploymentCategory) {
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final AuthenticationSession session = getAuthenticationSession();
+ final DeploymentCategory deploymentCategory = getDeploymentCategory();
final List<ObjectAdapter> adapters = Lists.newArrayList();
final ActionParameterChoicesFacet facet = getFacet(ActionParameterChoicesFacet.class);
if (facet != null) {
- final Object[] choices = facet.getChoices(target, args, authenticationSession, deploymentCategory);
+ final Object[] choices = facet.getChoices(target, args, session, deploymentCategory,
+ interactionInitiatedBy);
checkChoicesOrAutoCompleteType(getSpecificationLoader(), choices, getSpecification());
for (final Object choice : choices) {
ObjectAdapter adapter = choice != null? getAdapterMap().adapterFor(choice) : null;
@@ -369,21 +375,27 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
/**
* Hook method; {@link ObjectActionParameterContributee contributed action parameter}s override.
*/
- protected ObjectAdapter targetForDefaultOrChoices(ObjectAdapter adapter, final List<ObjectAdapter> argumentsIfAvailable) {
+ protected ObjectAdapter targetForDefaultOrChoices(
+ final ObjectAdapter adapter,
+ final List<ObjectAdapter> argumentsIfAvailable) {
return adapter;
}
/**
* Hook method; {@link ObjectActionParameterContributee contributed action parameter}s override.
*/
- protected List<ObjectAdapter> argsForDefaultOrChoices(final ObjectAdapter adapter, final List<ObjectAdapter> argumentsIfAvailable) {
+ protected List<ObjectAdapter> argsForDefaultOrChoices(
+ final ObjectAdapter adapter,
+ final List<ObjectAdapter> argumentsIfAvailable) {
return argumentsIfAvailable;
}
// helpers
-
- static void checkChoicesOrAutoCompleteType(final SpecificationLoader specificationLookup, final Object[] objects, final ObjectSpecification paramSpec) {
+ static void checkChoicesOrAutoCompleteType(
+ final SpecificationLoader specificationLookup,
+ final Object[] objects,
+ final ObjectSpecification paramSpec) {
for (final Object object : objects) {
if(object == null) {
@@ -425,12 +437,20 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
// /////////////////////////////////////////////////////////////
@Override
- public ActionArgumentContext createProposedArgumentInteractionContext(final AuthenticationSession session, final InteractionInvocationMethod invocationMethod, final ObjectAdapter targetObject, final ObjectAdapter[] proposedArguments, final int position) {
- return new ActionArgumentContext(getDeploymentCategory(), getAuthenticationSession(), invocationMethod, targetObject, getIdentifier(), proposedArguments, position);
+ public ActionArgumentContext createProposedArgumentInteractionContext(
+ final ObjectAdapter targetObject,
+ final ObjectAdapter[] proposedArguments,
+ final int position,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ return new ActionArgumentContext(getDeploymentCategory(), getAuthenticationSession(), interactionInitiatedBy, targetObject, getIdentifier(), proposedArguments, position);
}
@Override
- public String isValid(final ObjectAdapter adapter, final Object proposedValue, final Localization localization) {
+ public String isValid(
+ final ObjectAdapter adapter,
+ final Object proposedValue,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Localization localization) {
ObjectAdapter proposedValueAdapter = null;
ObjectSpecification proposedValueSpec;
@@ -438,7 +458,9 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
proposedValueAdapter = getAdapterMap().adapterFor(proposedValue);
proposedValueSpec = proposedValueAdapter.getSpecification();
if(!proposedValueSpec.isOfType(proposedValueSpec)) {
- proposedValueAdapter = doCoerceProposedValue(adapter, proposedValue, localization);
+ proposedValueAdapter = doCoerceProposedValue(adapter, proposedValue, interactionInitiatedBy,
+ localization
+ );
}
// check has been coerced into correct type; otherwise give up
@@ -450,9 +472,11 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
return null;
}
}
-
- final ValidityContext<?> ic = createProposedArgumentInteractionContext(getAuthenticationSession(), InteractionInvocationMethod.BY_USER, adapter, arguments(proposedValueAdapter), getNumber());
+ final ObjectAdapter[] argumentAdapters = arguments(proposedValueAdapter);
+ final ValidityContext<?> ic = createProposedArgumentInteractionContext(
+ adapter, argumentAdapters, getNumber(), interactionInitiatedBy
+ );
final InteractionResultSet buf = new InteractionResultSet();
InteractionUtils.isValidResultSet(this, ic, buf);
@@ -466,7 +490,11 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
/**
* Optional hook for parsing.
*/
- protected ObjectAdapter doCoerceProposedValue(ObjectAdapter adapter, Object proposedValue, final Localization localization) {
+ protected ObjectAdapter doCoerceProposedValue(
+ final ObjectAdapter adapter,
+ final Object proposedValue,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Localization localization) {
return null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseable.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseable.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseable.java
index 626b362..e58fcbb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseable.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseable.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.core.metamodel.adapter.MutableProposedHolder;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.TypedHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
@@ -63,7 +64,11 @@ public class ObjectActionParameterParseable extends ObjectActionParameterAbstrac
return facet.value();
}
- protected ObjectAdapter doCoerceProposedValue(ObjectAdapter adapter, Object proposedValue, final Localization localization) {
+ protected ObjectAdapter doCoerceProposedValue(
+ final ObjectAdapter adapter,
+ final Object proposedValue,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Localization localization) {
// try to parse
if (!(proposedValue instanceof String)) {
return null;
@@ -73,7 +78,9 @@ public class ObjectActionParameterParseable extends ObjectActionParameterAbstrac
final ObjectSpecification parameterSpecification = getSpecification();
final ParseableFacet p = parameterSpecification.getFacet(ParseableFacet.class);
try {
- final ObjectAdapter parsedAdapter = p.parseTextEntry(null, proposedString, localization);
+ final ObjectAdapter parsedAdapter = p.parseTextEntry(null, proposedString, interactionInitiatedBy,
+ localization
+ );
return parsedAdapter;
} catch(Exception ex) {
return null;
@@ -101,7 +108,7 @@ public class ObjectActionParameterParseable extends ObjectActionParameterAbstrac
* {@link ObjectAdapter}.
*/
@Override
- public ObjectAdapter get(final ObjectAdapter owner) {
+ public ObjectAdapter get(final ObjectAdapter owner, final InteractionInitiatedBy interactionInitiatedBy) {
final MutableProposedHolder proposedHolder = getProposedHolder(owner);
final Object proposed = proposedHolder.getProposed();
return getAdapterMap().adapterFor(proposed);
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseableContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseableContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseableContributee.java
index ccd2f51..5e282f2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseableContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseableContributee.java
@@ -21,6 +21,7 @@ import java.util.List;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.lang.ListExtensions;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
@@ -62,10 +63,11 @@ public class ObjectActionParameterParseableContributee extends ObjectActionParam
public ObjectAdapter[] getAutoComplete(
final ObjectAdapter adapter,
final String searchArg,
- final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory) {
- return serviceActionParameter.getAutoComplete(serviceAdapter, searchArg, authenticationSession,
- deploymentCategory);
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final AuthenticationSession authenticationSession = getAuthenticationSession();
+ final DeploymentCategory deploymentCategory = serviceAction.getDeploymentCategory();
+ return serviceActionParameter.getAutoComplete(serviceAdapter, searchArg,
+ interactionInitiatedBy);
}
protected ObjectAdapter targetForDefaultOrChoices(ObjectAdapter adapter, final List<ObjectAdapter> argumentsIfAvailable) {
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
index 41b6d6a..03a81e9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
import org.apache.isis.core.commons.exceptions.NotYetImplementedException;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
@@ -44,7 +45,9 @@ public abstract class ObjectAssociationAbstract extends ObjectMemberAbstract imp
}
@Override
- public abstract ObjectAdapter get(final ObjectAdapter fromObject);
+ public abstract ObjectAdapter get(
+ final ObjectAdapter fromObject,
+ final InteractionInitiatedBy interactionInitiatedBy);
/**
* Return the specification of the object (or objects) that this field
@@ -74,7 +77,7 @@ public abstract class ObjectAssociationAbstract extends ObjectMemberAbstract imp
}
@Override
- public abstract boolean isEmpty(final ObjectAdapter adapter);
+ public abstract boolean isEmpty(final ObjectAdapter adapter, final InteractionInitiatedBy interactionInitiatedBy);
@Override
public boolean isOneToOneAssociation() {
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
index 1322d5d..d7d53d3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
import org.apache.isis.core.metamodel.adapter.ServicesProvider;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.consent.InteractionResult;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -209,6 +209,23 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
// Hidden (or visible)
// /////////////////////////////////////////////////////////////
+ /**
+ * Create an {@link InteractionContext} to represent an attempt to view this
+ * member (that is, to check if it is visible or not).
+ *
+ * <p>
+ * Typically it is easier to just call
+ * {@link ObjectMember#isVisible(ObjectAdapter, InteractionInitiatedBy, Where)}; this is
+ * provided as API for symmetry with interactions (such as
+ * {@link AccessContext} accesses) have no corresponding vetoing methods.
+ */
+ protected abstract VisibilityContext<?> createVisibleInteractionContext(
+ final ObjectAdapter targetObjectAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where);
+
+
+
@Override
public boolean isAlwaysHidden() {
final HiddenFacet facet = getFacet(HiddenFacet.class);
@@ -223,18 +240,20 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
/**
* Loops over all {@link HidingInteractionAdvisor} {@link Facet}s and
* returns <tt>true</tt> only if none hide the member.
- *
- * <p>
- * TODO: currently this method is hard-coded to assume all interactions are
- * initiated {@link InteractionInvocationMethod#BY_USER by user}.
*/
@Override
- public Consent isVisible(final AuthenticationSession session, final ObjectAdapter target, Where where) {
- return isVisibleResult(session, target, where).createConsent();
- }
-
- private InteractionResult isVisibleResult(final AuthenticationSession session, final ObjectAdapter target, Where where) {
- final VisibilityContext<?> ic = createVisibleInteractionContext(session, InteractionInvocationMethod.BY_USER, target, where);
+ public Consent isVisible(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
+ return isVisibleResult(target, interactionInitiatedBy, where).createConsent();
+ }
+
+ private InteractionResult isVisibleResult(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
+ final VisibilityContext<?> ic = createVisibleInteractionContext(target, interactionInitiatedBy, where);
return InteractionUtils.isVisibleResult(this, ic);
}
@@ -243,20 +262,37 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
// /////////////////////////////////////////////////////////////
/**
+ * Create an {@link InteractionContext} to represent an attempt to
+ * use this member (that is, to check if it is usable or not).
+ *
+ * <p>
+ * Typically it is easier to just call
+ * {@link ObjectMember#isUsable(ObjectAdapter, InteractionInitiatedBy, Where)}; this is
+ * provided as API for symmetry with interactions (such as
+ * {@link AccessContext} accesses) have no corresponding vetoing methods.
+ */
+ protected abstract UsabilityContext<?> createUsableInteractionContext(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where);
+
+ /**
* Loops over all {@link DisablingInteractionAdvisor} {@link Facet}s and
* returns <tt>true</tt> only if none disables the member.
- *
- * <p>
- * TODO: currently this method is hard-coded to assume all interactions are
- * initiated {@link InteractionInvocationMethod#BY_USER by user}.
*/
@Override
- public Consent isUsable(final AuthenticationSession session, final ObjectAdapter target, Where where) {
- return isUsableResult(session, target, where).createConsent();
- }
-
- private InteractionResult isUsableResult(final AuthenticationSession session, final ObjectAdapter target, Where where) {
- final UsabilityContext<?> ic = createUsableInteractionContext(session, InteractionInvocationMethod.BY_USER, target, where);
+ public Consent isUsable(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
+ return isUsableResult(target, interactionInitiatedBy, where).createConsent();
+ }
+
+ private InteractionResult isUsableResult(
+ final ObjectAdapter target,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Where where) {
+ final UsabilityContext<?> ic = createUsableInteractionContext(target, interactionInitiatedBy, where);
return InteractionUtils.isUsableResult(this, ic);
}