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 18:19:28 UTC

[1/4] isis git commit: ISIS-1194: removing ServicesProvider from RuntimeContext and elsewhere, instead use ServicesInjector.

Repository: isis
Updated Branches:
  refs/heads/master 69450a333 -> bafce5535


ISIS-1194: removing ServicesProvider from RuntimeContext and elsewhere, instead use ServicesInjector.


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

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

----------------------------------------------------------------------
 .../metamodel/adapter/ServicesProvider.java     | 36 -----------------
 .../adapter/ServicesProviderAbstract.java       | 29 --------------
 .../adapter/ServicesProviderAware.java          | 26 ------------
 .../runtimecontext/RuntimeContext.java          |  3 --
 .../runtimecontext/RuntimeContextAbstract.java  |  1 -
 .../noruntime/RuntimeContextNoRuntime.java      | 30 --------------
 .../spec/ObjectSpecificationDependencies.java   | 22 ++++++----
 .../spec/feature/ObjectMemberDependencies.java  | 12 +++---
 .../specloader/ObjectReflectorDefault.java      | 42 ++++++++++++++------
 .../specimpl/ObjectActionContributee.java       |  6 +--
 .../specimpl/ObjectMemberAbstract.java          | 10 ++---
 .../specimpl/ObjectSpecificationAbstract.java   | 37 +++++++++--------
 .../metamodel/app/IsisMetaModelTest_init.java   |  6 ---
 .../internal/RuntimeContextFromSession.java     | 19 ---------
 .../runtime/system/ObjectActionImplTest.java    | 16 ++++----
 .../system/OneToManyAssociationImplTest.java    |  7 ++--
 ...WrapperFactoryDefaultTest_wrappedObject.java | 12 ++++--
 17 files changed, 100 insertions(+), 214 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProvider.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProvider.java
deleted file mode 100644
index f315aaa..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProvider.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- *  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.adapter;
-
-import java.util.List;
-
-import org.apache.isis.core.commons.components.Injectable;
-
-public interface ServicesProvider extends Injectable {
-
-    /**
-     * Provided by <tt>PersistenceSession</tt> when used by framework.
-     * 
-     * <p>
-     * Called by <tt>IntrospectableSpecification</tt>,
-     * <tt>JavaSpecification</tt>
-     */
-    List<ObjectAdapter> getServices();
-
-    <T> T lookupService(Class<T> cls);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProviderAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProviderAbstract.java
deleted file mode 100644
index 0108057..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProviderAbstract.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- *  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.adapter;
-
-public abstract class ServicesProviderAbstract implements ServicesProvider {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (ServicesProviderAware.class.isAssignableFrom(candidate.getClass())) {
-            final ServicesProviderAware cast = ServicesProviderAware.class.cast(candidate);
-            cast.setServicesProvider(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProviderAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProviderAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProviderAware.java
deleted file mode 100644
index 59678a2..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ServicesProviderAware.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *  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.adapter;
-
-public interface ServicesProviderAware {
-
-    public void setServicesProvider(final ServicesProvider servicesProvider);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/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 93ad76e..e68e441 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
@@ -28,7 +28,6 @@ import org.apache.isis.core.metamodel.adapter.LocalizationProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
 import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
 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.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
@@ -63,8 +62,6 @@ public interface RuntimeContext extends Injectable, ApplicationScopedComponent {
 
     public SpecificationLoader getSpecificationLoader();
 
-    public ServicesProvider getServicesProvider();
-
     public ServicesInjector getServicesInjector();
 
     public ObjectDirtier getObjectDirtier();

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/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 0f32c96..ea88d6a 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
@@ -72,7 +72,6 @@ public abstract class RuntimeContextAbstract implements RuntimeContext, Specific
         getObjectDirtier().injectInto(candidate);
         getObjectPersistor().injectInto(candidate);
         getQuerySubmitter().injectInto(candidate);
-        getServicesProvider().injectInto(candidate);
         getSpecificationLoader().injectInto(candidate);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
index c0c511f..037db4d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
@@ -371,36 +371,6 @@ public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
         return servicesInjector;
     }
 
-    // ///////////////////////////////////////////
-    // allInstances, allMatching*
-    // ///////////////////////////////////////////
-
-    public List<ObjectAdapter> allInstances(final ObjectSpecification noSpec) {
-        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-    }
-
-    // ///////////////////////////////////////////
-    // getServices, injectDependenciesInto
-    // ///////////////////////////////////////////
-
-    @Override
-    public ServicesProvider getServicesProvider() {
-        return new ServicesProviderAbstract() {
-            /**
-             * Just returns an empty array.
-             */
-            @Override
-            public List<ObjectAdapter> getServices() {
-                return Collections.emptyList();
-            }
-
-            @Override
-            public <T> T lookupService(Class<T> cls) {
-                return null;
-            }
-        };
-    }
-
     @Override
     public LocalizationProvider getLocalizationProvider() {
         return localizationProvider;

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
index 4240d69..d9503fd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
@@ -16,37 +16,41 @@
  */
 package org.apache.isis.core.metamodel.spec;
 
-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.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 
 public class ObjectSpecificationDependencies {
 
     private final DeploymentCategory deploymentCategory;
-    private final ServicesProvider servicesProvider;
+    private final ServicesInjector servicesInjector;
     private final ObjectInstantiator objectInstantiator;
     private final SpecificationLoader specificationLoader;
     private final FacetProcessor facetProcessor;
+    private final AdapterManager adapterManager;
 
     public ObjectSpecificationDependencies(
             final DeploymentCategory deploymentCategory,
-            final ServicesProvider servicesProvider,
+            final ServicesInjector servicesInjector,
             final ObjectInstantiator objectInstantiator,
             final SpecificationLoader specificationLoader,
-            final FacetProcessor facetProcessor) {
+            final FacetProcessor facetProcessor,
+            final AdapterManager adapterManager) {
         this.deploymentCategory = deploymentCategory;
-        this.servicesProvider = servicesProvider;
+        this.servicesInjector = servicesInjector;
         this.objectInstantiator = objectInstantiator;
         this.specificationLoader = specificationLoader;
         this.facetProcessor = facetProcessor;
+        this.adapterManager = adapterManager;
     }
 
     public DeploymentCategory getDeploymentCategory() {
         return deploymentCategory;
     }
     
-    public ServicesProvider getServicesProvider() {
-        return servicesProvider;
+    public ServicesInjector getServicesInjector() {
+        return servicesInjector;
     }
 
     public ObjectInstantiator getObjectInstantiator() {
@@ -60,4 +64,8 @@ public class ObjectSpecificationDependencies {
     public FacetProcessor getFacetProcessor() {
         return facetProcessor;
     }
+
+    public AdapterManager getAdapterManager() {
+        return adapterManager;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberDependencies.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberDependencies.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberDependencies.java
index a323828..c792613 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberDependencies.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberDependencies.java
@@ -17,8 +17,8 @@
 package org.apache.isis.core.metamodel.spec.feature;
 
 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.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 
 public class ObjectMemberDependencies {
@@ -26,19 +26,19 @@ public class ObjectMemberDependencies {
     private final SpecificationLoader specificationLoader;
     private final AdapterManager adapterManager;
     private final QuerySubmitter querySubmitter;
-    private final ServicesProvider servicesProvider;
+    private final ServicesInjector servicesInjector;
 
     public ObjectMemberDependencies(
             final SpecificationLoader specificationLoader,
             final AdapterManager adapterManager,
             final QuerySubmitter querySubmitter,
-            final ServicesProvider servicesProvider) {
+            final ServicesInjector servicesInjector) {
 
         this.specificationLoader = specificationLoader;
         this.adapterManager = adapterManager;
         this.querySubmitter = querySubmitter;
 
-        this.servicesProvider = servicesProvider;
+        this.servicesInjector = servicesInjector;
     }
 
     public SpecificationLoader getSpecificationLoader() {
@@ -49,8 +49,8 @@ public class ObjectMemberDependencies {
         return adapterManager;
     }
 
-    public ServicesProvider getServicesProvider() {
-        return servicesProvider;
+    public ServicesInjector getServicesInjector() {
+        return servicesInjector;
     }
     
     public QuerySubmitter getQuerySubmitter() {

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
index 198a2f7..760837c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
@@ -20,13 +20,19 @@
 package org.apache.isis.core.metamodel.specloader;
 
 import java.lang.reflect.Method;
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import com.google.common.base.Function;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.debug.DebugBuilder;
@@ -35,7 +41,6 @@ import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.lang.ClassUtil;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-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.facetapi.Facet;
@@ -51,7 +56,16 @@ import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.*;
+import org.apache.isis.core.metamodel.spec.FreeStandingList;
+import org.apache.isis.core.metamodel.spec.InjectorMethodEvaluator;
+import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.ObjectSpecificationDependencies;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpiAware;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
@@ -433,26 +447,28 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
      */
     private ObjectSpecification createSpecification(final Class<?> cls) {
 
-        final AuthenticationSessionProvider authenticationSessionProvider = getRuntimeContext().getAuthenticationSessionProvider();
         final SpecificationLoader specificationLookup = getRuntimeContext().getSpecificationLoader();
-        final ServicesProvider servicesProvider = getRuntimeContext().getServicesProvider();
+        final ServicesInjector servicesInjector = getRuntimeContext().getServicesInjector();
         final ObjectInstantiator objectInstantiator = getRuntimeContext().getObjectInstantiator();
+        final AdapterManager adapterManager = getRuntimeContext().getAdapterManager();
 
-        // create contexts as inputs ...
-        final ObjectSpecificationDependencies specContext = new ObjectSpecificationDependencies(getDeploymentCategory(), servicesProvider, objectInstantiator, specificationLookup, facetProcessor);
+        final ObjectSpecificationDependencies specContext =
+                new ObjectSpecificationDependencies(
+                        getDeploymentCategory(), servicesInjector, objectInstantiator, specificationLookup,
+                        facetProcessor, adapterManager);
 
-        final AdapterManager adapterMap = getRuntimeContext().getAdapterManager();
         final ObjectMemberDependencies objectMemberDependencies = new ObjectMemberDependencies(
-                specificationLookup, adapterMap, getRuntimeContext().getQuerySubmitter(), servicesProvider);
+                specificationLookup, adapterManager, getRuntimeContext().getQuerySubmitter(), servicesInjector);
 
         // ... and create the specs
         if (FreeStandingList.class.isAssignableFrom(cls)) {
             return new ObjectSpecificationOnStandaloneList(specContext, objectMemberDependencies);
         } else {
             final SpecificationLoaderSpi specificationLoader = this;
-            final ServicesInjector dependencyInjector = getRuntimeContext().getServicesInjector();
-            final CreateObjectContext createObjectContext = new CreateObjectContext(adapterMap, dependencyInjector);
-            final FacetedMethodsBuilderContext facetedMethodsBuilderContext = new FacetedMethodsBuilderContext(specificationLoader, facetProcessor, layoutMetadataReaders);
+            final CreateObjectContext createObjectContext = new CreateObjectContext(adapterManager, servicesInjector);
+            final FacetedMethodsBuilderContext facetedMethodsBuilderContext =
+                    new FacetedMethodsBuilderContext(
+                            specificationLoader, facetProcessor, layoutMetadataReaders);
             return new ObjectSpecificationDefault(cls, facetedMethodsBuilderContext, specContext,
                     objectMemberDependencies, createObjectContext);
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
index 895886f..7202e6f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
@@ -213,7 +213,7 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
         final BulkFacet bulkFacet = getFacet(BulkFacet.class);
         if (bulkFacet != null) {
 
-            final ActionInvocationContext actionInvocationContext = getServicesProvider().lookupService(ActionInvocationContext.class);
+            final ActionInvocationContext actionInvocationContext = getServicesInjector().lookupService(ActionInvocationContext.class);
             if (actionInvocationContext != null &&
                     actionInvocationContext.getInvokedOn() == null) {
 
@@ -221,7 +221,7 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
                 actionInvocationContext.setDomainObjects(Collections.singletonList(contributee.getObject()));
             }
 
-            final Bulk.InteractionContext bulkInteractionContext = getServicesProvider().lookupService(Bulk.InteractionContext.class);
+            final Bulk.InteractionContext bulkInteractionContext = getServicesInjector().lookupService(Bulk.InteractionContext.class);
             if (bulkInteractionContext != null &&
                     bulkInteractionContext.getInvokedAs() == null) {
 
@@ -232,7 +232,7 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
 
         }
 
-        final CommandContext commandContext = getServicesProvider().lookupService(CommandContext.class);
+        final CommandContext commandContext = getServicesInjector().lookupService(CommandContext.class);
         final Command command = commandContext != null ? commandContext.getCommand() : null;
 
         if(command != null && command.getExecutor() == Executor.USER) {

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
index 3edcbbf..5c74338 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
@@ -28,7 +28,6 @@ import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.core.commons.lang.StringExtensions;
 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.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -48,6 +47,7 @@ import org.apache.isis.core.metamodel.interactions.InteractionContext;
 import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
@@ -68,7 +68,7 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
     private final FeatureType featureType;
     private final SpecificationLoader specificationLookup;
     private final AdapterManager adapterManager;
-    private final ServicesProvider servicesProvider;
+    private final ServicesInjector servicesInjector;
     private final QuerySubmitter querySubmitter;
 
     protected ObjectMemberAbstract(
@@ -86,7 +86,7 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
 
         this.specificationLookup = objectMemberDependencies.getSpecificationLoader();
         this.adapterManager = objectMemberDependencies.getAdapterManager();
-        this.servicesProvider = objectMemberDependencies.getServicesProvider();
+        this.servicesInjector = objectMemberDependencies.getServicesInjector();
         this.querySubmitter = objectMemberDependencies.getQuerySubmitter();
     }
 
@@ -339,8 +339,8 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
         return adapterManager;
     }
 
-    public ServicesProvider getServicesProvider() {
-        return servicesProvider;
+    public ServicesInjector getServicesInjector() {
+        return servicesInjector;
     }
 
     public QuerySubmitter getQuerySubmitter() {

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index c6aa040..db3df11 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -46,7 +46,7 @@ import org.apache.isis.core.commons.exceptions.UnknownTypeException;
 import org.apache.isis.core.commons.lang.ClassExtensions;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ServicesProvider;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
@@ -82,6 +82,7 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
 import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.layout.DeweyOrderSet;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.Instance;
 import org.apache.isis.core.metamodel.spec.ObjectInstantiator;
@@ -124,12 +125,12 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
     }
 
     private final DeploymentCategory deploymentCategory;
-    private final ServicesProvider servicesProvider;
+    private final ServicesInjector servicesInjector;
     private final ObjectInstantiator objectInstantiator;
     private final SpecificationLoader specificationLoader;
-    
     private final FacetProcessor facetProcessor;
-    
+    private final AdapterManager adapterManager;
+
     /**
      * Only populated once {@link #introspectTypeHierarchyAndMembers()} is called.
      */
@@ -198,11 +199,12 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         this.identifier = Identifier.classIdentifier(introspectedClass);
 
         this.deploymentCategory = objectSpecificationDependencies.getDeploymentCategory();
-        this.servicesProvider = objectSpecificationDependencies.getServicesProvider();
+        this.servicesInjector = objectSpecificationDependencies.getServicesInjector();
         this.objectInstantiator = objectSpecificationDependencies.getObjectInstantiator();
         this.specificationLoader = objectSpecificationDependencies.getSpecificationLoader();
         this.facetProcessor = objectSpecificationDependencies.getFacetProcessor();
-        
+        this.adapterManager = objectSpecificationDependencies.getAdapterManager();
+
         this.objectMemberDependencies = objectMemberDependencies;
     }
 
@@ -899,13 +901,18 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
     @Override
     public List<ObjectAction> getServiceActionsReturning(final List<ActionType> types) {
         final List<ObjectAction> serviceActions = Lists.newArrayList();
-        final List<ObjectAdapter> services = getServicesProvider().getServices();
-        for (final ObjectAdapter serviceAdapter : services) {
+        final Iterable<ObjectAdapter> serviceAdapters = getServiceAdapters();
+        for (final ObjectAdapter serviceAdapter : serviceAdapters) {
             appendServiceActionsReturning(serviceAdapter, types, serviceActions);
         }
         return serviceActions;
     }
 
+    private Iterable<ObjectAdapter> getServiceAdapters() {
+        final List<Object> servicePojos = getServicesInjector().getRegisteredServices();
+        return Iterables.transform(servicePojos, ObjectAdapter.Functions.adapterForUsing(adapterManager));
+    }
+
     private void appendServiceActionsReturning(final ObjectAdapter serviceAdapter, final List<ActionType> types, final List<ObjectAction> relatedActionsToAppendTo) {
         final List<ObjectAction> matchingActionsToAppendTo = Lists.newArrayList();
         for (final ActionType type : types) {
@@ -950,8 +957,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         }
         
         final List<ObjectAssociation> contributeeAssociations = Lists.newArrayList();
-        final List<ObjectAdapter> services = getServicesProvider().getServices();
-        for (final ObjectAdapter serviceAdapter : services) {
+        for (final ObjectAdapter serviceAdapter : getServiceAdapters()) {
             addContributeeAssociationsIfAny(serviceAdapter, contributeeAssociations);
         }
         return contributeeAssociations;
@@ -1040,8 +1046,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         }
         final List<ObjectAction> contributeeActions = Lists.newArrayList();
             
-        final List<ObjectAdapter> services = getServicesProvider().getServices();
-        for (final ObjectAdapter serviceAdapter : services) {
+        for (final ObjectAdapter serviceAdapter : getServiceAdapters()) {
             addContributeeActionsIfAny(serviceAdapter, contributeeActions);
         }
         return contributeeActions;
@@ -1209,15 +1214,15 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
     // Dependencies (injected in constructor)
     // //////////////////////////////////////////////////////////////////////
 
-    public ServicesProvider getServicesProvider() {
-        return servicesProvider;
+    private ServicesInjector getServicesInjector() {
+        return servicesInjector;
     }
 
-    public ObjectInstantiator getObjectInstantiator() {
+    protected ObjectInstantiator getObjectInstantiator() {
         return objectInstantiator;
     }
 
-    public SpecificationLoader getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return specificationLoader;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/metamodel/src/test/java/org/apache/isis/core/metamodel/app/IsisMetaModelTest_init.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/app/IsisMetaModelTest_init.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/app/IsisMetaModelTest_init.java
index b5ed2a0..7abd870 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/app/IsisMetaModelTest_init.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/app/IsisMetaModelTest_init.java
@@ -31,7 +31,6 @@ import org.junit.Test;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 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.DeploymentCategoryProviderAbstract;
@@ -59,8 +58,6 @@ public class IsisMetaModelTest_init {
     @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
-    private ServicesProvider mockServicesProvider;
-    @Mock
     private ObjectInstantiator mockObjectInstantiator;
     @Mock
     private AdapterManager mockAdapterManager;
@@ -103,9 +100,6 @@ public class IsisMetaModelTest_init {
                 allowing(mockRuntimeContext).getServicesInjector();
                 will(returnValue(mockDependencyInjector));
 
-                allowing(mockRuntimeContext).getServicesProvider();
-                will(returnValue(mockServicesProvider));
-
                 allowing(mockRuntimeContext).getObjectInstantiator();
                 will(returnValue(mockObjectInstantiator));
 

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
index c082ed5..90a927a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
@@ -41,8 +41,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
 import org.apache.isis.core.metamodel.adapter.ObjectPersistorAbstract;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitterAbstract;
-import org.apache.isis.core.metamodel.adapter.ServicesProvider;
-import org.apache.isis.core.metamodel.adapter.ServicesProviderAbstract;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
@@ -81,7 +79,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
     private final ObjectDirtier objectDirtier;
     private final ObjectInstantiator objectInstantiator;
     private final ObjectPersistor objectPersistor;
-    private final ServicesProvider servicesProvider;
     private final QuerySubmitter querySubmitter;
     private final DomainObjectServices domainObjectServices;
     private final LocalizationProviderAbstract localizationProvider;
@@ -191,17 +188,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
                 getPersistenceSession().destroyObject(adapter);
             }
         };
-        this.servicesProvider = new ServicesProviderAbstract() {
-            @Override
-            public List<ObjectAdapter> getServices() {
-                return getPersistenceSession().getServices();
-            }
-
-            @Override
-            public <T> T lookupService(Class<T> cls) {
-                return servicesInjectorDelegator.lookupService(cls);
-            }
-        };
         this.domainObjectServices = new DomainObjectServicesAbstract() {
 
             @Override
@@ -358,11 +344,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
     }
 
     @Override
-    public ServicesProvider getServicesProvider() {
-        return servicesProvider;
-    }
-
-    @Override
     public LocalizationProviderAbstract getLocalizationProvider() {
         return localizationProvider;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
index a3ff26c..fd740c6 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
@@ -19,11 +19,6 @@
 
 package org.apache.isis.core.runtime.system;
 
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.Before;
@@ -33,17 +28,22 @@ import org.junit.Test;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 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.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+
 public class ObjectActionImplTest {
 
     @Rule
@@ -62,7 +62,7 @@ public class ObjectActionImplTest {
     @Mock
     private AdapterManager mockAdapterManager;
     @Mock
-    private ServicesProvider mockServicesProvider;
+    private ServicesInjector mockServicesInjector;
     @Mock
     private QuerySubmitter mockQuerySubmitter;
 
@@ -77,7 +77,7 @@ public class ObjectActionImplTest {
         });
 
         action = new ObjectActionImpl(mockFacetedMethod, new ObjectMemberDependencies(
-                mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, mockServicesProvider));
+                mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, mockServicesInjector));
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/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 37e19df..f86f7d8 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
@@ -24,17 +24,18 @@ import org.jmock.auto.Mock;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 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.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
@@ -79,7 +80,7 @@ public class OneToManyAssociationImplTest {
     @Mock
     private NamedFacet mockNamedFacet;
     @Mock
-    private ServicesProvider mockServicesProvider;
+    private ServicesInjector mockServicesInjector;
     @Mock
     private CollectionAddToFacet mockCollectionAddToFacet;
 
@@ -91,7 +92,7 @@ public class OneToManyAssociationImplTest {
         allowingPeerToReturnIdentifier();
         allowingSpecLoaderToReturnSpecs();
         association = new OneToManyAssociationImpl(mockPeer, new ObjectMemberDependencies(
-                mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, mockServicesProvider));
+                mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, mockServicesInjector));
     }
 
     private void allowingSpecLoaderToReturnSpecs() {

http://git-wip-us.apache.org/repos/asf/isis/blob/dbc7a39e/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index ee79be5..b4d623a 100644
--- a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -21,18 +21,23 @@ package org.apache.isis.progmodel.wrapper;
 
 import java.lang.reflect.Method;
 import java.util.Collections;
+
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
+
 import org.apache.isis.applib.services.wrapper.DisabledException;
 import org.apache.isis.applib.services.wrapper.HiddenException;
 import org.apache.isis.applib.services.wrapper.InvalidException;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.adapter.*;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
+import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
+import org.apache.isis.core.metamodel.adapter.ResolveState;
 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;
@@ -46,6 +51,7 @@ import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyCle
 import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInitializationFacetViaSetterMethod;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaModifyMethod;
 import org.apache.isis.core.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethod;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
@@ -80,7 +86,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Mock
     private QuerySubmitter mockQuerySubmitter;
     @Mock
-    private ServicesProvider mockServicesProvider;
+    private ServicesInjector mockServicesInjector;
     @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
@@ -119,7 +125,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     public void setUp() {
 
         objectMemberDependencies = new ObjectMemberDependencies(
-                mockSpecificationLoader, mockAdapterManager, mockQuerySubmitter, mockServicesProvider);
+                mockSpecificationLoader, mockAdapterManager, mockQuerySubmitter, mockServicesInjector);
         
         employeeRepository = new EmployeeRepositoryImpl();
 


[3/4] isis git commit: ISIS-1194: removing DirtyFacet and supporting code.

Posted by da...@apache.org.
ISIS-1194: removing DirtyFacet and supporting code.


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

Branch: refs/heads/master
Commit: dfdd6a8595dd65d8ee8b4624dd07e101eb7bfbbf
Parents: dbc7a39
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 3 16:45:36 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 3 16:45:36 2015 +0100

----------------------------------------------------------------------
 .../core/metamodel/adapter/ObjectDirtier.java   |  33 ------
 .../adapter/ObjectDirtierAbstract.java          |  29 -----
 .../metamodel/adapter/ObjectDirtierAware.java   |  26 -----
 .../clear/CollectionClearFacetFactory.java      |  15 +--
 .../clear/CollectionClearFacetViaAccessor.java  |  15 +--
 .../modify/CollectionAddToFacetViaAccessor.java |  13 +--
 ...nAddToRemoveFromAndValidateFacetFactory.java |  18 +---
 .../CollectionRemoveFromFacetViaAccessor.java   |  15 +--
 .../object/dirty/ClearDirtyObjectFacet.java     |  39 -------
 .../dirty/ClearDirtyObjectFacetAbstract.java    |  35 ------
 .../facets/object/dirty/DirtyObjectFacet.java   |  29 -----
 .../object/dirty/DirtyObjectFacetAbstract.java  |  33 ------
 .../facets/object/dirty/IsDirtyObjectFacet.java |  39 -------
 .../dirty/IsDirtyObjectFacetAbstract.java       |  35 ------
 .../object/dirty/MarkDirtyObjectFacet.java      |  38 -------
 .../dirty/MarkDirtyObjectFacetAbstract.java     |  35 ------
 .../method/ClearDirtyObjectFacetViaMethod.java  |  59 ----------
 .../dirty/method/DirtyMethodsFacetFactory.java  |  75 -------------
 .../method/IsDirtyObjectFacetViaMethod.java     |  59 ----------
 .../method/MarkDirtyObjectFacetViaMethod.java   |  56 ----------
 .../runtimecontext/RuntimeContext.java          |   3 -
 .../runtimecontext/RuntimeContextAbstract.java  |   1 -
 .../noruntime/RuntimeContextNoRuntime.java      |  18 ----
 .../container/DomainObjectContainerDefault.java |  18 +---
 .../isis/core/metamodel/spec/Dirtiable.java     |  53 ---------
 .../metamodel/spec/ObjectSpecification.java     |   2 +-
 .../specimpl/ObjectSpecificationAbstract.java   |  39 -------
 .../dflt/ProgrammingModelFacetsJava5.java       |   2 -
 .../dirty/DirtyMethodsFacetFactoryTest.java     | 107 -------------------
 .../testspec/ObjectSpecificationStub.java       |  70 +-----------
 .../DomainObjectContainerObjectChanged.java     |  70 ------------
 .../internal/RuntimeContextFromSession.java     |  21 ----
 .../system/persistence/PersistenceSession.java  |  92 ----------------
 .../transaction/IsisTransactionManager.java     |  12 ---
 .../persistence/FrameworkSynchronizer.java      |   2 -
 .../jdo/datanucleus/persistence/Utils.java      |   9 +-
 ...reTransactionManager_EndTransactionTest.java |   5 -
 .../DelegatingInvocationHandlerDefault.java     |  12 ---
 .../handlers/DomainObjectInvocationHandler.java |  26 ++---
 39 files changed, 26 insertions(+), 1232 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtier.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtier.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtier.java
deleted file mode 100644
index c419e03..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtier.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- *  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.adapter;
-
-import org.apache.isis.core.commons.components.Injectable;
-
-public interface ObjectDirtier extends Injectable {
-
-    /**
-     * Provided by <tt>PersistenceSession</tt> when used by framework.
-     */
-    void objectChanged(ObjectAdapter adapter);
-
-    /**
-     * TODO: combined with {@link #objectChanged(ObjectAdapter)}.
-     */
-    void objectChanged(Object object);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtierAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtierAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtierAbstract.java
deleted file mode 100644
index fd595ec..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtierAbstract.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- *  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.adapter;
-
-public abstract class ObjectDirtierAbstract implements ObjectDirtier {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (ObjectDirtierAware.class.isAssignableFrom(candidate.getClass())) {
-            final ObjectDirtierAware cast = ObjectDirtierAware.class.cast(candidate);
-            cast.setObjectDirtier(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtierAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtierAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtierAware.java
deleted file mode 100644
index bdac679..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectDirtierAware.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *  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.adapter;
-
-public interface ObjectDirtierAware {
-
-    public void setObjectDirtier(final ObjectDirtier objectDirtier);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetFactory.java
index 16e642e..b8450f9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetFactory.java
@@ -22,8 +22,6 @@ package org.apache.isis.core.metamodel.facets.collections.clear;
 import java.lang.reflect.Method;
 
 import org.apache.isis.core.commons.lang.StringExtensions;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtierAware;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -35,12 +33,11 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 
-public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware, ObjectDirtierAware {
+public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
 
     private static final String[] PREFIXES = { MethodPrefixConstants.CLEAR_PREFIX };
 
     private AdapterManager adapterManager;
-    private ObjectDirtier objectDirtier;
 
     public CollectionClearFacetFactory() {
         super(FeatureType.COLLECTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -69,7 +66,7 @@ public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAb
         if (clearMethodIfAny != null) {
             return new CollectionClearFacetViaClearMethod(clearMethodIfAny, collection);
         } else {
-            return new CollectionClearFacetViaAccessor(accessorMethod, collection, getAdapterManager(), getObjectDirtier());
+            return new CollectionClearFacetViaAccessor(accessorMethod, collection, getAdapterManager());
         }
     }
 
@@ -86,13 +83,5 @@ public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAb
         this.adapterManager = adapterManager;
     }
 
-    protected ObjectDirtier getObjectDirtier() {
-        return objectDirtier;
-    }
-
-    @Override
-    public void setObjectDirtier(final ObjectDirtier objectDirtier) {
-        this.objectDirtier = objectDirtier;
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java
index f97254c..451b51d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java
@@ -24,9 +24,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
@@ -36,13 +34,14 @@ public class CollectionClearFacetViaAccessor extends CollectionClearFacetAbstrac
 
     private final Method method;
     private final AdapterManager adapterManager;
-    private final ObjectDirtier objectDirtier;
 
-    public CollectionClearFacetViaAccessor(final Method method, final FacetHolder holder, final AdapterManager adapterManager, final ObjectDirtier objectDirtier) {
+    public CollectionClearFacetViaAccessor(
+            final Method method,
+            final FacetHolder holder,
+            final AdapterManager adapterManager) {
         super(holder);
         this.method = method;
         this.adapterManager = adapterManager;
-        this.objectDirtier = objectDirtier;
     }
 
     /**
@@ -63,8 +62,6 @@ public class CollectionClearFacetViaAccessor extends CollectionClearFacetAbstrac
     public void clear(final ObjectAdapter owningAdapter) {
         final Collection<?> collection = (Collection<?>) ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
         collection.clear();
-        final ObjectAdapter adapter = getAdapterManager().getAdapterFor(owningAdapter);
-        getObjectDirtier().objectChanged(adapter);
     }
 
     @Override
@@ -80,8 +77,4 @@ public class CollectionClearFacetViaAccessor extends CollectionClearFacetAbstrac
         return adapterManager;
     }
 
-    protected ObjectDirtier getObjectDirtier() {
-        return objectDirtier;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java
index 553384c..02fec5c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java
@@ -25,7 +25,6 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
@@ -33,12 +32,10 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 public class CollectionAddToFacetViaAccessor extends CollectionAddToFacetAbstract implements ImperativeFacet {
 
     private final Method method;
-    private final ObjectDirtier objectDirtier;
 
-    public CollectionAddToFacetViaAccessor(final Method method, final FacetHolder holder, final ObjectDirtier objectDirtier) {
+    public CollectionAddToFacetViaAccessor(final Method method, final FacetHolder holder) {
         super(holder);
         this.method = method;
-        this.objectDirtier = objectDirtier;
     }
 
     /**
@@ -64,7 +61,6 @@ public class CollectionAddToFacetViaAccessor extends CollectionAddToFacetAbstrac
         final Collection<? super Object> collection = (Collection<? super Object>) ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
         final Object elementPojo = ObjectAdapter.Util.unwrap(elementAdapter);
         collection.add(elementPojo);
-        getObjectDirtier().objectChanged(owningAdapter);
     }
 
     @Override
@@ -72,11 +68,4 @@ public class CollectionAddToFacetViaAccessor extends CollectionAddToFacetAbstrac
         return "method=" + method;
     }
 
-    // /////////////////////////////////////////////////////
-    // Dependencies
-    // /////////////////////////////////////////////////////
-
-    protected ObjectDirtier getObjectDirtier() {
-        return objectDirtier;
-    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToRemoveFromAndValidateFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToRemoveFromAndValidateFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToRemoveFromAndValidateFacetFactory.java
index 8695718..c8fdbfc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToRemoveFromAndValidateFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToRemoveFromAndValidateFacetFactory.java
@@ -23,8 +23,6 @@ import java.lang.reflect.Method;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.lang.StringExtensions;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtierAware;
 import org.apache.isis.core.metamodel.exceptions.MetaModelException;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -45,7 +43,7 @@ import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
  * <tt>addTo()</tt>/<tt>removeFrom()</tt> and one for <tt>validateAddTo()</tt>/
  * <tt>validateRemoveFrom()</tt>.
  */
-public class CollectionAddToRemoveFromAndValidateFacetFactory extends MethodPrefixBasedFacetFactoryAbstract implements ObjectDirtierAware, ServicesInjectorAware {
+public class CollectionAddToRemoveFromAndValidateFacetFactory extends MethodPrefixBasedFacetFactoryAbstract implements ServicesInjectorAware {
 
     private static final String[] PREFIXES = {};
 
@@ -96,7 +94,7 @@ public class CollectionAddToRemoveFromAndValidateFacetFactory extends MethodPref
         if (addToMethodIfAny != null) {
             return new CollectionAddToFacetViaMethod(addToMethodIfAny, holder);
         } else {
-            return new CollectionAddToFacetViaAccessor(accessorMethod, holder, getObjectDirtier());
+            return new CollectionAddToFacetViaAccessor(accessorMethod, holder);
         }
     }
 
@@ -108,7 +106,7 @@ public class CollectionAddToRemoveFromAndValidateFacetFactory extends MethodPref
         if (removeFromMethodIfAny != null) {
             return new CollectionRemoveFromFacetViaMethod(removeFromMethodIfAny, holder);
         } else {
-            return new CollectionRemoveFromFacetViaAccessor(accessorMethod, holder, getObjectDirtier());
+            return new CollectionRemoveFromFacetViaAccessor(accessorMethod, holder);
         }
     }
 
@@ -200,16 +198,6 @@ public class CollectionAddToRemoveFromAndValidateFacetFactory extends MethodPref
     // Dependencies (injected)
     // ///////////////////////////////////////////////////////
 
-    private ObjectDirtier objectDirtier;
-    protected ObjectDirtier getObjectDirtier() {
-        return objectDirtier;
-    }
-
-    @Override
-    public void setObjectDirtier(final ObjectDirtier objectDirtier) {
-        this.objectDirtier = objectDirtier;
-    }
-
     private ServicesInjector servicesInjector;
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java
index 1e72fda..bb6be42 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java
@@ -25,7 +25,6 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
@@ -33,12 +32,12 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 public class CollectionRemoveFromFacetViaAccessor extends CollectionRemoveFromFacetAbstract implements ImperativeFacet {
 
     private final Method method;
-    private final ObjectDirtier objectDirtier;
 
-    public CollectionRemoveFromFacetViaAccessor(final Method method, final FacetHolder holder, final ObjectDirtier objectDirtier) {
+    public CollectionRemoveFromFacetViaAccessor(
+            final Method method,
+            final FacetHolder holder) {
         super(holder);
         this.method = method;
-        this.objectDirtier = objectDirtier;
     }
 
     /**
@@ -63,7 +62,6 @@ public class CollectionRemoveFromFacetViaAccessor extends CollectionRemoveFromFa
         @SuppressWarnings("unchecked")
         final Collection<? super Object> collection = (Collection<? super Object>) ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
         collection.remove(ObjectAdapter.Util.unwrap(elementAdapter));
-        getObjectDirtier().objectChanged(owningAdapter);
     }
 
     @Override
@@ -71,12 +69,5 @@ public class CollectionRemoveFromFacetViaAccessor extends CollectionRemoveFromFa
         return "method=" + method;
     }
 
-    // /////////////////////////////////////////////////////////
-    // Dependencies (from constructor)
-    // /////////////////////////////////////////////////////////
-
-    protected ObjectDirtier getObjectDirtier() {
-        return objectDirtier;
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/ClearDirtyObjectFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/ClearDirtyObjectFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/ClearDirtyObjectFacet.java
deleted file mode 100644
index ab27bf1..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/ClearDirtyObjectFacet.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  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.facets.object.dirty;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-
-/**
- * Explicitly indicate that this object is no longer dirty and so does not need
- * to be persisted.
- * 
- * <p>
- * In the standard Apache Isis Programming Model, typically corresponds to
- * method named <tt>markDirty</tt>.
- * 
- * @see IsDirtyObjectFacet
- * @see MarkDirtyObjectFacet
- */
-public interface ClearDirtyObjectFacet extends DirtyObjectFacet {
-
-    public void invoke(ObjectAdapter object);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/ClearDirtyObjectFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/ClearDirtyObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/ClearDirtyObjectFacetAbstract.java
deleted file mode 100644
index 6dd3851..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/ClearDirtyObjectFacetAbstract.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  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.facets.object.dirty;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public abstract class ClearDirtyObjectFacetAbstract extends DirtyObjectFacetAbstract implements ClearDirtyObjectFacet {
-
-    public static Class<? extends Facet> type() {
-        return ClearDirtyObjectFacet.class;
-    }
-
-    public ClearDirtyObjectFacetAbstract(final FacetHolder holder) {
-        super(type(), holder);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyObjectFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyObjectFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyObjectFacet.java
deleted file mode 100644
index 260987d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyObjectFacet.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *  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.facets.object.dirty;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-
-/**
- * Mechanisms for explicitly managing the dirty state of the object.
- */
-public interface DirtyObjectFacet extends Facet {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyObjectFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyObjectFacetAbstract.java
deleted file mode 100644
index 122993d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyObjectFacetAbstract.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  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.facets.object.dirty;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.dirty.DirtyObjectFacet;
-
-public abstract class DirtyObjectFacetAbstract extends FacetAbstract implements DirtyObjectFacet {
-
-    public DirtyObjectFacetAbstract(final Class<? extends Facet> type, final FacetHolder holder) {
-        super(type, holder, Derivation.NOT_DERIVED);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/IsDirtyObjectFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/IsDirtyObjectFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/IsDirtyObjectFacet.java
deleted file mode 100644
index 478eb5d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/IsDirtyObjectFacet.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  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.facets.object.dirty;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-
-/**
- * Determine whether this object has been explicitly
- * {@link MarkDirtyObjectFacet marked as dirty}.
- * 
- * <p>
- * In the standard Apache Isis Programming Model, typically corresponds to
- * method named <tt>isDirty</tt>.
- * 
- * @see ClearDirtyObjectFacet
- * @see MarkDirtyObjectFacet
- */
-public interface IsDirtyObjectFacet extends DirtyObjectFacet {
-
-    public boolean invoke(ObjectAdapter object);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/IsDirtyObjectFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/IsDirtyObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/IsDirtyObjectFacetAbstract.java
deleted file mode 100644
index 01a865f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/IsDirtyObjectFacetAbstract.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  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.facets.object.dirty;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public abstract class IsDirtyObjectFacetAbstract extends DirtyObjectFacetAbstract implements IsDirtyObjectFacet {
-
-    public static Class<? extends Facet> type() {
-        return IsDirtyObjectFacet.class;
-    }
-
-    public IsDirtyObjectFacetAbstract(final FacetHolder holder) {
-        super(type(), holder);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/MarkDirtyObjectFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/MarkDirtyObjectFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/MarkDirtyObjectFacet.java
deleted file mode 100644
index 43f2ac9..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/MarkDirtyObjectFacet.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  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.facets.object.dirty;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-
-/**
- * Explicitly indicate that this object is dirty and needs to be persisted.
- * 
- * <p>
- * In the standard Apache Isis Programming Model, typically corresponds to
- * method named <tt>markDirty</tt>.
- * 
- * @see ClearDirtyObjectFacet
- * @see IsDirtyObjectFacet
- */
-public interface MarkDirtyObjectFacet extends DirtyObjectFacet {
-
-    public void invoke(ObjectAdapter object);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/MarkDirtyObjectFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/MarkDirtyObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/MarkDirtyObjectFacetAbstract.java
deleted file mode 100644
index 393609a..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/MarkDirtyObjectFacetAbstract.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  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.facets.object.dirty;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public abstract class MarkDirtyObjectFacetAbstract extends DirtyObjectFacetAbstract implements MarkDirtyObjectFacet {
-
-    public static Class<? extends Facet> type() {
-        return MarkDirtyObjectFacet.class;
-    }
-
-    public MarkDirtyObjectFacetAbstract(final FacetHolder holder) {
-        super(type(), holder);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/ClearDirtyObjectFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/ClearDirtyObjectFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/ClearDirtyObjectFacetViaMethod.java
deleted file mode 100644
index 5024ec9..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/ClearDirtyObjectFacetViaMethod.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *  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.facets.object.dirty.method;
-
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.isis.core.commons.lang.MethodExtensions;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.object.dirty.ClearDirtyObjectFacetAbstract;
-
-public class ClearDirtyObjectFacetViaMethod extends ClearDirtyObjectFacetAbstract implements ImperativeFacet {
-
-    private final Method method;
-
-    public ClearDirtyObjectFacetViaMethod(final Method method, final FacetHolder holder) {
-        super(holder);
-        this.method = method;
-    }
-
-    /**
-     * Returns a singleton list of the {@link Method} provided in the
-     * constructor.
-     */
-    @Override
-    public List<Method> getMethods() {
-        return Collections.singletonList(method);
-    }
-
-    @Override
-    public Intent getIntent(final Method method) {
-        return Intent.LIFECYCLE;
-    }
-
-    @Override
-    public void invoke(final ObjectAdapter object) {
-        MethodExtensions.invokeStatic(method);
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/DirtyMethodsFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/DirtyMethodsFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/DirtyMethodsFacetFactory.java
deleted file mode 100644
index 43176f6..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/DirtyMethodsFacetFactory.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *  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.facets.object.dirty.method;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-
-public class DirtyMethodsFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
-
-    private static final String MARK_DIRTY_PREFIX = "markDirty";
-    private static final String CLEAR_DIRTY_PREFIX = "clearDirty";
-    private static final String IS_DIRTY_PREFIX = "isDirty";
-
-    private static final String[] PREFIXES = { MARK_DIRTY_PREFIX, CLEAR_DIRTY_PREFIX, IS_DIRTY_PREFIX, };
-
-    public DirtyMethodsFacetFactory() {
-        super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
-
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-        final Class<?> cls = processClassContext.getCls();
-
-        final List<Facet> facets = new ArrayList<Facet>();
-
-        Method method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, IS_DIRTY_PREFIX, boolean.class, NO_PARAMETERS_TYPES);
-        if (method != null) {
-            processClassContext.removeMethod(method);
-            facets.add(new IsDirtyObjectFacetViaMethod(method, facetHolder));
-        }
-
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, CLEAR_DIRTY_PREFIX, void.class, NO_PARAMETERS_TYPES);
-        if (method != null) {
-            processClassContext.removeMethod(method);
-            facets.add(new ClearDirtyObjectFacetViaMethod(method, facetHolder));
-        }
-
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MARK_DIRTY_PREFIX, void.class, NO_PARAMETERS_TYPES);
-        if (method != null) {
-            processClassContext.removeMethod(method);
-            facets.add(new MarkDirtyObjectFacetViaMethod(method, facetHolder));
-        }
-
-        FacetUtil.addFacets(facets);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/IsDirtyObjectFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/IsDirtyObjectFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/IsDirtyObjectFacetViaMethod.java
deleted file mode 100644
index 0a443be..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/IsDirtyObjectFacetViaMethod.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *  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.facets.object.dirty.method;
-
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.isis.core.commons.lang.MethodExtensions;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.object.dirty.IsDirtyObjectFacetAbstract;
-
-public class IsDirtyObjectFacetViaMethod extends IsDirtyObjectFacetAbstract implements ImperativeFacet {
-
-    private final Method method;
-
-    public IsDirtyObjectFacetViaMethod(final Method method, final FacetHolder holder) {
-        super(holder);
-        this.method = method;
-    }
-
-    /**
-     * Returns a singleton list of the {@link Method} provided in the
-     * constructor.
-     */
-    @Override
-    public List<Method> getMethods() {
-        return Collections.singletonList(method);
-    }
-
-    @Override
-    public Intent getIntent(final Method method) {
-        return Intent.LIFECYCLE;
-    }
-
-    @Override
-    public boolean invoke(final ObjectAdapter object) {
-        return ((Boolean) MethodExtensions.invokeStatic(method)).booleanValue();
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/MarkDirtyObjectFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/MarkDirtyObjectFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/MarkDirtyObjectFacetViaMethod.java
deleted file mode 100644
index 2625e1e..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/dirty/method/MarkDirtyObjectFacetViaMethod.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  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.facets.object.dirty.method;
-
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.isis.core.commons.lang.MethodExtensions;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.object.dirty.MarkDirtyObjectFacetAbstract;
-
-public class MarkDirtyObjectFacetViaMethod extends MarkDirtyObjectFacetAbstract implements ImperativeFacet {
-
-    private final Method method;
-
-    public MarkDirtyObjectFacetViaMethod(final Method method, final FacetHolder holder) {
-        super(holder);
-        this.method = method;
-    }
-
-    @Override
-    public List<Method> getMethods() {
-        return Collections.singletonList(method);
-    }
-
-    @Override
-    public Intent getIntent(final Method method) {
-        return Intent.LIFECYCLE;
-    }
-
-    @Override
-    public void invoke(final ObjectAdapter object) {
-        MethodExtensions.invokeStatic(method);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/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 e68e441..77593a7 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
@@ -25,7 +25,6 @@ import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.components.Injectable;
 import org.apache.isis.core.metamodel.adapter.DomainObjectServices;
 import org.apache.isis.core.metamodel.adapter.LocalizationProvider;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
 import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -64,8 +63,6 @@ public interface RuntimeContext extends Injectable, ApplicationScopedComponent {
 
     public ServicesInjector getServicesInjector();
 
-    public ObjectDirtier getObjectDirtier();
-
     public ObjectPersistor getObjectPersistor();
 
     public DomainObjectServices getDomainObjectServices();

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/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 ea88d6a..23256ad 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
@@ -69,7 +69,6 @@ public abstract class RuntimeContextAbstract implements RuntimeContext, Specific
         getDomainObjectServices().injectInto(candidate);
         getLocalizationProvider().injectInto(candidate);
         getObjectInstantiator().injectInto(candidate);
-        getObjectDirtier().injectInto(candidate);
         getObjectPersistor().injectInto(candidate);
         getQuerySubmitter().injectInto(candidate);
         getSpecificationLoader().injectInto(candidate);

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
index 037db4d..124d496 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
@@ -53,7 +53,6 @@ public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
     private final AuthenticationSessionProviderAbstract authenticationSessionProvider;
     private final AdapterManager adapterManager;
     private final ObjectInstantiatorAbstract objectInstantiator;
-    private final ObjectDirtierAbstract objectDirtier;
     private final ObjectPersistorAbstract objectPersistor;
     private final DomainObjectServicesAbstract domainObjectServices;
     private final LocalizationProviderAbstract localizationProvider;
@@ -164,18 +163,6 @@ public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
                 throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
             }
         };
-        objectDirtier = new ObjectDirtierAbstract() {
-
-            @Override
-            public void objectChanged(final Object object) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public void objectChanged(final ObjectAdapter adapter) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-        };
         objectPersistor = new ObjectPersistorAbstract() {
 
             @Override
@@ -347,11 +334,6 @@ public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
     }
 
     @Override
-    public ObjectDirtier getObjectDirtier() {
-        return objectDirtier;
-    }
-
-    @Override
     public ObjectPersistor getObjectPersistor() {
         return objectPersistor;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/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 b961550..aa68091 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
@@ -59,8 +59,6 @@ import org.apache.isis.core.metamodel.adapter.DomainObjectServicesAware;
 import org.apache.isis.core.metamodel.adapter.LocalizationProvider;
 import org.apache.isis.core.metamodel.adapter.LocalizationProviderAware;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtierAware;
 import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
 import org.apache.isis.core.metamodel.adapter.ObjectPersistorAware;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
@@ -80,7 +78,7 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
 
 @DomainService(nature = NatureOfService.DOMAIN)
 public class DomainObjectContainerDefault
-        implements DomainObjectContainer, QuerySubmitterAware, ObjectDirtierAware, DomainObjectServicesAware,
+        implements DomainObjectContainer, QuerySubmitterAware, DomainObjectServicesAware,
         ObjectPersistorAware, SpecificationLoaderAware, AuthenticationSessionProviderAware, AdapterManagerAware,
         LocalizationProviderAware, ExceptionRecognizer {
 
@@ -262,13 +260,12 @@ public class DomainObjectContainerDefault
     }
 
     /**
-     * Deprecated because all supported objectstores provide lazy loading and dirty object tracking.
+     * @deprecated - no-op.
      */
     @Deprecated
     @Programmatic
     @Override
     public void objectChanged(final Object object) {
-        getObjectDirtier().objectChanged(unwrapped(object));
     }
 
     //endregion
@@ -758,7 +755,6 @@ public class DomainObjectContainerDefault
 
     //region > framework dependencies
 
-    private ObjectDirtier objectDirtier;
     private ObjectPersistor objectPersistor;
     private QuerySubmitter querySubmitter;
     private SpecificationLoader specificationLoader;
@@ -817,16 +813,6 @@ public class DomainObjectContainerDefault
         this.adapterManager = adapterManager;
     }
 
-    protected ObjectDirtier getObjectDirtier() {
-        return objectDirtier;
-    }
-
-    @Programmatic
-    @Override
-    public void setObjectDirtier(final ObjectDirtier objectDirtier) {
-        this.objectDirtier = objectDirtier;
-    }
-
     protected ObjectPersistor getObjectPersistor() {
         return objectPersistor;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Dirtiable.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Dirtiable.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Dirtiable.java
deleted file mode 100644
index 34b9dda..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Dirtiable.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  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.spec;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-
-public interface Dirtiable {
-
-    /**
-     * Clear the dirty flag so that a call to <tt>isDirty()</tt>, and before
-     * <tt>markDirty()</tt> is called, will return false;
-     * 
-     * @see #isDirty(ObjectAdapter)
-     * @see #markDirty(ObjectAdapter)
-     */
-    void clearDirty(ObjectAdapter object);
-
-    /**
-     * Checks if the specified object has been changed, and hence needs
-     * persisting.
-     * 
-     * @see #markDirty(ObjectAdapter)
-     * @see #clearDirty(ObjectAdapter)
-     */
-    boolean isDirty(ObjectAdapter object);
-
-    /**
-     * Mark the specified object as having been changed, and hence needing
-     * persisting.
-     * 
-     * @see #isDirty(ObjectAdapter)
-     * @see #clearDirty(ObjectAdapter)
-     */
-    void markDirty(ObjectAdapter object);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index 18a0ab1..45fb7fd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -64,7 +64,7 @@ import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitut
  * first, and then later work out its internals. Hence we create
  * {@link ObjectSpecification}s as we need them, and then introspect them later.
  */
-public interface ObjectSpecification extends Specification, ObjectActionContainer, ObjectAssociationContainer, Hierarchical, Dirtiable, DefaultProvider {
+public interface ObjectSpecification extends Specification, ObjectActionContainer, ObjectAssociationContainer, Hierarchical,  DefaultProvider {
 
     public final static List<ObjectSpecification> EMPTY_LIST = Collections.emptyList();
 

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index db3df11..d83b627 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -63,9 +63,6 @@ import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
-import org.apache.isis.core.metamodel.facets.object.dirty.ClearDirtyObjectFacet;
-import org.apache.isis.core.metamodel.facets.object.dirty.IsDirtyObjectFacet;
-import org.apache.isis.core.metamodel.facets.object.dirty.MarkDirtyObjectFacet;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
@@ -171,10 +168,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
     private Persistability persistability = Persistability.USER_PERSISTABLE;
 
-    private MarkDirtyObjectFacet markDirtyObjectFacet;
-    private ClearDirtyObjectFacet clearDirtyObjectFacet;
-    private IsDirtyObjectFacet isDirtyObjectFacet;
-
     private TitleFacet titleFacet;
     private IconFacet iconFacet;
     private CssClassFacet cssClassFacet;
@@ -375,9 +368,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
     // //////////////////////////////////////////////////////////////////////
 
     public void updateFromFacetValues() {
-        clearDirtyObjectFacet = getFacet(ClearDirtyObjectFacet.class);
-        markDirtyObjectFacet = getFacet(MarkDirtyObjectFacet.class);
-        isDirtyObjectFacet = getFacet(IsDirtyObjectFacet.class);
 
         titleFacet = getFacet(TitleFacet.class);
         iconFacet = getFacet(IconFacet.class);
@@ -401,13 +391,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         }
     }
 
-    /**
-     * Intended to be called (if at all) within {@link #updateFromFacetValues()}
-     * .
-     */
-    protected void setClearDirtyObjectFacet(final ClearDirtyObjectFacet clearDirtyObjectFacet) {
-        this.clearDirtyObjectFacet = clearDirtyObjectFacet;
-    }
 
 
     // //////////////////////////////////////////////////////////////////////
@@ -548,28 +531,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         return persistability;
     }
 
-    // //////////////////////////////////////////////////////////////////////
-    // Dirty object support
-    // //////////////////////////////////////////////////////////////////////
-
-    @Override
-    public boolean isDirty(final ObjectAdapter object) {
-        return isDirtyObjectFacet == null ? false : isDirtyObjectFacet.invoke(object);
-    }
-
-    @Override
-    public void clearDirty(final ObjectAdapter object) {
-        if (clearDirtyObjectFacet != null) {
-            clearDirtyObjectFacet.invoke(object);
-        }
-    }
-
-    @Override
-    public void markDirty(final ObjectAdapter object) {
-        if (markDirtyObjectFacet != null) {
-            markDirtyObjectFacet.invoke(object);
-        }
-    }
 
     // //////////////////////////////////////////////////////////////////////
     // Facet Handling

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
index 1a36e96..d45f48d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
@@ -77,7 +77,6 @@ import org.apache.isis.core.metamodel.facets.object.cssclass.annotation.CssClass
 import org.apache.isis.core.metamodel.facets.object.cssclass.method.CssClassFacetMethodFactory;
 import org.apache.isis.core.metamodel.facets.object.defaults.annotcfg.DefaultedFacetAnnotationElseConfigurationFactory;
 import org.apache.isis.core.metamodel.facets.object.describedas.annotation.DescribedAsFacetOnTypeAnnotationFactory;
-import org.apache.isis.core.metamodel.facets.object.dirty.method.DirtyMethodsFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.disabled.method.DisabledObjectFacetViaMethodFactory;
 import org.apache.isis.core.metamodel.facets.object.domainobject.DomainObjectAnnotationFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.domainobjectlayout.DomainObjectLayoutFacetFactory;
@@ -305,7 +304,6 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
         addFactory(UpdateCallbackFacetFactory.class);
         addFactory(RemoveCallbackFacetFactory.class);
 
-        addFactory(DirtyMethodsFacetFactory.class);
         addFactory(ValidateObjectFacetMethodFactory.class);
         addFactory(ObjectValidPropertiesFacetImplFactory.class);
         addFactory(PluralFacetStaticMethodFactory.class);

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyMethodsFacetFactoryTest.java
deleted file mode 100644
index 2d2ad1a..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/dirty/DirtyMethodsFacetFactoryTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- *  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.facets.object.dirty;
-
-import java.lang.reflect.Method;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.object.dirty.method.ClearDirtyObjectFacetViaMethod;
-import org.apache.isis.core.metamodel.facets.object.dirty.method.DirtyMethodsFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.dirty.method.IsDirtyObjectFacetViaMethod;
-import org.apache.isis.core.metamodel.facets.object.dirty.method.MarkDirtyObjectFacetViaMethod;
-
-public class DirtyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
-
-    private DirtyMethodsFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new DirtyMethodsFacetFactory();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
-    public void testMarkDirtyMethodPickedUpOn() {
-        class Customer {
-            @SuppressWarnings("unused")
-            public void markDirty() {
-            };
-        }
-        final Method method = findMethod(Customer.class, "markDirty");
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(MarkDirtyObjectFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof MarkDirtyObjectFacetViaMethod);
-        final MarkDirtyObjectFacetViaMethod markDirtyFacet = (MarkDirtyObjectFacetViaMethod) facet;
-        assertEquals(method, markDirtyFacet.getMethods().get(0));
-
-        assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(method));
-    }
-
-    public void testIsDirtyMethodPickedUpOn() {
-        class Customer {
-            @SuppressWarnings("unused")
-            public boolean isDirty() {
-                return false;
-            };
-        }
-        final Method method = findMethod(Customer.class, "isDirty");
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(IsDirtyObjectFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof IsDirtyObjectFacetViaMethod);
-        final IsDirtyObjectFacetViaMethod isDirtyFacet = (IsDirtyObjectFacetViaMethod) facet;
-        assertEquals(method, isDirtyFacet.getMethods().get(0));
-
-        assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(method));
-    }
-
-    public void testClearDirtyMethodPickedUpOn() {
-        class Customer {
-            @SuppressWarnings("unused")
-            public void clearDirty() {
-            };
-        }
-        final Method method = findMethod(Customer.class, "clearDirty");
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(ClearDirtyObjectFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof ClearDirtyObjectFacetViaMethod);
-        final ClearDirtyObjectFacetViaMethod clearDirtyFacet = (ClearDirtyObjectFacetViaMethod) facet;
-        assertEquals(method, clearDirtyFacet.getMethods().get(0));
-
-        assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(method));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index 078d171..9fa6c1b 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -29,9 +29,7 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.profiles.Localization;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -97,38 +95,15 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
     }
 
     @Override
-    public void clearDirty(final ObjectAdapter object) {
-    }
-
-    @Override
     protected Object clone() throws CloneNotSupportedException {
         return super.clone();
     }
 
-    public void debugData(final DebugBuilder debug) {
-    }
-
-    public String debugInterface() {
-        return null;
-    }
-
-    public String debugTitle() {
-        return "";
-    }
-
-    public ObjectAction getClassAction(final ActionType type, final String name, final ObjectSpecification[] parameters) {
-        return null;
-    }
-
     @Override
     public List<ObjectAction> getServiceActionsReturning(final List<ActionType> types) {
         return null;
     }
 
-    public int getFeatures() {
-        return 0;
-    }
-
     @Override
     public boolean isAbstract() {
         return false;
@@ -288,14 +263,6 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
         return Collections.emptyList();
     }
 
-    public void introspect() {
-    }
-
-    @Override
-    public boolean isDirty(final ObjectAdapter object) {
-        return false;
-    }
-
     @Override
     public boolean isOfType(final ObjectSpecification cls) {
         return cls == this;
@@ -327,41 +294,10 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
     }
 
     @Override
-    public void markDirty(final ObjectAdapter object) {
-    }
-
-    public Object newInstance() {
-        return InstanceUtil.createInstance(name);
-    }
-
-    @Override
     public Persistability persistability() {
         return persistable;
     }
 
-    public void setupAction(final ObjectAction action) {
-        this.action = action;
-    }
-
-    public void setupFields(final List<ObjectAssociation> fields) {
-        this.fields = fields;
-    }
-
-    public void setupIsEncodeable() {
-        isEncodeable = true;
-    }
-
-    public void setupSubclasses(final List<ObjectSpecification> subclasses) {
-        this.subclasses = subclasses;
-    }
-
-    public void setupHasNoIdentity(final boolean hasNoIdentity) {
-    }
-
-    public void setupTitle(final String title) {
-        this.title = title;
-    }
-
     @Override
     public List<ObjectSpecification> subclasses() {
         return subclasses;
@@ -392,11 +328,7 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
         try {
             final Class<?> cls = Class.forName(name);
             return cls.newInstance();
-        } catch (final ClassNotFoundException e) {
-            throw new IsisException(e);
-        } catch (final InstantiationException e) {
-            throw new IsisException(e);
-        } catch (final IllegalAccessException e) {
+        } catch (final ClassNotFoundException | InstantiationException | IllegalAccessException e) {
             throw new IsisException(e);
         }
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerObjectChanged.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerObjectChanged.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerObjectChanged.java
deleted file mode 100644
index b6f0161..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerObjectChanged.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *  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.runtime.persistence.container;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-
-/**
- * Helper class that encapsulates the processing performed by domain object
- * containers that are performing an objectChanged.
- * 
- * <p>
- * Implementation note: rather than inject in its dependencies, we instead look
- * up dependencies from the {@link IsisContext}. This is necessary, for the
- * {@link PersistenceSession} at least, because class enhancers may hold a
- * reference to the factory as part of the generated bytecode. Since the
- * {@link PersistenceSession} could change over the lifetime of the instance (eg
- * when using the {@link InMemoryObjectStore}), we must always look the
- * {@link PersistenceSession} from the {@link IsisContext}. The same applies to
- * the {@link ServicesInjectorSpi}.
- */
-public class DomainObjectContainerObjectChanged {
-
-    public DomainObjectContainerObjectChanged() {
-    }
-
-    public void objectChanged(final Object object) {
-        if (object != null) {
-            final ObjectAdapter adapter = adapterFor(object);
-            getPersistenceSession().objectChanged(adapter);
-        }
-    }
-
-    private ObjectAdapter adapterFor(final Object object) {
-        return getAdapterManager().adapterFor(object);
-    }
-
-    // /////////////////////////////////////////////////////////////////
-    // Dependencies (looked up from context)
-    // /////////////////////////////////////////////////////////////////
-
-    protected PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
-    }
-
-    protected AdapterManager getAdapterManager() {
-        return getPersistenceSession().getAdapterManager();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
index 90a927a..503177c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
@@ -35,8 +35,6 @@ import org.apache.isis.core.metamodel.adapter.DomainObjectServices;
 import org.apache.isis.core.metamodel.adapter.DomainObjectServicesAbstract;
 import org.apache.isis.core.metamodel.adapter.LocalizationProviderAbstract;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
-import org.apache.isis.core.metamodel.adapter.ObjectDirtierAbstract;
 import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
 import org.apache.isis.core.metamodel.adapter.ObjectPersistorAbstract;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
@@ -60,7 +58,6 @@ import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.transactions.TransactionState;
 import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
 import org.apache.isis.core.metamodel.transactions.TransactionStateProviderAbstract;
-import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerObjectChanged;
 import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerResolve;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -76,7 +73,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
 
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final AdapterManager adapterManager;
-    private final ObjectDirtier objectDirtier;
     private final ObjectInstantiator objectInstantiator;
     private final ObjectPersistor objectPersistor;
     private final QuerySubmitter querySubmitter;
@@ -165,18 +161,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
             }
         };
 
-        this.objectDirtier = new ObjectDirtierAbstract() {
-
-            @Override
-            public void objectChanged(final ObjectAdapter adapter) {
-                getPersistenceSession().objectChanged(adapter);
-            }
-
-            @Override
-            public void objectChanged(final Object object) {
-                new DomainObjectContainerObjectChanged().objectChanged(object);
-            }
-        };
         this.objectPersistor = new ObjectPersistorAbstract() {
             @Override
             public void makePersistent(final ObjectAdapter adapter) {
@@ -349,11 +333,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
     }
 
     @Override
-    public ObjectDirtier getObjectDirtier() {
-        return objectDirtier;
-    }
-
-    @Override
     public ObjectPersistor getObjectPersistor() {
         return objectPersistor;
     }


[2/4] isis git commit: ISIS-1194: removing DirtyFacet and supporting code.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 1f4eb16..fd1ae0f 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -48,7 +48,6 @@ import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
-import org.apache.isis.core.metamodel.spec.Dirtiable;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -424,74 +423,10 @@ public class PersistenceSession implements SessionScopedComponent, DebuggableWit
 
             @Override
             public void onSuccess() {
-                clearAllDirty();
             }
         });
     }
 
-    // ///////////////////////////////////////////////////////////////////////////
-    // Manual dirtying support
-    // ///////////////////////////////////////////////////////////////////////////
-
-    public boolean isCheckObjectsForDirtyFlag() {
-        return dirtiableSupport;
-    }
-
-
-    /**
-     * Mark as {@link #objectChanged(ObjectAdapter) changed } all
-     * {@link Dirtiable} objects that have been
-     * {@link Dirtiable#markDirty(ObjectAdapter) manually marked} as dirty.
-     * 
-     * <p>
-     * If {@link #isCheckObjectsForDirtyFlag() enabled}, will mark as
-     * {@link #objectChanged(ObjectAdapter) changed} any {@link Dirtiable}
-     * objects that have manually been
-     * {@link Dirtiable#markDirty(ObjectAdapter) marked as dirty}.
-     * 
-     * <p>
-     * Called by the {@link IsisTransactionManager}.
-     */
-    public void objectChangedAllDirty() {
-        if (!dirtiableSupport) {
-            return;
-        }
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("marking as changed any objects that have been manually set as dirty");
-        }
-        for (final ObjectAdapter adapter : adapterManager) {
-            if (adapter.getSpecification().isDirty(adapter)) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("  found dirty object " + adapter);
-                }
-                objectChanged(adapter);
-                adapter.getSpecification().clearDirty(adapter);
-            }
-        }
-    }
-
-    /**
-     * Set as {@link Dirtiable#clearDirty(ObjectAdapter) clean} any
-     * {@link Dirtiable} objects.
-     */
-    public synchronized void clearAllDirty() {
-        if (!isCheckObjectsForDirtyFlag()) {
-            return;
-        }
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("cleaning any manually dirtied objects");
-        }
-
-        for (final ObjectAdapter object : adapterManager) {
-            if (object.getSpecification().isDirty(object)) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("  found dirty object " + object);
-                }
-                object.getSpecification().clearDirty(object);
-            }
-        }
-    }
 
     // ///////////////////////////////////////////////////////////////////////////
     // Services
@@ -745,33 +680,6 @@ public class PersistenceSession implements SessionScopedComponent, DebuggableWit
         });
     }
 
-    // ///////////////////////////////////////////////////////////////////////////
-    // objectChanged
-    // ///////////////////////////////////////////////////////////////////////////
-
-    /**
-     * Mark the {@link ObjectAdapter} as changed, and therefore requiring
-     * flushing to the persistence mechanism.
-     */
-    public void objectChanged(final ObjectAdapter adapter) {
-
-        if (adapter.isTransient() || (adapter.isParented() && adapter.getAggregateRoot().isTransient())) {
-            return;
-        }
-
-        if (adapter.respondToChangesInPersistentObjects()) {
-            if (isImmutable(adapter)) {
-                // previously used to throw
-                // new
-                // ObjectPersistenceException("cannot change immutable object");
-                // however, since the the bytecode enhancers effectively make
-                // calling objectChanged() the responsibility of the framework,
-                // we may as well now do the check here and ignore if doesn't
-                // apply.
-                return;
-            }
-        }
-    }
 
 
     // ///////////////////////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
index bdb56e8..5b66a6c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
@@ -388,7 +388,6 @@ public class IsisTransactionManager implements SessionScopedComponent {
         }
 
         if (getTransaction() != null) {
-            persistenceSession.objectChangedAllDirty();
             getTransaction().flush();
         }
         return false;
@@ -467,17 +466,6 @@ public class IsisTransactionManager implements SessionScopedComponent {
                 }
 
                 try {
-                    persistenceSession.objectChangedAllDirty();
-                } catch(RuntimeException ex) {
-                    // just in case any new exception was raised...
-                    abortCause = ex;
-                    transactionLevel = 1; // because the transactionLevel was decremented earlier
-                }
-            }
-            
-            if(abortCause == null) {
-                
-                try {
                     getTransaction().preCommit();
                 } catch(RuntimeException ex) {
                     // just in case any new exception was raised...

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/FrameworkSynchronizer.java
index d4ce468..8dc8573 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/FrameworkSynchronizer.java
@@ -236,8 +236,6 @@ public class FrameworkSynchronizer {
                     CallbackFacet.Util.callCallback(adapter, UpdatedCallbackFacet.class);
                 }
 
-                Utils.clearDirtyFor(adapter);
-
                 Version versionIfAny = getVersionIfAny(pojo);
                 adapter.setVersion(versionIfAny);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/Utils.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/Utils.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/Utils.java
index 88fd45e..cb2a3ec 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/Utils.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/Utils.java
@@ -18,15 +18,14 @@
  */
 package org.apache.isis.objectstore.jdo.datanucleus.persistence;
 
-import java.util.Date;
-
 import javax.jdo.listener.InstanceLifecycleEvent;
 
+import org.datanucleus.enhancement.Persistable;
+
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.version.SerialNumberVersion;
 import org.apache.isis.core.metamodel.adapter.version.Version;
-import org.datanucleus.enhancement.Persistable;
 
 public class Utils {
 
@@ -41,10 +40,6 @@ public class Utils {
         return (Persistable)event.getSource();
     }
 
-    static void clearDirtyFor(final ObjectAdapter adapter) {
-        adapter.getSpecification().clearDirty(adapter);
-    }
-
     static Version getVersionIfAny(final Persistable pojo, final AuthenticationSession authenticationSession) {
         Object jdoVersion = pojo.dnGetVersion();
         if(jdoVersion instanceof Long) {

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
index ef9d3b7..5a2f8ef 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
@@ -109,11 +109,6 @@ public class ObjectStoreTransactionManager_EndTransactionTest {
         context.ignoring(mockObjectStore);
         transactionManager.startTransaction();
 
-        context.checking(new Expectations() {
-            {
-                oneOf(mockPersistenceSession).objectChangedAllDirty();
-            }
-        });
         assertThat(transactionManager.getTransactionLevel(), is(1));
         transactionManager.endTransaction();
         assertThat(transactionManager.getTransactionLevel(), is(0));

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java
index e1b7cdd..5ea1026 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java
@@ -26,7 +26,6 @@ import org.apache.isis.applib.events.InteractionEvent;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerObjectChanged;
 import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerResolve;
 
 public class DelegatingInvocationHandlerDefault<T> implements DelegatingInvocationHandler<T> {
@@ -39,7 +38,6 @@ public class DelegatingInvocationHandlerDefault<T> implements DelegatingInvocati
     protected final Method hashCodeMethod;
     protected final Method toStringMethod;
 
-    private final DomainObjectContainerObjectChanged domainObjectContainerObjectChanged;
     private final DomainObjectContainerResolve domainObjectContainerResolve;
 
     private boolean resolveObjectChangedEnabled;
@@ -53,7 +51,6 @@ public class DelegatingInvocationHandlerDefault<T> implements DelegatingInvocati
         this.executionMode = executionMode;
 
         this.domainObjectContainerResolve = new DomainObjectContainerResolve();
-        this.domainObjectContainerObjectChanged = new DomainObjectContainerObjectChanged();
 
         try {
             equalsMethod = delegate.getClass().getMethod("equals", new Class[] { Object.class });
@@ -86,15 +83,6 @@ public class DelegatingInvocationHandlerDefault<T> implements DelegatingInvocati
         }
     }
 
-    protected void objectChangedIfRequired(final ObjectAdapter targetAdapter) {
-        objectChangedIfRequired(targetAdapter.getObject());
-    }
-
-    protected void objectChangedIfRequired(final Object domainObject) {
-        if (resolveObjectChangedEnabled) {
-            domainObjectContainerObjectChanged.objectChanged(domainObject);
-        }
-    }
 
     public WrapperFactory getHeadlessViewer() {
         return wrapperFactory;

http://git-wip-us.apache.org/repos/asf/isis/blob/dfdd6a85/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 cb1b1b8..992550f 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
@@ -212,9 +212,6 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             throw new UnsupportedOperationException(String.format("Cannot invoke supporting method '%s'", memberName));
         }
 
-        // UNUSED?
-        final String methodName = method.getName();
-
         if (intent == Intent.DEFAULTS || intent == Intent.CHOICES_OR_AUTOCOMPLETE) {
             return method.invoke(getDelegate(), args);
         }
@@ -281,21 +278,20 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
 
         final ObjectAction objectAction = (ObjectAction) objectMember;
 
-        for (int i = 0; i < args.length; i++) {
-            final Object arg = args[i];
-            if(arg == null) {
+        for (final Object arg : args) {
+            if (arg == null) {
                 continue;
             }
             final ObjectSpecificationDefault objectSpec = getJavaSpecification(arg.getClass());
 
-            if(args.length == 1) {
+            if (args.length == 1) {
                 // is this a contributed property/collection?
                 final List<ObjectAssociation> associations =
                         objectSpec.getAssociations(Contributed.INCLUDED);
                 for (final ObjectAssociation association : associations) {
-                    if(association instanceof ContributeeMember) {
+                    if (association instanceof ContributeeMember) {
                         final ContributeeMember contributeeMember = (ContributeeMember) association;
-                        if(contributeeMember.isContributedBy(objectAction)) {
+                        if (contributeeMember.isContributedBy(objectAction)) {
                             return contributeeMember;
                         }
                     }
@@ -306,9 +302,9 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             final List<ObjectAction> actions =
                     objectSpec.getObjectActions(Contributed.INCLUDED);
             for (final ObjectAction action : actions) {
-                if(action instanceof ContributeeMember) {
+                if (action instanceof ContributeeMember) {
                     final ContributeeMember contributeeMember = (ContributeeMember) action;
-                    if(contributeeMember.isContributedBy(objectAction)) {
+                    if (contributeeMember.isContributedBy(objectAction)) {
                         return contributeeMember;
                     }
                 }
@@ -429,8 +425,6 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             property.set(targetAdapter, argumentAdapter, getInteractionInitiatedBy());
         }
 
-        objectChangedIfRequired(targetAdapter);
-
         return null;
     }
 
@@ -532,8 +526,6 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             otma.addElement(targetAdapter, argumentNO, getInteractionInitiatedBy());
         }
 
-        objectChangedIfRequired(targetAdapter);
-
         return null;
     }
 
@@ -574,8 +566,6 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             collection.removeElement(targetAdapter, argumentAdapter, getInteractionInitiatedBy());
         }
 
-        objectChangedIfRequired(targetAdapter);
-
         return null;
     }
 
@@ -637,8 +627,6 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             return ObjectAdapter.Util.unwrap(actionReturnNO);
         }
 
-        objectChangedIfRequired(targetAdapter);
-
         return null;
     }
 


[4/4] isis git commit: ISIS-1194: (also ISIS-1044): adding metamodel validators to prevent the @NotPersistable annotation or the NonPersistable / ProgramPersistable interfaces from being implemented.

Posted by da...@apache.org.
ISIS-1194: (also ISIS-1044): adding metamodel validators to prevent the @NotPersistable annotation or the NonPersistable / ProgramPersistable interfaces from being implemented.


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

Branch: refs/heads/master
Commit: bafce55350f16cc8f8e285051cb7f0bf3c6dacd3
Parents: dfdd6a8
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 3 17:18:37 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 3 17:18:37 2015 +0100

----------------------------------------------------------------------
 .../isis/applib/annotation/NotPersistable.java  | 12 ++---
 .../isis/applib/marker/NonPersistable.java      |  9 ++--
 .../isis/applib/marker/ProgramPersistable.java  |  9 ++--
 .../NotPersistableFacetAnnotationFactory.java   | 35 ++++++++++++-
 ...tPersistableFacetMarkerInterfaceFactory.java | 54 ++++++++++++++++----
 .../DisablingInteractionAdvisor.java            |  4 +-
 6 files changed, 93 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/bafce553/core/applib/src/main/java/org/apache/isis/applib/annotation/NotPersistable.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/NotPersistable.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/NotPersistable.java
index 65a9b35..83d5225 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/NotPersistable.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/NotPersistable.java
@@ -30,14 +30,11 @@ import org.apache.isis.applib.marker.ProgramPersistable;
 import org.apache.isis.applib.util.Enums;
 
 /**
- * Indicates that an instance cannot be persisted by a user, but only
- * programmatically.
+ * No longer supported - the MetaModel validator will reject any domain classes annotated with this annotation.
  *
- * <p>
- *     This annotation is only partly supported by the framework, and may be deprecated
- *     in the future.
- * </p>
+ * @deprecated
  */
+@Deprecated
 @Inherited
 @Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
@@ -48,6 +45,9 @@ public @interface NotPersistable {
         USER_OR_PROGRAM;
         
         public static By lookupForMarkerInterface(final Class<?> cls) {
+            if(cls.isInterface()) {
+                return null;
+            }
             if (ProgramPersistable.class.isAssignableFrom(cls)) {
                 return USER;
             } else if (NonPersistable.class.isAssignableFrom(cls)) {

http://git-wip-us.apache.org/repos/asf/isis/blob/bafce553/core/applib/src/main/java/org/apache/isis/applib/marker/NonPersistable.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/NonPersistable.java b/core/applib/src/main/java/org/apache/isis/applib/marker/NonPersistable.java
index 6895a6d..1b53b64 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/NonPersistable.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/marker/NonPersistable.java
@@ -19,13 +19,12 @@
 
 package org.apache.isis.applib.marker;
 
-import org.apache.isis.applib.annotation.NotPersisted;
-
 /**
- * Marker interface to show that an object cannot be persisted.
- * 
- * Use {@link NotPersisted} annotation in preference to this marker interface.
+ * No longer supported - the MetaModel validator will reject any domain classes that implement this marker interface.
+ *
+ * @deprecated
  */
+@Deprecated
 public interface NonPersistable {
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/bafce553/core/applib/src/main/java/org/apache/isis/applib/marker/ProgramPersistable.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/ProgramPersistable.java b/core/applib/src/main/java/org/apache/isis/applib/marker/ProgramPersistable.java
index 90f19f4..a1f31d3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/ProgramPersistable.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/marker/ProgramPersistable.java
@@ -19,13 +19,12 @@
 
 package org.apache.isis.applib.marker;
 
-import org.apache.isis.applib.annotation.NotPersisted;
-
 /**
- * Marker interface to show that an object cannot be persisted.
- * 
- * Use {@link NotPersisted} annotation in preference to this marker interface.
+ * No longer supported - the MetaModel validator will reject any domain classes that implement this marker interface.
+ *
+ * @deprecated
  */
+@Deprecated
 public interface ProgramPersistable {
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/bafce553/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotationFactory.java
index 10db3bc..02c0e91 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotationFactory.java
@@ -20,14 +20,20 @@
 package org.apache.isis.core.metamodel.facets.object.notpersistable.notpersistableannot;
 
 import org.apache.isis.applib.annotation.NotPersistable;
+import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
+import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
 
-public class NotPersistableFacetAnnotationFactory extends FacetFactoryAbstract {
+public class NotPersistableFacetAnnotationFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner {
 
     public NotPersistableFacetAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -49,4 +55,31 @@ public class NotPersistableFacetAnnotationFactory extends FacetFactoryAbstract {
         return annotation != null ? new NotPersistableFacetAnnotation(annotation.value(), holder) : null;
     }
 
+    @Override
+    public void refineMetaModelValidator(
+            final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(new MetaModelValidatorVisiting(newValidatorVisitor()));
+    }
+
+    private MetaModelValidatorVisiting.Visitor newValidatorVisitor() {
+        return new MetaModelValidatorVisiting.Visitor() {
+            @Override
+            public boolean visit(
+                    final ObjectSpecification objectSpec,
+                    final ValidationFailures validationFailures) {
+
+                if (objectSpec.containsDoOpFacet(NotPersistableFacet.class)) {
+                    final NotPersistableFacet notPersistableFacet = objectSpec.getFacet(NotPersistableFacet.class);
+                    if(notPersistableFacet instanceof NotPersistableFacetAnnotation) {
+                        final Class<?> type = NotPersistable.class;
+                        validationFailures.add(String.format(
+                                "%s is annotated with %s; this annotation is no longer supported",
+                                objectSpec.getFullIdentifier(), type.getSimpleName()));
+                    }
+                }
+                return true;
+            }
+        };
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/bafce553/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterfaceFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterfaceFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterfaceFactory.java
index 81345ee..8a51124 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterfaceFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterfaceFactory.java
@@ -19,33 +19,67 @@
 
 package org.apache.isis.core.metamodel.facets.object.notpersistable.notpersistablemarkerifc;
 
-import java.lang.reflect.Method;
-
 import org.apache.isis.applib.annotation.NotPersistable;
+import org.apache.isis.applib.marker.NonPersistable;
+import org.apache.isis.applib.marker.ProgramPersistable;
+import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
+import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
 
-public class NotPersistableFacetMarkerInterfaceFactory extends FacetFactoryAbstract {
+public class NotPersistableFacetMarkerInterfaceFactory extends FacetFactoryAbstract implements
+        MetaModelValidatorRefiner {
 
     public NotPersistableFacetMarkerInterfaceFactory() {
         super(FeatureType.OBJECTS_ONLY);
     }
 
-    public boolean recognizes(final Method method) {
-        return false;
-    }
-
     @Override
-    public void process(final ProcessClassContext processClassContaxt) {
-        final NotPersistable.By initiatedBy = NotPersistable.By.lookupForMarkerInterface(processClassContaxt.getCls());
-        FacetUtil.addFacet(create(initiatedBy, processClassContaxt.getFacetHolder()));
+    public void process(final ProcessClassContext processClassContext) {
+        final NotPersistable.By initiatedBy = NotPersistable.By.lookupForMarkerInterface(processClassContext.getCls());
+        FacetUtil.addFacet(create(initiatedBy, processClassContext.getFacetHolder()));
     }
 
     private NotPersistableFacet create(final NotPersistable.By initiatedBy, final FacetHolder holder) {
         return initiatedBy != null ? new NotPersistableFacetMarkerInterface(initiatedBy, holder) : null;
     }
 
+    @Override
+    public void refineMetaModelValidator(
+            final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(new MetaModelValidatorVisiting(newValidatorVisitor()));
+    }
+
+    private MetaModelValidatorVisiting.Visitor newValidatorVisitor() {
+        return new MetaModelValidatorVisiting.Visitor() {
+            @Override
+            public boolean visit(
+                    final ObjectSpecification objectSpec,
+                    final ValidationFailures validationFailures) {
+
+                if (objectSpec.containsDoOpFacet(NotPersistableFacet.class)) {
+                    final NotPersistableFacet notPersistableFacet = objectSpec.getFacet(NotPersistableFacet.class);
+                    if(notPersistableFacet instanceof NotPersistableFacetMarkerInterface) {
+                        final NotPersistable.By by = ((NotPersistableFacetMarkerInterface) notPersistableFacet).value();
+                        final Class<?> type =
+                                by == NotPersistable.By.USER
+                                    ? ProgramPersistable.class
+                                    : NonPersistable.class;
+                        validationFailures.add(String.format(
+                                "%s implements %s; this interface is no longer supported",
+                                objectSpec.getFullIdentifier(), type.getSimpleName()));
+                    }
+                }
+                return true;
+            }
+        };
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/bafce553/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/DisablingInteractionAdvisor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/DisablingInteractionAdvisor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/DisablingInteractionAdvisor.java
index e35d688..4b51b22 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/DisablingInteractionAdvisor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/DisablingInteractionAdvisor.java
@@ -39,9 +39,7 @@ public interface DisablingInteractionAdvisor extends InteractionAdvisorFacet, Di
      * Implementations should use the provided {@link InteractionContext} to
      * determine whether they disable the member from being modified or used.
      * They must however guard against a <tt>null</tt>
-     * {@link InteractionContext#getTarget() target} and
-     * {@link InteractionContext#getSession() session} - neither are guaranteed
-     * to be populated.
+     * {@link InteractionContext#getTarget() target} - this is not guaranteed to be populated.
      */
     String disables(final UsabilityContext<? extends UsabilityEvent> ic);