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:13 UTC

[82/87] [abbrv] isis git commit: ISIS-1044: removed the InteractionUtils' withFiltering() and its threadlocal; removed the disabling of the filtering (in ObjectAdapter.Util#isVisible()); also DeploymentCategoryProvider stuff.

ISIS-1044: removed the InteractionUtils' withFiltering() and its threadlocal; removed the disabling of the filtering (in ObjectAdapter.Util#isVisible()); also DeploymentCategoryProvider stuff.

namely:
- added new DeploymentCategoryProviderAware infrastructure, retrofitted RuntimeContext to provide a DeploymentCategoryProvider (cf AuthenticationSessionProvider)
- made DeploymentCategoryProvider extend Injectable, so that RuntimeContext's subcomponents (which include DeploymentCategory) can inject themselves, eg into facet factories)
- made FacetFactoryAbstract implement AuthenticationSessionProviderAware and DeploymentCategoryProviderAware, so that all facets will be able to obtain the authSession and deployment category for themselves (this still to do)
- made FormAbstract, FormComponentPanelAbstract and PanelAbstract all implement DeploymentCategoryProvider (because they also all implement AuthenticationSessionProvider)
- made IsisWicketApplication implement DeploymentCategoryProvider (because it also implements AuthenticationSessionProvider)

also:
- changed order of params in ObjectAction#executeWithRuleChecking(...)


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/eab298d3
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/eab298d3
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/eab298d3

Branch: refs/heads/master
Commit: eab298d3425dbf1a4fbacce2124f4943e06f8bb8
Parents: d120bf7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 3 10:47:04 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 3 10:54:54 2015 +0100

----------------------------------------------------------------------
 .../core/metamodel/adapter/ObjectAdapter.java   |  2 +-
 .../deployment/DeploymentCategoryProvider.java  |  4 +-
 .../DeploymentCategoryProviderAbstract.java     | 29 +++++++++
 .../DeploymentCategoryProviderAware.java        | 29 +++++++++
 .../metamodel/facets/FacetFactoryAbstract.java  | 26 +++++++-
 ...onInvocationFacetForDomainEventAbstract.java |  4 +-
 .../all/i18n/TranslationFacetFactory.java       |  3 +
 .../CollectionAccessorFacetViaAccessor.java     |  4 +-
 .../PropertyAccessorFacetViaAccessor.java       |  4 +-
 .../interactions/InteractionUtils.java          | 25 --------
 .../runtimecontext/RuntimeContext.java          |  3 +
 .../runtimecontext/RuntimeContextAbstract.java  | 17 ++++++
 .../container/DomainObjectContainerDefault.java |  5 +-
 .../metamodel/spec/feature/ObjectAction.java    |  3 +-
 .../specloader/specimpl/ObjectActionImpl.java   |  3 +-
 .../TitleAnnotationFacetFactoryTest.java        | 24 ++++++++
 .../core/runtime/system/DeploymentType.java     |  4 +-
 .../wicket/viewer/IsisWicketApplication.java    | 34 ++++++++---
 .../viewer/wicket/model/models/ActionModel.java | 14 ++---
 .../model/models/EntityCollectionModel.java     |  9 +--
 .../viewer/wicket/model/models/EntityModel.java | 10 +--
 .../viewer/wicket/model/models/ScalarModel.java | 64 +++++---------------
 .../collection/bulk/BulkActionsLinkFactory.java |  5 +-
 .../scalars/reference/ReferencePanel.java       |  5 --
 .../FormComponentPanelAbstract.java             | 17 +++++-
 .../valuechoices/ValueChoicesSelect2Panel.java  |  5 --
 .../viewer/wicket/ui/panels/FormAbstract.java   | 22 +++++--
 .../viewer/wicket/ui/panels/PanelAbstract.java  | 18 +++++-
 .../handlers/DomainObjectInvocationHandler.java | 32 +---------
 29 files changed, 251 insertions(+), 173 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
index d834d00..e6bbb13 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
@@ -406,7 +406,7 @@ public interface ObjectAdapter extends Instance, org.apache.isis.applib.annotati
             final VisibilityContext<?> context = createVisibleInteractionContext(adapter, authenticationSession,
                     deploymentCategory, interactionInitiatedBy);
             InteractionResult visibleResult = InteractionUtils.isVisibleResult(objectSpecification, context);
-            return true || visibleResult.isNotVetoing();
+            return visibleResult.isNotVetoing();
         }
 
         private static VisibilityContext<?> createVisibleInteractionContext(

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java
index ff9aac1..f162be4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.deployment;
 
-public interface DeploymentCategoryProvider {
+import org.apache.isis.core.commons.components.Injectable;
+
+public interface DeploymentCategoryProvider extends Injectable {
     public DeploymentCategory getDeploymentCategory();
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProviderAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProviderAbstract.java
new file mode 100644
index 0000000..10539d4
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProviderAbstract.java
@@ -0,0 +1,29 @@
+/**
+ *  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.core.metamodel.deployment;
+
+public abstract class DeploymentCategoryProviderAbstract implements DeploymentCategoryProvider {
+
+    @Override
+    public void injectInto(final Object candidate) {
+        if (DeploymentCategoryProviderAware.class.isAssignableFrom(candidate.getClass())) {
+            final DeploymentCategoryProviderAware cast = DeploymentCategoryProviderAware.class.cast(candidate);
+            cast.setDeploymentCategoryProvider(this);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProviderAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProviderAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProviderAware.java
new file mode 100644
index 0000000..8285b69
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProviderAware.java
@@ -0,0 +1,29 @@
+/*
+ *  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.core.metamodel.deployment;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+public interface DeploymentCategoryProviderAware {
+
+    @Programmatic
+    public void setDeploymentCategoryProvider(DeploymentCategoryProvider deploymentCategoryProvider);
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
index d68d11a..01ab99b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
@@ -23,15 +23,22 @@ import java.util.List;
 
 import com.google.common.collect.ImmutableList;
 
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProviderAware;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
 
-public abstract class FacetFactoryAbstract implements FacetFactory, SpecificationLoaderAware {
+public abstract class FacetFactoryAbstract implements FacetFactory, SpecificationLoaderAware,
+        AuthenticationSessionProviderAware, DeploymentCategoryProviderAware {
 
     private final List<FeatureType> featureTypes;
 
     private SpecificationLoader specificationLoader;
+    private AuthenticationSessionProvider authenticationSessionProvider;
+    private DeploymentCategoryProvider deploymentCategoryProvider;
 
     public FacetFactoryAbstract(final List<FeatureType> featureTypes) {
         this.featureTypes = ImmutableList.copyOf(featureTypes);
@@ -70,4 +77,21 @@ public abstract class FacetFactoryAbstract implements FacetFactory, Specificatio
         this.specificationLoader = specificationLookup;
     }
 
+    @Override
+    public void setAuthenticationSessionProvider(final AuthenticationSessionProvider authenticationSessionProvider) {
+        this.authenticationSessionProvider = authenticationSessionProvider;
+    }
+
+    protected AuthenticationSessionProvider getAuthenticationSessionProvider() {
+        return authenticationSessionProvider;
+    }
+
+    @Override
+    public void setDeploymentCategoryProvider(final DeploymentCategoryProvider deploymentCategoryProvider) {
+        this.deploymentCategoryProvider = deploymentCategoryProvider;
+    }
+
+    protected DeploymentCategoryProvider getDeploymentCategoryProvider() {
+        return deploymentCategoryProvider;
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 356ab42..415cb85 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -68,7 +68,6 @@ import org.apache.isis.core.metamodel.facets.actions.publish.PublishedActionFace
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -230,8 +229,7 @@ public abstract class ActionInvocationFacetForDomainEventAbstract
             return null;
         }
 
-        boolean filterForVisibility = InteractionUtils.FILTERING.get() && getConfiguration()
-                .getBoolean("isis.reflector.facet.filterVisibility", true);
+        boolean filterForVisibility = getConfiguration().getBoolean("isis.reflector.facet.filterVisibility", true);
         if(filterForVisibility) {
             final Object result = invocationResultAdapter.getObject();
             if(result instanceof Collection || result.getClass().isArray()) {

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i18n/TranslationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i18n/TranslationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i18n/TranslationFacetFactory.java
index c8fe2e1..9f74351 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i18n/TranslationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i18n/TranslationFacetFactory.java
@@ -21,6 +21,8 @@ package org.apache.isis.core.metamodel.facets.all.i18n;
 
 import com.google.common.base.Strings;
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -140,4 +142,5 @@ public class TranslationFacetFactory extends FacetFactoryAbstract implements Con
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         this.servicesInjector = servicesInjector;
     }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index 20c4004..b203bd4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -35,7 +35,6 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
-import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 
 public class CollectionAccessorFacetViaAccessor
@@ -78,8 +77,7 @@ public class CollectionAccessorFacetViaAccessor
 
         final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray);
 
-        boolean filterForVisibility = InteractionUtils.FILTERING.get() && getConfiguration()
-                .getBoolean("isis.reflector.facet.filterVisibility", true);
+        boolean filterForVisibility = getConfiguration().getBoolean("isis.reflector.facet.filterVisibility", true);
         if(filterForVisibility) {
             final List<ObjectAdapter> visibleAdapters =
                     ObjectAdapter.Util.visibleAdapters(

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index 10a26c8..9207b60 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -32,7 +32,6 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
-import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 
 public class PropertyAccessorFacetViaAccessor
@@ -76,8 +75,7 @@ public class PropertyAccessorFacetViaAccessor
             return null;
         }
 
-        boolean filterForVisibility = InteractionUtils.FILTERING.get() && getConfiguration()
-                .getBoolean("isis.reflector.facet.filterVisibility", true);
+        boolean filterForVisibility = getConfiguration().getBoolean("isis.reflector.facet.filterVisibility", true);
         if(filterForVisibility) {
             final ObjectAdapter referencedAdapter = getAdapterManager().adapterFor(referencedObject);
             final boolean visible = ObjectAdapter.Util

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java
index 3063ff2..0af9114 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.interactions;
 
 import java.util.List;
-import java.util.concurrent.Callable;
 
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.consent.InteractionResultSet;
@@ -30,30 +29,6 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 
 public final class InteractionUtils {
 
-    /**
-     * Do NOT call directly, instead use {@link #withFiltering(Callable)}.
-     */
-    public static ThreadLocal<Boolean> FILTERING = new ThreadLocal() {
-        @Override
-        protected Boolean initialValue() {
-            return false;
-        }
-    };
-
-    public static <T> T withFiltering(Callable<T> callable)  {
-        try {
-            FILTERING.set(true);
-            return callable.call();
-        } catch (Exception e) {
-            if(e instanceof RuntimeException) {
-                throw (RuntimeException) e;
-            }
-            throw new RuntimeException(e);
-        } finally {
-            FILTERING.set(false);
-        }
-    }
-
     private InteractionUtils() {
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.java
index 57dea94..30643b0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.java
@@ -31,6 +31,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.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 
@@ -40,6 +41,8 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoader;
  */
 public interface RuntimeContext extends Injectable, ApplicationScopedComponent {
 
+    public DeploymentCategoryProvider getDeploymentCategoryProvider();
+
     public DeploymentCategory getDeploymentCategory();
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
index a77be38..16a2b12 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
@@ -23,7 +23,12 @@ import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
 import java.util.Properties;
+
 import com.google.common.collect.Lists;
+
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProviderAbstract;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpiDelegator;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -61,6 +66,7 @@ public abstract class RuntimeContextAbstract implements RuntimeContext, Specific
     protected void injectSubcomponentsInto(final Object candidate) {
         getAdapterManager().injectInto(candidate);
         getAuthenticationSessionProvider().injectInto(candidate);
+        getDeploymentCategoryProvider().injectInto(candidate);
         getServicesInjector().injectInto(candidate);
         getDomainObjectServices().injectInto(candidate);
         getLocalizationProvider().injectInto(candidate);
@@ -73,6 +79,17 @@ public abstract class RuntimeContextAbstract implements RuntimeContext, Specific
     }
 
     @Override
+    public DeploymentCategoryProvider getDeploymentCategoryProvider() {
+        return new DeploymentCategoryProviderAbstract() {
+            @Override
+            public DeploymentCategory getDeploymentCategory() {
+                return RuntimeContextAbstract.this.getDeploymentCategory();
+            }
+        };
+    }
+
+
+    @Override
     public SpecificationLoader getSpecificationLoader() {
         return specificationLookupDelegator;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
index a8319a9..b961550 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
@@ -79,7 +79,10 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
 
 @DomainService(nature = NatureOfService.DOMAIN)
-public class DomainObjectContainerDefault implements DomainObjectContainer, QuerySubmitterAware, ObjectDirtierAware, DomainObjectServicesAware, ObjectPersistorAware, SpecificationLoaderAware, AuthenticationSessionProviderAware, AdapterManagerAware, LocalizationProviderAware, ExceptionRecognizer {
+public class DomainObjectContainerDefault
+        implements DomainObjectContainer, QuerySubmitterAware, ObjectDirtierAware, DomainObjectServicesAware,
+        ObjectPersistorAware, SpecificationLoaderAware, AuthenticationSessionProviderAware, AdapterManagerAware,
+        LocalizationProviderAware, ExceptionRecognizer {
 
     //region > titleOf
 

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/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 594c8c8..7e0fbae 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
@@ -104,7 +104,8 @@ public interface ObjectAction extends ObjectMember {
             final ObjectAdapter target,
             final ObjectAdapter[] parameters,
             final AuthenticationSession authenticationSession,
-            final Where where, final InteractionInitiatedBy interactionInitiatedBy) throws AuthorizationException;
+            final InteractionInitiatedBy interactionInitiatedBy,
+            final Where where) throws AuthorizationException;
 
     /**
      * Invokes the action's method on the target object given the specified set

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/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 8cc209f..6c5d4fb 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
@@ -353,7 +353,8 @@ public class ObjectActionImpl extends ObjectMemberAbstract implements ObjectActi
             final ObjectAdapter target,
             final ObjectAdapter[] arguments,
             final AuthenticationSession authenticationSession,
-            final Where where, final InteractionInitiatedBy interactionInitiatedBy) {
+            final InteractionInitiatedBy interactionInitiatedBy,
+            final Where where) {
 
         // see it?
         final Consent visibility = isVisible(target, interactionInitiatedBy, where);

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
index f6948c4..dda81a3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
@@ -31,9 +31,13 @@ import org.junit.Ignore;
 import org.junit.Test;
 
 import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.LocalizationDefault;
 import org.apache.isis.core.metamodel.adapter.LocalizationProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
@@ -57,6 +61,12 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
     @Allowing
     @Mock
     private LocalizationProvider mockLocalizationProvider;
+    @Mock
+    private DeploymentCategoryProvider mockDeploymentCategoryProvider;
+    @Mock
+    private AuthenticationSessionProvider mockAuthenticationSessionProvider;
+    @Mock
+    private AuthenticationSession mockAuthenticationSession;
 
     @Before
     public void setUp() throws Exception {
@@ -66,6 +76,8 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
         facetFactory = context.getClassUnderTest();
         facetFactory.setAdapterManager(mockAdapterManager);
         facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setAuthenticationSessionProvider(mockAuthenticationSessionProvider);
+        facetFactory.setDeploymentCategoryProvider(mockDeploymentCategoryProvider);
 
         context.checking(new Expectations() {
             {
@@ -73,6 +85,18 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
                 will(returnValue(new LocalizationDefault()));
             }
         });
+        context.checking(new Expectations() {
+            {
+                allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
+                will(returnValue(DeploymentCategory.PRODUCTION));
+            }
+        });
+        context.checking(new Expectations() {
+            {
+                allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
+                will(returnValue(mockAuthenticationSession));
+            }
+        });
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java
index 3cde2b1..1371ec5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java
@@ -26,7 +26,7 @@ import com.google.common.collect.Lists;
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.commons.debug.DebuggableWithTitle;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProviderAbstract;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 
 /**
@@ -54,7 +54,7 @@ import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
  * {@link DeploymentType}, eg using the <tt>--type</tt> command line arg</li>
  * </ul>
  */
-public class DeploymentType implements DeploymentCategoryProvider {
+public class DeploymentType extends DeploymentCategoryProviderAbstract {
 
     private static List<DeploymentType> deploymentTypes = Lists.newArrayList();
 

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index ac1de1b..eefbcaa 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -19,20 +19,13 @@
 
 package org.apache.isis.viewer.wicket.viewer;
 
-import de.agilecoders.wicket.core.Bootstrap;
-import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.BootstrapBaseBehavior;
-import de.agilecoders.wicket.core.settings.BootstrapSettings;
-import de.agilecoders.wicket.core.settings.IBootstrapSettings;
-import de.agilecoders.wicket.webjars.WicketWebjars;
-import de.agilecoders.wicket.webjars.settings.IWebjarsSettings;
-import de.agilecoders.wicket.webjars.settings.WebjarsSettings;
-import net.ftlines.wicketsource.WicketSource;
-
 import java.util.Collections;
 import java.util.List;
 import java.util.ServiceLoader;
 import java.util.Set;
+
 import javax.servlet.ServletContext;
+
 import com.google.common.base.Function;
 import com.google.common.base.Throwables;
 import com.google.common.collect.Iterables;
@@ -43,6 +36,7 @@ import com.google.inject.Inject;
 import com.google.inject.Injector;
 import com.google.inject.Module;
 import com.vaynberg.wicket.select2.ApplicationSettings;
+
 import org.apache.wicket.Application;
 import org.apache.wicket.ConverterLocator;
 import org.apache.wicket.IConverterLocator;
@@ -66,6 +60,7 @@ import org.apache.wicket.settings.IRequestCycleSettings.RenderStrategy;
 import org.apache.wicket.util.time.Duration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
@@ -78,6 +73,8 @@ import org.apache.isis.core.commons.resource.ResourceStreamSourceContextLoaderCl
 import org.apache.isis.core.commons.resource.ResourceStreamSourceCurrentClassClassPath;
 import org.apache.isis.core.commons.resource.ResourceStreamSourceFileSystem;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.logging.IsisLoggingConfigurer;
 import org.apache.isis.core.runtime.runner.IsisInjectModule;
@@ -112,6 +109,15 @@ import org.apache.isis.viewer.wicket.viewer.integration.wicket.ConverterForObjec
 import org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis;
 import org.apache.isis.viewer.wicket.viewer.settings.IsisResourceSettings;
 
+import de.agilecoders.wicket.core.Bootstrap;
+import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.BootstrapBaseBehavior;
+import de.agilecoders.wicket.core.settings.BootstrapSettings;
+import de.agilecoders.wicket.core.settings.IBootstrapSettings;
+import de.agilecoders.wicket.webjars.WicketWebjars;
+import de.agilecoders.wicket.webjars.settings.IWebjarsSettings;
+import de.agilecoders.wicket.webjars.settings.WebjarsSettings;
+import net.ftlines.wicketsource.WicketSource;
+
 /**
  * Main application, subclassing the Wicket {@link Application} and
  * bootstrapping Isis.
@@ -135,7 +141,10 @@ import org.apache.isis.viewer.wicket.viewer.settings.IsisResourceSettings;
  * Alternatively, {@link ComponentFactory}s can be specified by overridding {@link #newIsisWicketModule()}.
  * This mechanism allows a number of other aspects to be customized.
  */
-public class IsisWicketApplication extends AuthenticatedWebApplication implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, AuthenticationSessionProvider {
+public class IsisWicketApplication
+        extends AuthenticatedWebApplication
+        implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, AuthenticationSessionProvider,
+        DeploymentCategoryProvider {
 
     private static final long serialVersionUID = 1L;
     
@@ -803,4 +812,9 @@ public class IsisWicketApplication extends AuthenticatedWebApplication implement
             cast.setAuthenticationSessionProvider(this);
         }
     }
+
+    @Override
+    public DeploymentCategory getDeploymentCategory() {
+        return deploymentType.getDeploymentCategory();
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 9e35254..80e64d6 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -26,7 +26,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.concurrent.Callable;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -62,7 +61,6 @@ import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
-import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -468,14 +466,10 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> {
 
         final AuthenticationSession session = getAuthenticationSession();
         final ObjectAdapter resultAdapter =
-                InteractionUtils.withFiltering(new Callable<ObjectAdapter>() {
-                    @Override public ObjectAdapter call() throws Exception {
-                        return action
-                                .executeWithRuleChecking(
-                                        targetAdapter, arguments, session,
-                                        WHERE_FOR_ACTION_INVOCATION, InteractionInitiatedBy.USER);
-                    }
-                });
+                action.executeWithRuleChecking(
+                        targetAdapter, arguments, session,
+                        InteractionInitiatedBy.USER,
+                        WHERE_FOR_ACTION_INVOCATION);
         return resultAdapter;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index 848111c..514faf8 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -107,14 +107,7 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
                 final ObjectAdapter adapter = entityCollectionModel.parentObjectAdapterMemento.getObjectAdapter(
                         ConcurrencyChecking.NO_CHECK);
                 final OneToManyAssociation collection = entityCollectionModel.collectionMemento.getCollection();
-                final ObjectAdapter collectionAsAdapter =
-                        InteractionUtils.withFiltering(
-                                new Callable<ObjectAdapter>() {
-                                    @Override
-                                    public ObjectAdapter call() throws Exception {
-                                        return collection.get(adapter, InteractionInitiatedBy.USER);
-                                   }
-                                });
+                final ObjectAdapter collectionAsAdapter = collection.get(adapter, InteractionInitiatedBy.USER);
 
                 final List<Object> objectList = asIterable(collectionAsAdapter);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index acaffc7..460f843 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -22,11 +22,12 @@ package org.apache.isis.viewer.wicket.model.models;
 import java.io.Serializable;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Callable;
 
 import com.google.common.collect.Maps;
+
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+
 import org.apache.isis.applib.annotation.BookmarkPolicy;
 import org.apache.isis.applib.services.memento.MementoService.Memento;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -39,7 +40,6 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecifications.MemberGroupLayoutHint;
@@ -382,11 +382,7 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> {
             final ScalarModel scalarModel = propertyScalarModels.get(pm);
             final ObjectAdapter adapter = getObject();
             final ObjectAdapter associatedAdapter =
-                    InteractionUtils.withFiltering(new Callable<ObjectAdapter>() {
-                        @Override public ObjectAdapter call() throws Exception {
-                            return  pm.getProperty().get(adapter, InteractionInitiatedBy.USER);
-                        }
-                    });
+                    pm.getProperty().get(adapter, InteractionInitiatedBy.USER);
             scalarModel.setObject(associatedAdapter);
         }
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index 2573f0c..c44d749 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -175,17 +175,11 @@ public class ScalarModel extends EntityModel implements LinksProvider {
                     final DeploymentCategory deploymentCategory) {
                 final PropertyMemento propertyMemento = scalarModel.getPropertyMemento();
                 final OneToOneAssociation property = propertyMemento.getProperty();
-                final ObjectAdapter[] choices =
-                        InteractionUtils.withFiltering(new Callable<ObjectAdapter[]>() {
-                            @Override
-                            public ObjectAdapter[] call() throws Exception {
-                                ObjectAdapter parentAdapter = scalarModel.parentObjectAdapterMemento
-                                        .getObjectAdapter(ConcurrencyChecking.NO_CHECK);
-                                return property.getChoices(
-                                        parentAdapter,
-                                        InteractionInitiatedBy.USER);
-                            }
-                        });
+                ObjectAdapter parentAdapter = scalarModel.parentObjectAdapterMemento
+                        .getObjectAdapter(ConcurrencyChecking.NO_CHECK);
+                final ObjectAdapter[] choices = property.getChoices(
+                        parentAdapter,
+                        InteractionInitiatedBy.USER);
 
                 return choicesAsList(choices);
             }
@@ -208,14 +202,9 @@ public class ScalarModel extends EntityModel implements LinksProvider {
                 final ObjectAdapter parentAdapter =
                         scalarModel.parentObjectAdapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
                 final ObjectAdapter[] choices =
-                        InteractionUtils.withFiltering(new Callable<ObjectAdapter[]>() {
-                            @Override
-                            public ObjectAdapter[] call() throws Exception {
-                                return property.getAutoComplete(
-                                        parentAdapter, searchArg,
-                                        authenticationSession, deploymentCategory, InteractionInitiatedBy.USER);
-                            }
-                        });
+                        property.getAutoComplete(
+                                parentAdapter, searchArg,
+                                authenticationSession, deploymentCategory, InteractionInitiatedBy.USER);
                 return choicesAsList(choices);
             }
 
@@ -279,12 +268,7 @@ public class ScalarModel extends EntityModel implements LinksProvider {
                 final ObjectAdapter parentAdapter =
                         scalarModel.parentObjectAdapterMemento.getObjectAdapter(ConcurrencyChecking.CHECK);
                 final ObjectAdapter associatedAdapter =
-                        InteractionUtils.withFiltering(new Callable<ObjectAdapter>() {
-                            @Override
-                            public ObjectAdapter call() throws Exception {
-                                return property.get(parentAdapter, InteractionInitiatedBy.USER);
-                            }
-                        });
+                        property.get(parentAdapter, InteractionInitiatedBy.USER);
                 scalarModel.setObject(associatedAdapter);
             }
         },
@@ -382,14 +366,9 @@ public class ScalarModel extends EntityModel implements LinksProvider {
                 final ObjectAdapter parentAdapter =
                         scalarModel.parentObjectAdapterMemento.getObjectAdapter(ConcurrencyChecking.CHECK);
                 final ObjectAdapter[] choices =
-                    InteractionUtils.withFiltering(new Callable<ObjectAdapter[]>() {
-                        @Override
-                        public ObjectAdapter[] call() throws Exception {
-                            return actionParameter.getChoices(
-                                    parentAdapter, argumentsIfAvailable,
-                                    InteractionInitiatedBy.USER);
-                        }
-                    });
+                        actionParameter.getChoices(
+                                parentAdapter, argumentsIfAvailable,
+                                InteractionInitiatedBy.USER);
                 return choicesAsList(choices);
             }
 
@@ -410,14 +389,9 @@ public class ScalarModel extends EntityModel implements LinksProvider {
 
                 final ObjectAdapter parentAdapter =
                         scalarModel.parentObjectAdapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
-                final ObjectAdapter[] choices =
-                    InteractionUtils.withFiltering(new Callable<ObjectAdapter[]>() {
-                        @Override public ObjectAdapter[] call() throws Exception {
-                            return actionParameter.getAutoComplete(
-                                    parentAdapter, searchArg,
-                                    InteractionInitiatedBy.USER);
-                        }
-                    });
+                final ObjectAdapter[] choices = actionParameter.getAutoComplete(
+                        parentAdapter, searchArg,
+                        InteractionInitiatedBy.USER);
                 return choicesAsList(choices);
             }
 
@@ -601,13 +575,7 @@ public class ScalarModel extends EntityModel implements LinksProvider {
     private void getAndStore(final ObjectAdapterMemento parentAdapterMemento) {
         final OneToOneAssociation property = propertyMemento.getProperty();
         final ObjectAdapter parentAdapter = parentAdapterMemento.getObjectAdapter(ConcurrencyChecking.CHECK);
-        final ObjectAdapter associatedAdapter =
-                InteractionUtils.withFiltering(new Callable<ObjectAdapter>() {
-                    @Override
-                    public ObjectAdapter call() throws Exception {
-                        return property.get(parentAdapter, InteractionInitiatedBy.USER);
-                    }
-                });
+        final ObjectAdapter associatedAdapter = property.get(parentAdapter, InteractionInitiatedBy.USER);
         setObject(associatedAdapter);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
index b9bcd47..1929b5d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
@@ -128,8 +128,9 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
                             bulkInteractionContext.setIndex(i++);
                         }
 
-                        lastReturnedAdapter = objectAction.executeWithRuleChecking(adapter, new ObjectAdapter[]{}, getAuthenticationSession(), ActionModel.WHERE_FOR_ACTION_INVOCATION,
-                                InteractionInitiatedBy.USER);
+                        lastReturnedAdapter = objectAction.executeWithRuleChecking(adapter, new ObjectAdapter[]{}, getAuthenticationSession(),
+                                InteractionInitiatedBy.USER, ActionModel.WHERE_FOR_ACTION_INVOCATION
+                        );
                     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index 8f62881..ae59684 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -44,7 +44,6 @@ 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.ConcurrencyChecking;
 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.facets.object.autocomplete.AutoCompleteFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -528,10 +527,6 @@ public class ReferencePanel extends ScalarPanelAbstract {
     }
 
 
-    private DeploymentCategory getDeploymentCategory() {
-        return getDeploymentType().getDeploymentCategory();
-    }
-
     @Inject
     private WicketViewerSettings wicketViewerSettings;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
index 59f152e..fa749df 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
@@ -20,16 +20,21 @@
 package org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent;
 
 import java.util.List;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Session;
 import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.markup.html.form.FormComponentPanel;
 import org.apache.wicket.model.IModel;
+
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProviderAware;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
@@ -44,7 +49,8 @@ import org.apache.isis.viewer.wicket.ui.util.Components;
  * Wicket {@link FormComponentPanel}, providing the ability to build up the
  * panel using other {@link ComponentType}s.
  */
-public abstract class FormComponentPanelAbstract<T> extends FormComponentPanel<T> implements PersistenceSessionProvider, AuthenticationSessionProvider {
+public abstract class FormComponentPanelAbstract<T> extends FormComponentPanel<T>
+        implements PersistenceSessionProvider, AuthenticationSessionProvider, DeploymentCategoryProvider {
 
     private static final long serialVersionUID = 1L;
 
@@ -137,6 +143,11 @@ public abstract class FormComponentPanelAbstract<T> extends FormComponentPanel<T
         return ((AuthenticationSessionProvider) Session.get()).getAuthenticationSession();
     }
 
+    @Override
+    public DeploymentCategory getDeploymentCategory() {
+        return IsisContext.getDeploymentType().getDeploymentCategory();
+    }
+
     // ///////////////////////////////////////////////////////////////////
     // Dependencies (from IsisContext)
     // ///////////////////////////////////////////////////////////////////
@@ -161,6 +172,10 @@ public abstract class FormComponentPanelAbstract<T> extends FormComponentPanel<T
             final AuthenticationSessionProviderAware cast = AuthenticationSessionProviderAware.class.cast(candidate);
             cast.setAuthenticationSessionProvider(this);
         }
+        if (DeploymentCategoryProviderAware.class.isAssignableFrom(candidate.getClass())) {
+            final DeploymentCategoryProviderAware cast = DeploymentCategoryProviderAware.class.cast(candidate);
+            cast.setDeploymentCategoryProvider(this);
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
index 64018b2..8a05dd3 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
@@ -38,7 +38,6 @@ import org.apache.wicket.model.Model;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
@@ -286,10 +285,6 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
         return scalarModel;
     }
 
-    private DeploymentCategory getDeploymentCategory() {
-        return getDeploymentType().getDeploymentCategory();
-    }
-
     @Inject
     private WicketViewerSettings wicketViewerSettings;
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
index 2b8260d..cc3f90b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
@@ -20,18 +20,20 @@
 package org.apache.isis.viewer.wicket.ui.panels;
 
 import java.util.List;
-import org.apache.wicket.markup.head.CssHeaderItem;
-import org.apache.wicket.markup.head.IHeaderResponse;
+
 import org.apache.wicket.markup.html.IHeaderContributor;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.IFormSubmitter;
 import org.apache.wicket.model.IModel;
-import org.apache.wicket.request.resource.CssResourceReference;
+
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProviderAware;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.model.isis.PersistenceSessionProvider;
@@ -40,7 +42,9 @@ import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAcc
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
 
-public abstract class FormAbstract<T> extends Form<T> implements IHeaderContributor, ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, AuthenticationSessionProvider, PersistenceSessionProvider {
+public abstract class FormAbstract<T> extends Form<T>
+        implements IHeaderContributor, ComponentFactoryRegistryAccessor, PageClassRegistryAccessor,
+        AuthenticationSessionProvider, DeploymentCategoryProvider, PersistenceSessionProvider {
 
     private static final long serialVersionUID = 1L;
 
@@ -121,6 +125,12 @@ public abstract class FormAbstract<T> extends Form<T> implements IHeaderContribu
         return IsisContext.getAuthenticationSession();
     }
 
+    @Override
+    public DeploymentCategory getDeploymentCategory() {
+        return IsisContext.getDeploymentType().getDeploymentCategory();
+    }
+
+    // UNUSED ?
     protected List<ObjectAdapter> getServiceAdapters() {
         return IsisContext.getPersistenceSession().getServices();
     }
@@ -135,6 +145,10 @@ public abstract class FormAbstract<T> extends Form<T> implements IHeaderContribu
             final AuthenticationSessionProviderAware cast = AuthenticationSessionProviderAware.class.cast(candidate);
             cast.setAuthenticationSessionProvider(this);
         }
+        if (DeploymentCategoryProviderAware.class.isAssignableFrom(candidate.getClass())) {
+            final DeploymentCategoryProviderAware cast = DeploymentCategoryProviderAware.class.cast(candidate);
+            cast.setDeploymentCategoryProvider(this);
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
index 15ef6f0..5026844 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
@@ -28,6 +28,9 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProviderAware;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
@@ -41,7 +44,8 @@ import org.apache.isis.viewer.wicket.ui.util.Components;
  * Convenience adapter for {@link Panel}s built up using {@link ComponentType}s.
  */
 // TODO mgrigorov: extend GenericPanel and make T the type of the model object, not the model
-public abstract class PanelAbstract<T extends IModel<?>> extends Panel implements IHeaderContributor, PersistenceSessionProvider, AuthenticationSessionProvider {
+public abstract class PanelAbstract<T extends IModel<?>> extends Panel implements IHeaderContributor, PersistenceSessionProvider, AuthenticationSessionProvider,
+        DeploymentCategoryProvider {
 
     private static final long serialVersionUID = 1L;
 
@@ -114,7 +118,7 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel implement
     }
 
 
-        // ///////////////////////////////////////////////////////////////////
+    // ///////////////////////////////////////////////////////////////////
     // Convenience
     // ///////////////////////////////////////////////////////////////////
 
@@ -130,6 +134,12 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel implement
         return asa.getAuthenticationSession();
     }
 
+    @Override
+    public DeploymentCategory getDeploymentCategory() {
+        return IsisContext.getDeploymentType().getDeploymentCategory();
+    }
+
+
     // ///////////////////////////////////////////////////////////////////
     // Dependencies (from IsisContext)
     // ///////////////////////////////////////////////////////////////////
@@ -163,6 +173,10 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel implement
             final AuthenticationSessionProviderAware cast = AuthenticationSessionProviderAware.class.cast(candidate);
             cast.setAuthenticationSessionProvider(this);
         }
+        if (DeploymentCategoryProviderAware.class.isAssignableFrom(candidate.getClass())) {
+            final DeploymentCategoryProviderAware cast = DeploymentCategoryProviderAware.class.cast(candidate);
+            cast.setDeploymentCategoryProvider(this);
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/eab298d3/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
index eaad66a..e62ec6c 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -26,7 +26,6 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Callable;
 
 import com.google.common.base.Function;
 import com.google.common.collect.Iterables;
@@ -61,7 +60,6 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet.Intent;
-import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
@@ -389,15 +387,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         resolveIfRequired(targetAdapter);
 
         final InteractionInitiatedBy interactionInitiatedBy = getInteractionInitiatedBy();
-        final ObjectAdapter currentReferencedAdapter =
-                executionMode.shouldEnforceRules()
-                        ? InteractionUtils.withFiltering(new Callable<ObjectAdapter>() {
-                                @Override
-                                public ObjectAdapter call() throws Exception {
-                                    return property.get(targetAdapter, interactionInitiatedBy);
-                                }
-                            })
-                        : property.get(targetAdapter, interactionInitiatedBy);
+        final ObjectAdapter currentReferencedAdapter = property.get(targetAdapter, interactionInitiatedBy);
 
         final Object currentReferencedObj = ObjectAdapter.Util.unwrap(currentReferencedAdapter);
 
@@ -467,15 +457,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         resolveIfRequired(targetAdapter);
 
         final InteractionInitiatedBy interactionInitiatedBy = getInteractionInitiatedBy();
-        final ObjectAdapter currentReferencedAdapter =
-                executionMode.shouldEnforceRules()
-                        ? InteractionUtils.withFiltering(new Callable<ObjectAdapter>() {
-                                @Override
-                                public ObjectAdapter call() throws Exception {
-                                    return collection.get(targetAdapter, interactionInitiatedBy);
-                                }
-                            })
-                        : collection.get(targetAdapter, interactionInitiatedBy);
+        final ObjectAdapter currentReferencedAdapter = collection.get(targetAdapter, interactionInitiatedBy);
 
         final Object currentReferencedObj = ObjectAdapter.Util.unwrap(currentReferencedAdapter);
 
@@ -650,15 +632,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         if (getExecutionMode().shouldExecute()) {
             final InteractionInitiatedBy interactionInitiatedBy = getInteractionInitiatedBy();
             final ObjectAdapter actionReturnNO =
-                    executionMode.shouldEnforceRules()
-                            ? InteractionUtils.withFiltering(new Callable<ObjectAdapter>() {
-                                    @Override
-                                    public ObjectAdapter call() throws Exception {
-                                        return objectAction.execute(targetAdapter, argAdapters,
-                                                interactionInitiatedBy);
-                                    }
-                                })
-                            : objectAction.execute(targetAdapter, argAdapters, interactionInitiatedBy);
+                    objectAction.execute(targetAdapter, argAdapters, interactionInitiatedBy);
 
             return ObjectAdapter.Util.unwrap(actionReturnNO);
         }