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:08 UTC
[77/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/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
index f3b2eb9..2e5acb4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
@@ -39,6 +39,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
import org.apache.isis.core.metamodel.adapter.oid.*;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.adapter.version.Version;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.ElementSpecificationProviderFromTypeOfFacet;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
@@ -590,14 +591,14 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
private void remapContainedAggregatedObject(final ObjectAdapter adapter, final RootOid persistedRootOid) {
for (final ObjectAssociation association: adapter.getSpecification().getAssociations(Contributed.EXCLUDED)) {
if (association.isOneToManyAssociation() && !association.isNotPersisted()) {
- final ObjectAdapter collection = association.get(adapter);
+ final ObjectAdapter collection = association.get(adapter, InteractionInitiatedBy.FRAMEWORK);
final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(collection);
for (final ObjectAdapter element : facet.iterable(collection)) {
remapAggregatedObject(element, persistedRootOid);
}
} else if (association.getSpecification().isParented()) {
- final ObjectAdapter referencedAdapter = association.get(adapter);
+ final ObjectAdapter referencedAdapter = association.get(adapter, InteractionInitiatedBy.FRAMEWORK);
if(referencedAdapter == null) {
continue;
@@ -621,7 +622,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
private static Object getCollectionPojo(final OneToManyAssociation association, final ObjectAdapter ownerAdapter) {
final PropertyOrCollectionAccessorFacet accessor = association.getFacet(PropertyOrCollectionAccessorFacet.class);
- return accessor.getProperty(ownerAdapter, null, null);
+ return accessor.getProperty(ownerAdapter, null, null, InteractionInitiatedBy.FRAMEWORK);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmDefault.java
index fb2a81d..219d607 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmDefault.java
@@ -25,6 +25,7 @@ import org.slf4j.LoggerFactory;
import org.apache.isis.core.commons.util.ToString;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.ResolveState;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
@@ -90,13 +91,13 @@ class PersistAlgorithmDefault extends PersistAlgorithmAbstract {
continue;
}
if (objectAssoc.isOneToManyAssociation()) {
- final ObjectAdapter collection = objectAssoc.get(adapter);
+ final ObjectAdapter collection = objectAssoc.get(adapter, InteractionInitiatedBy.FRAMEWORK);
if (collection == null) {
throw new ObjectPersistenceException("Collection " + objectAssoc.getName() + " does not exist in " + adapter.getSpecification().getFullIdentifier());
}
makePersistent(collection, toPersistObjectSet);
} else {
- final ObjectAdapter fieldValue = objectAssoc.get(adapter);
+ final ObjectAdapter fieldValue = objectAssoc.get(adapter, InteractionInitiatedBy.FRAMEWORK);
if (fieldValue == null) {
continue;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByPattern.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByPattern.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByPattern.java
index 6ccc43e..3bad9dd 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByPattern.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByPattern.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.runtime.persistence.query;
import java.util.List;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
@@ -70,18 +71,18 @@ public class PersistenceQueryFindByPattern extends PersistenceQueryBuiltInAbstra
}
// if pattern contains empty value then it matches anything
- if (fld.isEmpty(pattern)) {
+ if (fld.isEmpty(pattern, InteractionInitiatedBy.FRAMEWORK)) {
continue;
}
// find the object to match against, if any
- final ObjectAdapter reqd = fld.get(pattern);
+ final ObjectAdapter reqd = fld.get(pattern, InteractionInitiatedBy.FRAMEWORK);
if (reqd == null) {
continue;
}
// find the object; it's a bust if nothing
- final ObjectAdapter search = fld.get(object);
+ final ObjectAdapter search = fld.get(object, InteractionInitiatedBy.FRAMEWORK);
if (search == null) {
return false;
}
@@ -95,8 +96,8 @@ public class PersistenceQueryFindByPattern extends PersistenceQueryBuiltInAbstra
} else {
// compare the titles
- final String r = reqd.titleString().toLowerCase();
- final String s = search.titleString().toLowerCase();
+ final String r = reqd.titleString(null).toLowerCase();
+ final String s = search.titleString(null).toLowerCase();
// if the pattern does not occur in the object, then it's a bust
if (s.indexOf(r) == -1) {
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
index 997cce0..ceea0a7 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.services.command.CommandContext;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -110,7 +111,8 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
}
final ObjectAdapter[] argAdapters = argAdaptersFor(aim);
- final ObjectAdapter resultAdapter = objectAction.execute(targetAdapter, argAdapters);
+ final ObjectAdapter resultAdapter = objectAction.execute(
+ targetAdapter, argAdapters, InteractionInitiatedBy.FRAMEWORK);
if(resultAdapter != null) {
Bookmark resultBookmark = CommandUtil.bookmarkFor(resultAdapter);
command.setResult(resultBookmark);
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
index 6e5fb74..2a2f75c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
@@ -76,6 +76,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
@@ -1182,7 +1183,7 @@ public class IsisTransaction implements TransactionScopedComponent {
}
private Object getPropertyValue() {
- ObjectAdapter referencedAdapter = property.get(objectAdapter);
+ ObjectAdapter referencedAdapter = property.get(objectAdapter, InteractionInitiatedBy.FRAMEWORK);
return referencedAdapter == null ? null : referencedAdapter.getObject();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/ActionInvocationFacetWrapTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/ActionInvocationFacetWrapTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/ActionInvocationFacetWrapTransaction.java
index 5aabbed..e8e071c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/ActionInvocationFacetWrapTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/ActionInvocationFacetWrapTransaction.java
@@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
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.facetapi.DecoratingFacet;
import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
@@ -56,12 +57,14 @@ public class ActionInvocationFacetWrapTransaction extends ActionInvocationFacetA
final ObjectAction owningAction,
final ObjectAdapter targetAdapter,
final ObjectAdapter[] argumentAdapters,
- final AuthenticationSession authenticationSession, final DeploymentCategory deploymentCategory) {
+ final AuthenticationSession authenticationSession,
+ final DeploymentCategory deploymentCategory,
+ final InteractionInitiatedBy interactionInitiatedBy) {
final ObjectAdapter result = getTransactionManager().executeWithinTransaction(new TransactionalClosureWithReturnAbstract<ObjectAdapter>() {
@Override
public ObjectAdapter execute() {
return underlyingFacet.invoke(owningAction, targetAdapter, argumentAdapters, authenticationSession,
- deploymentCategory);
+ deploymentCategory, interactionInitiatedBy);
}
});
return result;
@@ -71,12 +74,14 @@ public class ActionInvocationFacetWrapTransaction extends ActionInvocationFacetA
public ObjectAdapter invoke(
final ObjectAdapter targetAdapter,
final ObjectAdapter[] argumentAdapters,
- final AuthenticationSession authenticationSession, final DeploymentCategory deploymentCategory) {
+ final AuthenticationSession authenticationSession,
+ final DeploymentCategory deploymentCategory,
+ final InteractionInitiatedBy interactionInitiatedBy) {
final ObjectAdapter result = getTransactionManager().executeWithinTransaction(new TransactionalClosureWithReturnAbstract<ObjectAdapter>() {
@Override
public ObjectAdapter execute() {
return underlyingFacet.invoke(targetAdapter, argumentAdapters, authenticationSession,
- deploymentCategory);
+ deploymentCategory, interactionInitiatedBy);
}
});
return result;
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/CollectionAddToFacetWrapTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/CollectionAddToFacetWrapTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/CollectionAddToFacetWrapTransaction.java
index 9424ae1..0b4e4c6 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/CollectionAddToFacetWrapTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/CollectionAddToFacetWrapTransaction.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.runtime.transaction.facets;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.DecoratingFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacetAbstract;
@@ -43,16 +44,19 @@ public class CollectionAddToFacetWrapTransaction extends CollectionAddToFacetAbs
}
@Override
- public void add(final ObjectAdapter adapter, final ObjectAdapter referencedAdapter) {
+ public void add(
+ final ObjectAdapter adapter,
+ final ObjectAdapter referencedAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
if (adapter.isTransient()) {
// NOT !adapter.isPersistent();
// (value adapters are neither persistent or transient)
- underlyingFacet.add(adapter, referencedAdapter);
+ underlyingFacet.add(adapter, referencedAdapter, interactionInitiatedBy);
} else {
getTransactionManager().executeWithinTransaction(new TransactionalClosureAbstract() {
@Override
public void execute() {
- underlyingFacet.add(adapter, referencedAdapter);
+ underlyingFacet.add(adapter, referencedAdapter, interactionInitiatedBy);
}
});
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/CollectionRemoveFromFacetWrapTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/CollectionRemoveFromFacetWrapTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/CollectionRemoveFromFacetWrapTransaction.java
index cb39203..0ee20f1 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/CollectionRemoveFromFacetWrapTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/CollectionRemoveFromFacetWrapTransaction.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.runtime.transaction.facets;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.DecoratingFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacetAbstract;
@@ -43,16 +44,19 @@ public class CollectionRemoveFromFacetWrapTransaction extends CollectionRemoveFr
}
@Override
- public void remove(final ObjectAdapter adapter, final ObjectAdapter referencedAdapter) {
+ public void remove(
+ final ObjectAdapter adapter,
+ final ObjectAdapter referencedAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
if (adapter.isTransient()) {
// NOT !adapter.isPersistent();
// (value adapters are neither persistent or transient)
- underlyingFacet.remove(adapter, referencedAdapter);
+ underlyingFacet.remove(adapter, referencedAdapter, interactionInitiatedBy);
} else {
getTransactionManager().executeWithinTransaction(new TransactionalClosureAbstract() {
@Override
public void execute() {
- underlyingFacet.remove(adapter, referencedAdapter);
+ underlyingFacet.remove(adapter, referencedAdapter, interactionInitiatedBy);
}
});
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/PropertyClearFacetWrapTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/PropertyClearFacetWrapTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/PropertyClearFacetWrapTransaction.java
index da68a17..0312b04 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/PropertyClearFacetWrapTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/PropertyClearFacetWrapTransaction.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.runtime.transaction.facets;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.DecoratingFacet;
import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetAbstract;
@@ -43,16 +44,16 @@ public class PropertyClearFacetWrapTransaction extends PropertyClearFacetAbstrac
}
@Override
- public void clearProperty(final ObjectAdapter adapter) {
+ public void clearProperty(final ObjectAdapter adapter, final InteractionInitiatedBy interactionInitiatedBy) {
if (adapter.isTransient()) {
// NOT !adapter.isPersistent();
// (value adapters are neither persistent or transient)
- underlyingFacet.clearProperty(adapter);
+ underlyingFacet.clearProperty(adapter, interactionInitiatedBy);
} else {
getTransactionManager().executeWithinTransaction(new TransactionalClosureAbstract() {
@Override
public void execute() {
- underlyingFacet.clearProperty(adapter);
+ underlyingFacet.clearProperty(adapter, interactionInitiatedBy);
}
});
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/PropertySetterFacetWrapTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/PropertySetterFacetWrapTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/PropertySetterFacetWrapTransaction.java
index e5f7141..bece4bd 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/PropertySetterFacetWrapTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/transaction/facets/PropertySetterFacetWrapTransaction.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.runtime.transaction.facets;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.DecoratingFacet;
import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetAbstract;
@@ -43,16 +44,19 @@ public class PropertySetterFacetWrapTransaction extends PropertySetterFacetAbstr
}
@Override
- public void setProperty(final ObjectAdapter adapter, final ObjectAdapter referencedAdapter) {
+ public void setProperty(
+ final ObjectAdapter adapter,
+ final ObjectAdapter referencedAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
if (adapter.isTransient()) {
// NOT !adapter.isPersistent();
// (value adapters are neither persistent or transient)
- underlyingFacet.setProperty(adapter, referencedAdapter);
+ underlyingFacet.setProperty(adapter, referencedAdapter, interactionInitiatedBy);
} else {
getTransactionManager().executeWithinTransaction(new TransactionalClosureAbstract() {
@Override
public void execute() {
- underlyingFacet.setProperty(adapter, referencedAdapter);
+ underlyingFacet.setProperty(adapter, referencedAdapter, interactionInitiatedBy);
}
});
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index 5eaaebe..5c9cce1 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -27,7 +27,7 @@ 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.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
@@ -95,7 +95,7 @@ public class ObjectMemberAbstractTest {
return null;
}
});
- final Consent usable = testMember.isUsable(null, persistentAdapter, Where.ANYWHERE);
+ final Consent usable = testMember.isUsable(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE);
final boolean allowed = usable.isAllowed();
assertTrue(allowed);
}
@@ -109,7 +109,7 @@ public class ObjectMemberAbstractTest {
return null;
}
});
- final Consent visible = testMember.isVisible(null, persistentAdapter, Where.ANYWHERE);
+ final Consent visible = testMember.isVisible(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE);
assertTrue(visible.isAllowed());
}
@@ -117,14 +117,14 @@ public class ObjectMemberAbstractTest {
public void testVisibleWhenTargetPersistentAndHiddenFacetSetToOncePersisted() {
testMember.addFacet(new HideForContextFacetNone(testMember));
testMember.addFacet(new HiddenFacetAbstractImpl(When.ONCE_PERSISTED, Where.ANYWHERE, testMember){});
- assertFalse(testMember.isVisible(null, persistentAdapter, Where.ANYWHERE).isAllowed());
+ assertFalse(testMember.isVisible(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE).isAllowed());
}
@Test
public void testVisibleWhenTargetPersistentAndHiddenFacetSetToUntilPersisted() {
testMember.addFacet(new HideForContextFacetNone(testMember));
testMember.addFacet(new HiddenFacetAbstractImpl(When.UNTIL_PERSISTED, Where.ANYWHERE, testMember){});
- final Consent visible = testMember.isVisible(null, persistentAdapter, Where.ANYWHERE);
+ final Consent visible = testMember.isVisible(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE);
assertTrue(visible.isAllowed());
}
@@ -133,19 +133,19 @@ public class ObjectMemberAbstractTest {
testMember.addFacet(new HideForContextFacetNone(testMember));
testMember.addFacet(new HiddenFacetAbstractImpl(When.UNTIL_PERSISTED, Where.ANYWHERE, testMember){});
- final Consent visible = testMember.isVisible(null, transientAdapter, Where.ANYWHERE);
+ final Consent visible = testMember.isVisible(transientAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE);
assertFalse(visible.isAllowed());
}
@Test
public void testVisibleDeclaratively() {
testMember.addFacet(new HiddenFacetAbstractAlwaysEverywhere(testMember) {});
- assertFalse(testMember.isVisible(null, persistentAdapter, Where.ANYWHERE).isAllowed());
+ assertFalse(testMember.isVisible(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE).isAllowed());
}
@Test
public void testVisibleForSessionByDefault() {
- final Consent visible = testMember.isVisible(null, persistentAdapter, Where.ANYWHERE);
+ final Consent visible = testMember.isVisible(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE);
assertTrue(visible.isAllowed());
}
@@ -157,7 +157,7 @@ public class ObjectMemberAbstractTest {
return "Hidden";
}
});
- assertFalse(testMember.isVisible(null, persistentAdapter, Where.ANYWHERE).isAllowed());
+ assertFalse(testMember.isVisible(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE).isAllowed());
}
@Test
@@ -168,7 +168,7 @@ public class ObjectMemberAbstractTest {
return "hidden";
}
});
- assertFalse(testMember.isVisible(null, persistentAdapter, Where.ANYWHERE).isAllowed());
+ assertFalse(testMember.isVisible(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE).isAllowed());
}
@Test
@@ -217,13 +217,19 @@ class ObjectMemberAbstractImpl extends ObjectMemberAbstract {
}
@Override
- public UsabilityContext<?> createUsableInteractionContext(final AuthenticationSession session, final InteractionInvocationMethod invocationMethod, final ObjectAdapter target, Where where) {
- return new PropertyUsabilityContext(DeploymentCategory.PRODUCTION, session, invocationMethod, target, getIdentifier(), where);
+ public UsabilityContext<?> createUsableInteractionContext(
+ final ObjectAdapter target, final InteractionInitiatedBy interactionInitiatedBy,
+ Where where) {
+ final AuthenticationSession session = getAuthenticationSession();
+ return new PropertyUsabilityContext(DeploymentCategory.PRODUCTION, session, interactionInitiatedBy, target, getIdentifier(), where);
}
@Override
- public VisibilityContext<?> createVisibleInteractionContext(final AuthenticationSession session, final InteractionInvocationMethod invocationMethod, final ObjectAdapter targetObjectAdapter, Where where) {
- return new PropertyVisibilityContext(DeploymentCategory.PRODUCTION, session, invocationMethod, targetObjectAdapter, getIdentifier(), where);
+ public VisibilityContext<?> createVisibleInteractionContext(
+ final ObjectAdapter targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+ Where where) {
+ final AuthenticationSession session = getAuthenticationSession();
+ return new PropertyVisibilityContext(DeploymentCategory.PRODUCTION, session, interactionInitiatedBy, targetObjectAdapter, getIdentifier(), where);
}
// /////////////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationImplTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationImplTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationImplTest.java
index c2268d2..61f2b92 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationImplTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationImplTest.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
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.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
@@ -133,20 +134,20 @@ public class OneToManyAssociationImplTest {
one(mockPeer).getFacet(CollectionAddToFacet.class);
will(returnValue(mockCollectionAddToFacet));
- one(mockCollectionAddToFacet).add(mockOwnerAdapter, mockAssociatedAdapter);
+ one(mockCollectionAddToFacet).add(mockOwnerAdapter, mockAssociatedAdapter, InteractionInitiatedBy.USER);
}
});
- association.addElement(mockOwnerAdapter, mockAssociatedAdapter);
+ association.addElement(mockOwnerAdapter, mockAssociatedAdapter, InteractionInitiatedBy.USER);
}
@Test(expected = IllegalArgumentException.class)
public void cannotRemoveNull() {
- association.removeElement(mockOwnerAdapter, null);
+ association.removeElement(mockOwnerAdapter, null, InteractionInitiatedBy.USER);
}
@Test(expected = IllegalArgumentException.class)
public void cannotAddNull() {
- association.addElement(mockOwnerAdapter, null);
+ association.addElement(mockOwnerAdapter, null, InteractionInitiatedBy.USER);
}
private void allowingPeerToReturnCollectionType() {
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java
new file mode 100644
index 0000000..f8ffe58
--- /dev/null
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.rendering;
+
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.runtime.system.DeploymentType;
+
+/**
+ * TODO: roll-up in the future (introduced only so that API does not break)
+ */
+public interface RendererContext4 extends RendererContext3 {
+
+ public InteractionInitiatedBy getInteractionInitiatedBy();
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
index 8fe4620..6b94aef 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
@@ -24,13 +24,16 @@ import javax.ws.rs.core.MediaType;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.DomainTypeReprRenderer;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
public abstract class ReprRendererAbstract<R extends ReprRendererAbstract<R, T>, T> implements ReprRenderer<R, T> {
@@ -40,6 +43,9 @@ public abstract class ReprRendererAbstract<R extends ReprRendererAbstract<R, T>,
protected final JsonRepresentation representation;
private final Map<String,String> mediaTypeParams = Maps.newLinkedHashMap();
+ private final DeploymentType deploymentType;
+ private final InteractionInitiatedBy interactionInitiatedBy;
+
protected boolean includesSelf;
public ReprRendererAbstract(final RendererContext rendererContext, final LinkFollowSpecs linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
@@ -47,8 +53,38 @@ public abstract class ReprRendererAbstract<R extends ReprRendererAbstract<R, T>,
this.linkFollower = asProvidedElseCreate(linkFollower);
this.representationType = representationType;
this.representation = representation;
+
+ this.deploymentType = determineDeploymentTypeFrom(this.rendererContext);
+ this.interactionInitiatedBy = determineInteractionInitiatedByFrom(this.rendererContext);
}
+ private static DeploymentType determineDeploymentTypeFrom(final RendererContext rendererContext) {
+ if(rendererContext instanceof RendererContext3) {
+ return ((RendererContext3) rendererContext).getDeploymentType();
+ } else {
+ return DeploymentType.SERVER; // fallback
+ }
+ }
+
+ private static InteractionInitiatedBy determineInteractionInitiatedByFrom(
+ final RendererContext rendererContext) {
+ if (rendererContext instanceof RepresentationService.Context4) {
+ return ((RepresentationService.Context4) rendererContext).getInteractionInitiatedBy();
+ } else {
+ // fallback
+ return InteractionInitiatedBy.USER;
+ }
+ }
+
+ protected DeploymentType getDeploymentType() {
+ return deploymentType;
+ }
+
+ protected InteractionInitiatedBy getInteractionInitiatedBy() {
+ return interactionInitiatedBy;
+ }
+
+
public RendererContext getRendererContext() {
return rendererContext;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
index 28f1c06..474db32 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
@@ -17,19 +17,18 @@
package org.apache.isis.viewer.restfulobjects.rendering.domainobjects;
import com.fasterxml.jackson.databind.node.NullNode;
+
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.consent.Consent;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollowSpecs;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext3;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererAbstract;
public abstract class AbstractObjectMemberReprRenderer<R extends ReprRendererAbstract<R, ObjectAndMember<T>>, T extends ObjectMember> extends ReprRendererAbstract<R, ObjectAndMember<T>> {
@@ -82,8 +81,14 @@ public abstract class AbstractObjectMemberReprRenderer<R extends ReprRendererAbs
private final String memberId;
private final Where where;
- public AbstractObjectMemberReprRenderer(final RendererContext resourceContext, final LinkFollowSpecs linkFollower, String memberId, final RepresentationType representationType, final JsonRepresentation representation, Where where) {
- super(resourceContext, linkFollower, representationType, representation);
+ public AbstractObjectMemberReprRenderer(
+ final RendererContext rendererContext,
+ final LinkFollowSpecs linkFollower,
+ final String memberId,
+ final RepresentationType representationType,
+ final JsonRepresentation representation,
+ final Where where) {
+ super(rendererContext, linkFollower, representationType, representation);
this.memberId = memberId;
this.where = where;
}
@@ -92,6 +97,7 @@ public abstract class AbstractObjectMemberReprRenderer<R extends ReprRendererAbs
return memberId;
}
+
@Override
public R with(final ObjectAndMember<T> objectAndMember) {
this.objectAdapter = objectAndMember.getObjectAdapter();
@@ -286,17 +292,12 @@ public abstract class AbstractObjectMemberReprRenderer<R extends ReprRendererAbs
return visibility().isAllowed();
}
- protected DeploymentType determineDeploymentTypeFrom(final RendererContext rendererContext) {
- if(rendererContext instanceof RendererContext3) {
- return ((RendererContext3) rendererContext).getDeploymentType();
- } else {
- return DeploymentType.SERVER; // fallback
- }
- }
-
+ /**
+ * Convenience method.
+ */
protected <F extends Facet> F getMemberSpecFacet(final Class<F> facetType) {
- final ObjectSpecification otoaSpec = objectMember.getSpecification();
- return otoaSpec.getFacet(facetType);
+ final ObjectSpecification objetMemberSpec = objectMember.getSpecification();
+ return objetMemberSpec.getFacet(facetType);
}
protected boolean hasMemberFacet(final Class<? extends Facet> facetType) {
@@ -304,11 +305,11 @@ public abstract class AbstractObjectMemberReprRenderer<R extends ReprRendererAbs
}
protected Consent usability() {
- return objectMember.isUsable(getRendererContext().getAuthenticationSession(), objectAdapter, where);
+ return objectMember.isUsable(objectAdapter, getInteractionInitiatedBy(), where);
}
protected Consent visibility() {
- return objectMember.isVisible(getRendererContext().getAuthenticationSession(), objectAdapter, where);
+ return objectMember.isVisible(objectAdapter, getInteractionInitiatedBy(), where);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
index fa12f8e..d96a01e 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
@@ -245,7 +245,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
for (final ObjectAssociation assoc : associations) {
if (mode.checkVisibility()) {
- final Consent visibility = assoc.isVisible(getRendererContext().getAuthenticationSession(), objectAdapter, rendererContext.getWhere());
+ final Consent visibility = assoc.isVisible(objectAdapter, getInteractionInitiatedBy(), rendererContext.getWhere());
if (!visibility.isAllowed()) {
continue;
}
@@ -278,7 +278,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
for (final ObjectAssociation assoc : associations) {
if (mode.checkVisibility()) {
- final Consent visibility = assoc.isVisible(getRendererContext().getAuthenticationSession(), objectAdapter, rendererContext.getWhere());
+ final Consent visibility = assoc.isVisible(objectAdapter, getInteractionInitiatedBy(), rendererContext.getWhere());
if (!visibility.isAllowed()) {
continue;
}
@@ -303,7 +303,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
private void addActions(final ObjectAdapter objectAdapter, final List<ObjectAction> actions, final JsonRepresentation members) {
for (final ObjectAction action : actions) {
- final Consent visibility = action.isVisible(getRendererContext().getAuthenticationSession(), objectAdapter, rendererContext.getWhere());
+ final Consent visibility = action.isVisible(objectAdapter, getInteractionInitiatedBy(), rendererContext.getWhere());
if (!visibility.isAllowed()) {
continue;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
index f490dfc..7b5db43 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
@@ -25,13 +25,11 @@ import com.google.common.collect.Maps;
import org.apache.isis.applib.annotation.ActionSemantics;
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.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
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.ObjectActionParameter;
-import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
@@ -45,8 +43,8 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
this(rendererContext, null, null, JsonRepresentation.newMap());
}
- public ObjectActionReprRenderer(final RendererContext resourceContext, final LinkFollowSpecs linkFollowSpecs, String actionId, final JsonRepresentation representation) {
- super(resourceContext, linkFollowSpecs, actionId, RepresentationType.OBJECT_ACTION, representation, Where.OBJECT_FORMS);
+ public ObjectActionReprRenderer(final RendererContext rendererContext, final LinkFollowSpecs linkFollowSpecs, String actionId, final JsonRepresentation representation) {
+ super(rendererContext, linkFollowSpecs, actionId, RepresentationType.OBJECT_ACTION, representation, Where.OBJECT_FORMS);
}
@Override
@@ -140,7 +138,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
final List<Object> parameters = Lists.newArrayList();
for (int i = 0; i < objectMember.getParameterCount(); i++) {
final ObjectActionParameter param = objectMember.getParameters().get(i);
- final Object paramDetails = paramDetails(param);
+ final Object paramDetails = paramDetails(param, getInteractionInitiatedBy());
parameters.add(paramDetails);
}
representation.mapPut("parameters", parameters);
@@ -148,7 +146,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
final Map<String,Object> parameters = Maps.newLinkedHashMap();
for (int i = 0; i < objectMember.getParameterCount(); i++) {
final ObjectActionParameter param = objectMember.getParameters().get(i);
- final Object paramDetails = paramDetails(param);
+ final Object paramDetails = paramDetails(param, getInteractionInitiatedBy());
parameters.put(param.getId(), paramDetails);
}
representation.mapPut("parameters", parameters);
@@ -156,13 +154,13 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
return this;
}
- private Object paramDetails(final ObjectActionParameter param) {
+ private Object paramDetails(final ObjectActionParameter param, final InteractionInitiatedBy interactionInitiatedBy) {
final JsonRepresentation paramRep = JsonRepresentation.newMap();
paramRep.mapPut("num", param.getNumber());
paramRep.mapPut("id", param.getId());
paramRep.mapPut("name", param.getName());
paramRep.mapPut("description", param.getDescription());
- final Object paramChoices = choicesFor(param);
+ final Object paramChoices = choicesFor(param, interactionInitiatedBy);
if (paramChoices != null) {
paramRep.mapPut("choices", paramChoices);
}
@@ -173,12 +171,10 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
return paramRep;
}
- private Object choicesFor(final ObjectActionParameter param) {
- final AuthenticationSession authenticationSession = rendererContext.getAuthenticationSession();
- final DeploymentType deploymentType = determineDeploymentTypeFrom(rendererContext);
- final DeploymentCategory deploymentCategory = deploymentType.getDeploymentCategory();
- final ObjectAdapter[] choiceAdapters = param.getChoices(objectAdapter, null, authenticationSession,
- deploymentCategory);
+ private Object choicesFor(
+ final ObjectActionParameter param,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final ObjectAdapter[] choiceAdapters = param.getChoices(objectAdapter, null, interactionInitiatedBy);
if (choiceAdapters == null || choiceAdapters.length == 0) {
return null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
index 809fe7f..09a9214 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
@@ -80,7 +80,7 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
// ///////////////////////////////////////////////////
private void addValue() {
- final ObjectAdapter valueAdapter = objectMember.get(objectAdapter);
+ final ObjectAdapter valueAdapter = objectMember.get(objectAdapter, getInteractionInitiatedBy());
if (valueAdapter == null) {
return;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
index c003978..72fcc07 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
@@ -24,9 +24,7 @@ import com.google.common.collect.Lists;
import org.apache.isis.applib.annotation.Render.Type;
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.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.members.render.RenderFacet;
@@ -36,7 +34,6 @@ import org.apache.isis.core.metamodel.facets.value.bigdecimal.BigDecimalValueFac
import org.apache.isis.core.metamodel.facets.value.biginteger.BigIntegerValueFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
@@ -81,7 +78,7 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
// ///////////////////////////////////////////////////
private Object addValue() {
- final ObjectAdapter valueAdapter = objectMember.get(objectAdapter);
+ final ObjectAdapter valueAdapter = objectMember.get(objectAdapter, getInteractionInitiatedBy());
// use the runtime type if we have a value, else the compile time type of the member otherwise
final ObjectSpecification spec = valueAdapter != null? valueAdapter.getSpecification(): objectMember.getSpecification();
@@ -201,11 +198,10 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
}
private Object propertyChoices() {
- final AuthenticationSession authenticationSession = rendererContext.getAuthenticationSession();
- final DeploymentType deploymentType = determineDeploymentTypeFrom(rendererContext);
- final DeploymentCategory deploymentCategory = deploymentType.getDeploymentCategory();
final ObjectAdapter[] choiceAdapters =
- objectMember.getChoices(objectAdapter, authenticationSession, deploymentCategory);
+ objectMember.getChoices(
+ objectAdapter,
+ getInteractionInitiatedBy());
if (choiceAdapters == null || choiceAdapters.length == 0) {
return null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
index f08aa6f..4028fe5 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
@@ -20,10 +20,12 @@ import javax.ws.rs.core.Response;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext2;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext3;
+import org.apache.isis.viewer.restfulobjects.rendering.RendererContext4;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberReprMode;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAdapterLinkTo;
@@ -79,4 +81,7 @@ public interface RepresentationService {
public static interface Context3 extends Context2, RendererContext3 {
DeploymentType getDeploymentType();
}
+ public static interface Context4 extends Context3, RendererContext4 {
+ InteractionInitiatedBy getInteractionInitiatedBy();
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
index e358013..3801a78 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
@@ -42,6 +42,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -50,11 +51,11 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.DomainModel;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext3;
+import org.apache.isis.viewer.restfulobjects.rendering.RendererContext4;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
import org.apache.isis.viewer.restfulobjects.rendering.util.Util;
-public class ResourceContext implements RendererContext3 {
+public class ResourceContext implements RendererContext4 {
private final HttpHeaders httpHeaders;
private final UriInfo uriInfo;
@@ -75,6 +76,7 @@ public class ResourceContext implements RendererContext3 {
private final Where where;
private final DeploymentType deploymentType;
+ private final InteractionInitiatedBy interactionInitiatedBy;
private final String urlUnencodedQueryString;
private JsonRepresentation readQueryStringAsMap;
@@ -98,7 +100,8 @@ public class ResourceContext implements RendererContext3 {
final AdapterManager objectAdapterLookup,
final SpecificationLoader specificationLoader,
final IsisConfiguration configuration,
- final DeploymentType deploymentType) {
+ final DeploymentType deploymentType,
+ final InteractionInitiatedBy interactionInitiatedBy) {
this.httpHeaders = httpHeaders;
this.providers = providers;
@@ -116,6 +119,7 @@ public class ResourceContext implements RendererContext3 {
this.specificationLoader = specificationLoader;
this.where = where;
this.deploymentType = deploymentType;
+ this.interactionInitiatedBy = interactionInitiatedBy;
init(representationType);
}
@@ -265,6 +269,11 @@ public class ResourceContext implements RendererContext3 {
}
@Override
+ public InteractionInitiatedBy getInteractionInitiatedBy() {
+ return interactionInitiatedBy;
+ }
+
+ @Override
public List<List<String>> getFollowLinks() {
return followLinks;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
index 3c7b039..2bd8982 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.commons.url.UrlEncodingUtils;
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.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -92,7 +93,7 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
throw RestfulObjectsApplicationException.createWithBody(HttpStatusCode.BAD_REQUEST, objectRepr, "Illegal property value");
}
- final Consent validity = objectAdapter.getSpecification().isValid(objectAdapter);
+ final Consent validity = objectAdapter.getSpecification().isValid(objectAdapter, InteractionInitiatedBy.USER);
if (validity.isVetoed()) {
throw RestfulObjectsApplicationException.createWithBody(HttpStatusCode.BAD_REQUEST, objectRepr, validity.getReason());
}
@@ -152,7 +153,7 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
throw RestfulObjectsApplicationException.createWithBody(HttpStatusCode.BAD_REQUEST, argRepr, "Illegal property value");
}
- final Consent validity = objectAdapter.getSpecification().isValid(objectAdapter);
+ final Consent validity = objectAdapter.getSpecification().isValid(objectAdapter, InteractionInitiatedBy.USER);
if (validity.isVetoed()) {
throw RestfulObjectsApplicationException.createWithBody(HttpStatusCode.BAD_REQUEST, argRepr, validity.getReason());
}
@@ -210,19 +211,21 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
final ObjectAdapterAccessHelper accessHelper = new ObjectAdapterAccessHelper(getResourceContext(), objectAdapter);
- final OneToOneAssociation property = accessHelper.getPropertyThatIsVisibleForIntent(propertyId, ObjectAdapterAccessHelper.Intent.MUTATE);
+ final OneToOneAssociation property = accessHelper.getPropertyThatIsVisibleForIntent(propertyId,
+ ObjectAdapterAccessHelper.Intent.MUTATE);
final ObjectSpecification propertySpec = property.getSpecification();
final String bodyAsString = Util.asStringUtf8(body);
- final ObjectAdapter argAdapter = new JsonParserHelper(getResourceContext(), propertySpec).parseAsMapWithSingleValue(bodyAsString);
+ final ObjectAdapter argAdapter = new JsonParserHelper(getResourceContext(), propertySpec).parseAsMapWithSingleValue(
+ bodyAsString);
- final Consent consent = property.isAssociationValid(objectAdapter, argAdapter);
+ final Consent consent = property.isAssociationValid(objectAdapter, argAdapter, InteractionInitiatedBy.USER);
if (consent.isVetoed()) {
throw RestfulObjectsApplicationException.createWithMessage(HttpStatusCode.UNAUTHORIZED, consent.getReason());
}
- property.set(objectAdapter, argAdapter);
+ property.set(objectAdapter, argAdapter, InteractionInitiatedBy.USER);
return helper.propertyDetails(
propertyId,
@@ -248,12 +251,12 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
final OneToOneAssociation property = accessHelper.getPropertyThatIsVisibleForIntent(
propertyId, ObjectAdapterAccessHelper.Intent.MUTATE);
- final Consent consent = property.isAssociationValid(objectAdapter, null);
+ final Consent consent = property.isAssociationValid(objectAdapter, null, InteractionInitiatedBy.USER);
if (consent.isVetoed()) {
throw RestfulObjectsApplicationException.createWithMessage(HttpStatusCode.UNAUTHORIZED, consent.getReason());
}
- property.set(objectAdapter, null);
+ property.set(objectAdapter, null, InteractionInitiatedBy.USER);
return helper.propertyDetails(
propertyId,
@@ -311,14 +314,15 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
final ObjectSpecification collectionSpec = collection.getSpecification();
final String bodyAsString = Util.asStringUtf8(body);
- final ObjectAdapter argAdapter = new JsonParserHelper(getResourceContext(), collectionSpec).parseAsMapWithSingleValue(bodyAsString);
+ final ObjectAdapter argAdapter = new JsonParserHelper(getResourceContext(), collectionSpec).parseAsMapWithSingleValue(
+ bodyAsString);
- final Consent consent = collection.isValidToAdd(objectAdapter, argAdapter);
+ final Consent consent = collection.isValidToAdd(objectAdapter, argAdapter, InteractionInitiatedBy.USER);
if (consent.isVetoed()) {
throw RestfulObjectsApplicationException.createWithMessage(HttpStatusCode.UNAUTHORIZED, consent.getReason());
}
- collection.addElement(objectAdapter, argAdapter);
+ collection.addElement(objectAdapter, argAdapter, InteractionInitiatedBy.USER);
return helper.collectionDetails(collectionId, MemberReprMode.WRITE);
}
@@ -347,14 +351,15 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
final ObjectSpecification collectionSpec = collection.getSpecification();
final String bodyAsString = Util.asStringUtf8(body);
- final ObjectAdapter argAdapter = new JsonParserHelper(getResourceContext(), collectionSpec).parseAsMapWithSingleValue(bodyAsString);
+ final ObjectAdapter argAdapter = new JsonParserHelper(getResourceContext(), collectionSpec).parseAsMapWithSingleValue(
+ bodyAsString);
- final Consent consent = collection.isValidToAdd(objectAdapter, argAdapter);
+ final Consent consent = collection.isValidToAdd(objectAdapter, argAdapter, InteractionInitiatedBy.USER);
if (consent.isVetoed()) {
throw RestfulObjectsApplicationException.createWithMessage(HttpStatusCode.UNAUTHORIZED, consent.getReason());
}
- collection.addElement(objectAdapter, argAdapter);
+ collection.addElement(objectAdapter, argAdapter, InteractionInitiatedBy.USER);
return helper.collectionDetails(collectionId, MemberReprMode.WRITE);
}
@@ -378,14 +383,15 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
collectionId, ObjectAdapterAccessHelper.Intent.MUTATE);
final ObjectSpecification collectionSpec = collection.getSpecification();
- final ObjectAdapter argAdapter = new JsonParserHelper(getResourceContext(), collectionSpec).parseAsMapWithSingleValue(getResourceContext().getUrlUnencodedQueryString());
+ final ObjectAdapter argAdapter = new JsonParserHelper(getResourceContext(), collectionSpec).parseAsMapWithSingleValue(
+ getResourceContext().getUrlUnencodedQueryString());
- final Consent consent = collection.isValidToRemove(objectAdapter, argAdapter);
+ final Consent consent = collection.isValidToRemove(objectAdapter, argAdapter, InteractionInitiatedBy.USER);
if (consent.isVetoed()) {
throw RestfulObjectsApplicationException.createWithMessage(HttpStatusCode.UNAUTHORIZED, consent.getReason());
}
- collection.removeElement(objectAdapter, argAdapter);
+ collection.removeElement(objectAdapter, argAdapter, InteractionInitiatedBy.USER);
return helper.collectionDetails(collectionId, MemberReprMode.WRITE);
}
@@ -499,7 +505,6 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
- Where where = getResourceContext().getWhere();
return helper.invokeAction(actionId, arguments);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index 8d4fe5b..dec8328 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -37,6 +38,7 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext3;
+import org.apache.isis.viewer.restfulobjects.rendering.RendererContext4;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectLinkTo;
@@ -51,12 +53,14 @@ import org.apache.isis.viewer.restfulobjects.server.ResourceContext;
public class DomainResourceHelper {
- static class RepresentationServiceContextAdapter implements RepresentationService.Context3 {
+ static class RepresentationServiceContextAdapter implements RepresentationService.Context4 {
- private final RendererContext3 rendererContext;
+ private final RendererContext4 rendererContext;
private final ObjectAdapterLinkTo adapterLinkTo;
- RepresentationServiceContextAdapter(final RendererContext3 rendererContext, final ObjectAdapterLinkTo adapterLinkTo) {
+ RepresentationServiceContextAdapter(
+ final RendererContext4 rendererContext,
+ final ObjectAdapterLinkTo adapterLinkTo) {
this.rendererContext = rendererContext;
this.adapterLinkTo = adapterLinkTo;
}
@@ -160,6 +164,11 @@ public class DomainResourceHelper {
public boolean suppressMemberDisabledReason() {
return rendererContext.suppressMemberDisabledReason();
}
+
+ @Override
+ public InteractionInitiatedBy getInteractionInitiatedBy() {
+ return rendererContext.getInteractionInitiatedBy();
+ }
}
private final RepresentationService representationService;
@@ -324,7 +333,7 @@ public class DomainResourceHelper {
// invoke
final ObjectAdapter[] argArray2 = argAdapters.toArray(new ObjectAdapter[0]);
- final ObjectAdapter returnedAdapter = action.execute(objectAdapter, argArray2);
+ final ObjectAdapter returnedAdapter = action.execute(objectAdapter, argArray2, InteractionInitiatedBy.USER);
final ObjectAndActionInvocation objectAndActionInvocation =
new ObjectAndActionInvocation(this.objectAdapter, action, arguments, returnedAdapter);
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectActionArgHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectActionArgHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectActionArgHelper.java
index 7bb3fa2..0c81132 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectActionArgHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectActionArgHelper.java
@@ -21,6 +21,7 @@ import java.util.Map;
import com.google.common.collect.Lists;
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.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
@@ -64,7 +65,9 @@ public class ObjectActionArgHelper {
// validate individual arg
final ObjectActionParameter parameter = parameters.get(i);
final Object argPojo = argAdapter!=null?argAdapter.getObject():null;
- final String reasonNotValid = parameter.isValid(objectAdapter, argPojo, null);
+ final String reasonNotValid = parameter.isValid(objectAdapter, argPojo, InteractionInitiatedBy.USER,
+ null
+ );
if (reasonNotValid != null) {
argRepr.mapPut("invalidReason", reasonNotValid);
valid = false;
@@ -77,7 +80,7 @@ public class ObjectActionArgHelper {
// validate all args
final ObjectAdapter[] argArray = argAdapters.toArray(new ObjectAdapter[0]);
- final Consent consent = action.isProposedArgumentSetValid(objectAdapter, argArray);
+ final Consent consent = action.isProposedArgumentSetValid(objectAdapter, argArray, InteractionInitiatedBy.USER);
if (consent.isVetoed()) {
arguments.mapPut("x-ro-invalidReason", consent.getReason());
valid = false;
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectAdapterAccessHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectAdapterAccessHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectAdapterAccessHelper.java
index f979b81..a7f5596 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectAdapterAccessHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectAdapterAccessHelper.java
@@ -17,15 +17,19 @@
package org.apache.isis.viewer.restfulobjects.server.resources;
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.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.*;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberType;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberType;
/**
* Utility class that encapsulates the logic for checking access to the specified
@@ -122,14 +126,19 @@ public class ObjectAdapterAccessHelper {
final Where where = rendererContext.getWhere();
final String memberId = objectMember.getId();
- final AuthenticationSession authenticationSession = rendererContext.getAuthenticationSession();
- if (objectMember.isVisible(authenticationSession, objectAdapter, where).isVetoed()) {
+ final Consent visibilityConsent =
+ objectMember.isVisible(
+ objectAdapter, InteractionInitiatedBy.USER, where);
+ if (visibilityConsent.isVetoed()) {
throwNotFoundException(memberId, memberType);
}
if (intent.isMutate()) {
- final Consent usable = objectMember.isUsable(authenticationSession, objectAdapter, where);
- if (usable.isVetoed()) {
- throw RestfulObjectsApplicationException.createWithMessage(RestfulResponse.HttpStatusCode.FORBIDDEN, usable.getReason());
+ final Consent usabilityConsent = objectMember.isUsable(
+ objectAdapter, InteractionInitiatedBy.USER, where
+ );
+ if (usabilityConsent.isVetoed()) {
+ throw RestfulObjectsApplicationException.createWithMessage(RestfulResponse.HttpStatusCode.FORBIDDEN,
+ usabilityConsent.getReason());
}
}
return objectMember;
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectAdapterUpdateHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectAdapterUpdateHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectAdapterUpdateHelper.java
index 4b41b3c..0548ce4 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectAdapterUpdateHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ObjectAdapterUpdateHelper.java
@@ -17,8 +17,10 @@
package org.apache.isis.viewer.restfulobjects.server.resources;
import java.util.List;
+
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.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -68,8 +70,15 @@ public class ObjectAdapterUpdateHelper {
final ObjectSpecification propertySpec = property.getSpecification();
final String id = property.getId();
final JsonRepresentation propertyRepr = propertiesMap.getRepresentation(id);
- final Consent visibility = property.isVisible(resourceContext.getAuthenticationSession() , objectAdapter, resourceContext.getWhere());
- final Consent usability = property.isUsable(resourceContext.getAuthenticationSession() , objectAdapter, resourceContext.getWhere());
+ final Consent visibility = property.isVisible(
+ objectAdapter,
+ resourceContext.getInteractionInitiatedBy(),
+ resourceContext.getWhere());
+ final Consent usability = property.isUsable(
+ objectAdapter,
+ resourceContext.getInteractionInitiatedBy(),
+ resourceContext.getWhere()
+ );
final boolean invisible = visibility.isVetoed();
final boolean disabled = usability.isVetoed();
@@ -127,10 +136,13 @@ public class ObjectAdapterUpdateHelper {
continue;
}
// check if the proposed value is valid
- final Consent validity = property.isAssociationValid(objectAdapter, valueAdapter);
+ final Consent validity = property.isAssociationValid(objectAdapter, valueAdapter,
+ InteractionInitiatedBy.USER);
if (validity.isAllowed()) {
try {
- property.set(objectAdapter, valueAdapter);
+ property.set(
+ objectAdapter, valueAdapter,
+ resourceContext.getInteractionInitiatedBy());
} catch (final IllegalArgumentException ex) {
propertyRepr.mapPut("invalidReason", ex.getMessage());
allOk = false;
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
index 896e5fe..7f939b7 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
@@ -38,6 +38,7 @@ import org.apache.isis.core.commons.url.UrlEncodingUtils;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.services.ServiceUtil;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.runtime.authentication.AuthenticationManager;
@@ -113,7 +114,7 @@ public abstract class ResourceAbstract {
this.resourceContext = new ResourceContext(
representationType, httpHeaders, providers, uriInfo, request, where, urlUnencodedQueryString, httpServletRequest, httpServletResponse,
securityContext, getLocalization(), getAuthenticationSession(), getPersistenceSession(), getAdapterManager(), getSpecificationLoader(), getConfiguration(),
- getDeploymentType());
+ getDeploymentType(), InteractionInitiatedBy.USER);
}
protected ResourceContext getResourceContext() {
http://git-wip-us.apache.org/repos/asf/isis/blob/d120bf74/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_ensureCompatibleAcceptHeader.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_ensureCompatibleAcceptHeader.java b/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_ensureCompatibleAcceptHeader.java
index 55c4bae..8f65ede 100644
--- a/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_ensureCompatibleAcceptHeader.java
+++ b/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_ensureCompatibleAcceptHeader.java
@@ -161,7 +161,8 @@ public class ResourceContextTest_ensureCompatibleAcceptHeader {
private ResourceContext instantiateResourceContext(
final RepresentationType representationType) {
- return new ResourceContext(representationType, httpHeaders, null, null, null, null, null, httpServletRequest, null, null, null, null, null, null, null, null, null);
+ return new ResourceContext(representationType, httpHeaders, null, null, null, null, null, httpServletRequest, null, null, null, null, null, null, null, null, null,
+ null);
}
}