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 2016/05/20 00:44:38 UTC

[01/30] isis git commit: ISIS-1335: minor extensions to SimpleObject for the "updateName" action.

Repository: isis
Updated Branches:
  refs/heads/ISIS-1408 [created] 03a1bd1cf


ISIS-1335: minor extensions to SimpleObject for the "updateName" action.


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

Branch: refs/heads/ISIS-1408
Commit: ed3b9e7049a4da0803b7cbbdd8b8fbba3fcf759d
Parents: d262830
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu May 19 16:15:39 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu May 19 16:15:39 2016 +0100

----------------------------------------------------------------------
 .../dom/src/main/java/domainapp/dom/simple/SimpleObject.java   | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/ed3b9e70/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.java b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
index 1430eaf..6754ee1 100644
--- a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
+++ b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
@@ -109,6 +109,12 @@ public class SimpleObject implements Comparable<SimpleObject> {
         setName(name);
         return this;
     }
+    public String default0UpdateName() {
+        return getName();
+    }
+    public TranslatableString validate0UpdateName(final String name) {
+        return validateName(name);
+    }
 
 
 


[12/30] isis git commit: ISIS-1407: removed SpecificationLoaderAware.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/disabled/ObjectDisabledMethodFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/disabled/ObjectDisabledMethodFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/disabled/ObjectDisabledMethodFacetFactoryTest.java
index d15f97e..1dd27fc 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/disabled/ObjectDisabledMethodFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/disabled/ObjectDisabledMethodFacetFactoryTest.java
@@ -30,7 +30,7 @@ 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.disabled.method.DisabledObjectFacetViaMethod;
 import org.apache.isis.core.metamodel.facets.object.disabled.method.DisabledObjectFacetViaMethodFactory;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 public class ObjectDisabledMethodFacetFactoryTest extends AbstractFacetFactoryTest {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/encodable/EncodableFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/encodable/EncodableFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/encodable/EncodableFacetFactoryTest.java
index afb32f9..08a7595 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/encodable/EncodableFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/encodable/EncodableFacetFactoryTest.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.facets.object.encodeable.annotcfg.Encodabl
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncoderDecoderUtil;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class EncodableFacetFactoryTest extends AbstractFacetFactoryTest {
 
@@ -45,7 +45,7 @@ public class EncodableFacetFactoryTest extends AbstractFacetFactoryTest {
         facetFactory = new EncodableFacetAnnotationElseConfigurationFactory();
         isisConfigurationDefault = new IsisConfigurationDefault();
 
-        ServicesInjectorDefault servicesInjector = new ServicesInjectorDefault(Collections.emptyList());
+        ServicesInjector servicesInjector = new ServicesInjector(Collections.emptyList());
         servicesInjector.addFallbackIfRequired(ConfigurationServiceInternal.class, isisConfigurationDefault = new IsisConfigurationDefault());
         facetFactory.setServicesInjector(servicesInjector);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
index 6c0b242..6693b6a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.facets.object.title.methods.TitleFacetViaMethodsFactory;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.object.title.methods.TitleFacetViaTitleMethod;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
index 3fbc59c..f8e7556 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
@@ -46,6 +46,7 @@ import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetV
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation.TitleComponent;
 import org.apache.isis.core.metamodel.runtimecontext.LocalizationDefault;
 import org.apache.isis.core.metamodel.runtimecontext.LocalizationProvider;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Allowing;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -70,8 +71,6 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
 
         facetFactory = new TitleAnnotationFacetFactory();
         facetFactory.setAdapterManager(mockAdapterManager);
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
-        facetFactory.setServicesInjector(mockServicesInjector);
 
         context.checking(new Expectations() {
             {
@@ -83,17 +82,20 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
 
                 allowing(mockLocalizationProvider).getLocalization();
                 will(returnValue(new LocalizationDefault()));
-            }
-        });
-        context.checking(new Expectations() {
-            {
+
                 allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
                 will(returnValue(DeploymentCategory.PRODUCTION));
 
                 allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
                 will(returnValue(mockAuthenticationSession));
+
+                allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+                will(returnValue(mockSpecificationLoader));
             }
         });
+
+        facetFactory.setServicesInjector(mockServicesInjector);
+
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
index 6906fcf..2548b88 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
@@ -38,7 +38,6 @@ public class ObjectSpecIdFacetDerivedFromClassNameFactoryTest extends AbstractFa
     @Before
     public void setUp() throws Exception {
         facetFactory = new ObjectSpecIdFacetDerivedFromClassNameFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
     }
 
     public static class Customer {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
index 8216590..0794cee 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ObjectValidMethodFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ObjectValidMethodFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ObjectValidMethodFacetFactoryTest.java
index c625d06..7c6f168 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ObjectValidMethodFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ObjectValidMethodFacetFactoryTest.java
@@ -28,7 +28,7 @@ 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.validating.validateobject.method.ValidateObjectFacetMethod;
 import org.apache.isis.core.metamodel.facets.object.validating.validateobject.method.ValidateObjectFacetMethodFactory;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 public class ObjectValidMethodFacetFactoryTest extends AbstractFacetFactoryTest {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
index 0de1f3e..858406f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation;
 import org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetFactory;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 public class MemberOrderAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
index 5a6402a..b34235c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy.MustSat
 import org.apache.isis.core.metamodel.facets.propparam.specification.DomainObjectWithMustSatisfyAnnotations;
 import org.apache.isis.core.metamodel.facets.propparam.specification.DomainObjectWithoutMustSatisfyAnnotations;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import static org.apache.isis.core.commons.matchers.IsisMatchers.anInstanceOf;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
index 3877ba4..dfef437 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
@@ -77,7 +77,6 @@ public class ParameterAnnotationFacetFactoryTest extends AbstractFacetFactoryJUn
     @Before
     public void setUp() throws Exception {
         facetFactory = new ParameterAnnotationFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
     }
 
@@ -96,9 +95,7 @@ public class ParameterAnnotationFacetFactoryTest extends AbstractFacetFactoryJUn
                         @Parameter(
                                 maxLength = 30
                         )
-                        final String name
-                ) {
-                }
+                        final String name) { }
             }
 
             // given

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
index db67707..6144899 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
@@ -21,16 +21,10 @@ package org.apache.isis.core.metamodel.facets.properties;
 
 import java.lang.reflect.Method;
 
-import org.jmock.Expectations;
-
 import org.apache.isis.applib.security.UserMemento;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.members.describedas.staticmethod.DescribedAsFacetStaticMethod;
@@ -92,15 +86,10 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         super.setUp();
     }
 
-    private void injectServicesIntoAndAllowingServiceInjectorLookups(final FacetFactoryAbstract facetFactory) {
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
-        facetFactory.setServicesInjector(mockServicesInjector);
-    }
-
     public void testPropertyAccessorFacetIsInstalledAndMethodRemoved() {
         final PropertyAccessorFacetViaAccessorFactory facetFactory = new PropertyAccessorFacetViaAccessorFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -124,9 +113,9 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
    public void testSetterFacetIsInstalledForSetterMethodAndMethodRemoved() {
         final PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
 
-       injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+       facetFactory.setServicesInjector(mockServicesInjector);
 
-        class Customer {
+       class Customer {
             @SuppressWarnings("unused")
             public String getFirstName() {
                 return null;
@@ -153,7 +142,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInitializationFacetIsInstalledForSetterMethodAndMethodRemoved() {
         final PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -182,8 +171,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testSetterFacetIsInstalledMeansNoDisabledOrDerivedFacetsInstalled() {
         final PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -207,12 +195,11 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         final PropertyModifyFacetFactory facetFactoryForModify = new PropertyModifyFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForModify);
-
+        facetFactoryForModify.setServicesInjector(mockServicesInjector);
 
         final PropertySetAndClearFacetFactory facetFactoryForSetter = new PropertySetAndClearFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForSetter);
+        facetFactoryForSetter.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -242,18 +229,15 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testModifyMethodWithNoSetterInstallsNotPersistedFacetButDoesNotInstallADisabledFacets() {
         final PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
-
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final PropertyModifyFacetFactory facetFactoryForModify = new PropertyModifyFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForModify);
-
+        facetFactoryForModify.setServicesInjector(mockServicesInjector);
 
         final DisabledFacetOnPropertyInferredFactory disabledFacetOnPropertyInferredFactory = new DisabledFacetOnPropertyInferredFactory();
-        disabledFacetOnPropertyInferredFactory.setSpecificationLoader(mockSpecificationLoader);
+        disabledFacetOnPropertyInferredFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -281,18 +265,12 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     }
 
     public void testIfHaveSetterAndModifyFacetThenTheModifyFacetWinsOut() {
-        final PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
+        final PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
         facetFactory.setServicesInjector(mockServicesInjector);
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
-
         final PropertyModifyFacetFactory facetFactoryForModify = new PropertyModifyFacetFactory();
-
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForModify);
-
+        facetFactoryForModify.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -329,8 +307,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testClearFacet() {
         final PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -359,8 +336,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testClearFacetViaSetterIfNoExplicitClearMethod() {
         final PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -387,8 +363,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testChoicesFacetFoundAndMethodRemoved() {
         final PropertyChoicesFacetViaMethodFactory facetFactory = new PropertyChoicesFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -416,19 +391,19 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     }
     
     public void testAutoCompleteFacetFoundAndMethodRemoved() {
+
         final PropertyAutoCompleteFacetMethodFactory facetFactory = new PropertyAutoCompleteFacetMethodFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
 
-        context.checking(new Expectations(){{
-            allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
-            will(returnValue(mockAuthenticationSessionProvider));
-
-            final DeploymentCategory deploymentCategory = DeploymentCategory.PRODUCTION;
-            allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
-            will(returnValue(mockDeploymentCategoryProvider));
-
-        }});
+//        context.checking(new Expectations(){{
+//            allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
+//            will(returnValue(mockAuthenticationSessionProvider));
+//
+//            final DeploymentCategory deploymentCategory = DeploymentCategory.PRODUCTION;
+//            allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
+//            will(returnValue(mockDeploymentCategoryProvider));
+//
+//        }});
 
 
         class Customer {
@@ -459,8 +434,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testDefaultFacetFoundAndMethodRemoved() {
         final PropertyDefaultFacetViaMethodFactory facetFactory = new PropertyDefaultFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -490,8 +464,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testValidateFacetFoundAndMethodRemoved() {
         final PropertyValidateFacetViaMethodFactory facetFactory = new PropertyValidateFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -521,7 +494,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testDisableFacetFoundAndMethodRemoved() {
         final DisableForContextFacetViaMethodFactory facetFactory = new DisableForContextFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -551,8 +524,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testDisableFacetNoArgsFoundAndMethodRemoved() {
         final DisableForContextFacetViaMethodFactory facetFactory = new DisableForContextFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -582,7 +554,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testHiddenFacetFoundAndMethodRemoved() {
         final HideForContextFacetViaMethodFactory facetFactory = new HideForContextFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -612,8 +584,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testHiddenFacetWithNoArgFoundAndMethodRemoved() {
         final HideForContextFacetViaMethodFactory facetFactory = new HideForContextFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -643,7 +614,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testPropertyFoundOnSuperclass() {
         final PropertyAccessorFacetViaAccessorFactory facetFactory = new PropertyAccessorFacetViaAccessorFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -669,17 +640,15 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testPropertyFoundOnSuperclassButHelperMethodFoundOnSubclass() {
         final PropertyAccessorFacetViaAccessorFactory facetFactory = new PropertyAccessorFacetViaAccessorFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final HideForContextFacetViaMethodFactory facetFactoryForHide = new HideForContextFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForHide);
+        facetFactoryForHide.setServicesInjector(mockServicesInjector);
 
         final DisableForContextFacetViaMethodFactory facetFactoryForDisable = new DisableForContextFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForDisable);
-
-
+        facetFactoryForDisable.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -775,8 +744,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsNamedFacetUsingNameMethodAndRemovesMethod() {
         final NamedFacetStaticMethodFactory facetFactory = new NamedFacetStaticMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method nameMethod = findMethod(CustomerStatic.class, "nameFirstName");
@@ -795,8 +763,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsDescribedAsFacetUsingDescriptionAndRemovesMethod() {
         final DescribedAsFacetStaticMethodFactory facetFactory = new DescribedAsFacetStaticMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method descriptionMethod = findMethod(CustomerStatic.class, "descriptionFirstName");
@@ -815,8 +782,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsHiddenFacetUsingAlwaysHideAndRemovesMethod() {
         final HiddenFacetStaticMethodFactory facetFactory = new HiddenFacetStaticMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method propertyAlwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideFirstName");
@@ -832,8 +798,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsHiddenFacetUsingAlwaysHideWhenNotAndRemovesMethod() {
         final HiddenFacetStaticMethodFactory facetFactory = new HiddenFacetStaticMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getLastName");
         final Method propertyAlwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideLastName");
@@ -848,8 +813,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsDisabledFacetUsingProtectAndRemovesMethod() {
         final DisabledFacetStaticMethodFacetFactory facetFactory = new DisabledFacetStaticMethodFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method propertyProtectMethod = findMethod(CustomerStatic.class, "protectFirstName");
@@ -866,7 +830,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testDoesNotInstallDisabledFacetUsingProtectWhenNotAndRemovesMethod() {
         final DisabledFacetStaticMethodFacetFactory facetFactory = new DisabledFacetStaticMethodFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getLastName");
         final Method propertyProtectMethod = findMethod(CustomerStatic.class, "protectLastName");
@@ -882,8 +846,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsHiddenForSessionFacetAndRemovesMethod() {
         final HideForSessionFacetViaMethodFactory facetFactory = new HideForSessionFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method hideMethod = findMethod(CustomerStatic.class, "hideFirstName", new Class[] { UserMemento.class });
@@ -903,8 +866,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsDisabledForSessionFacetAndRemovesMethod() {
         final DisableForSessionFacetViaMethodFactory facetFactory = new DisableForSessionFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method disableMethod = findMethod(CustomerStatic.class, "disableFirstName", new Class[] { UserMemento.class });

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
index f19326c..a244d7c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
@@ -38,7 +38,7 @@ import org.apache.isis.core.metamodel.facets.properties.property.mustsatisfy.Mus
 import org.apache.isis.core.metamodel.facets.propparam.specification.DomainObjectWithMustSatisfyAnnotations;
 import org.apache.isis.core.metamodel.facets.propparam.specification.DomainObjectWithoutMustSatisfyAnnotations;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import static org.apache.isis.core.commons.matchers.IsisMatchers.anInstanceOf;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index 03499be..c617fdb 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -115,7 +115,6 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
     @Before
     public void setUp() throws Exception {
         facetFactory = new PropertyAnnotationFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionMoreTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionMoreTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionMoreTest.java
index c4ea7f5..24865c3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionMoreTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionMoreTest.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.object.validating.mustsatisfyspec.MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet;
 import org.apache.isis.core.metamodel.interactions.PropertyModifyContext;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import static org.hamcrest.CoreMatchers.is;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionTest.java
index d187435..4e48c3d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionTest.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.object.validating.mustsatisfyspec.MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet;
 import org.apache.isis.core.metamodel.interactions.PropertyModifyContext;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import static org.hamcrest.CoreMatchers.is;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mask/MaskAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mask/MaskAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mask/MaskAnnotationFacetFactoryTest.java
index 272b7fc..1c797d6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mask/MaskAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mask/MaskAnnotationFacetFactoryTest.java
@@ -52,7 +52,6 @@ public class MaskAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testMaskAnnotationPickedUpOnClass() {
         final MaskFacetOnTypeAnnotationFactory facetFactory = new MaskFacetOnTypeAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         @Mask("###")
         class Customer {
@@ -68,7 +67,7 @@ public class MaskAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testMaskAnnotationPickedUpOnProperty() {
         final MaskFacetOnPropertyAnnotationFactory facetFactory = new MaskFacetOnPropertyAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -90,7 +89,8 @@ public class MaskAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testMaskAnnotationPickedUpOnActionParameter() {
         final MaskFacetOnParameterAnnotationFactory facetFactory = new MaskFacetOnParameterAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+        facetFactory.setServicesInjector(mockServicesInjector);
+
 
         class Customer {
             @SuppressWarnings("unused")
@@ -110,7 +110,8 @@ public class MaskAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testMaskAnnotationNotIgnoredForNonStringsProperty() {
         final MaskFacetOnPropertyAnnotationFactory facetFactory = new MaskFacetOnPropertyAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+        facetFactory.setServicesInjector(mockServicesInjector);
+
 
         class Customer {
             @SuppressWarnings("unused")
@@ -128,7 +129,8 @@ public class MaskAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testMaskAnnotationNotIgnoredForPrimitiveOnActionParameter() {
         final MaskFacetOnParameterAnnotationFactory facetFactory = new MaskFacetOnParameterAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+        facetFactory.setServicesInjector(mockServicesInjector);
+
 
         class Customer {
             @SuppressWarnings("unused")

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
index 86acf64..7e96e9c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
 import org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderContext;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_read.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_read.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_read.java
index f39abf8..4b908f1 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_read.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_read.java
@@ -32,7 +32,7 @@ import org.junit.Test;
 
 import org.apache.isis.applib.services.grid.GridService;
 import org.apache.isis.core.commons.lang.ClassExtensions;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import static org.hamcrest.CoreMatchers.is;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_readMetadata.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_readMetadata.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_readMetadata.java
index 47489be..35d111c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_readMetadata.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_readMetadata.java
@@ -25,7 +25,7 @@ import org.junit.Test;
 import org.apache.isis.applib.annotation.Render;
 import org.apache.isis.applib.services.grid.GridService;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadata;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import static org.hamcrest.CoreMatchers.equalTo;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
index 2958892..87e4958 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
@@ -45,7 +45,7 @@ public class ServicesInjectorDefaultTest {
     @Mock
     private SomeDomainObject mockDomainObject;
 
-    private ServicesInjectorDefault injector;
+    private ServicesInjector injector;
 
     public static interface Service1 {
     }
@@ -70,7 +70,7 @@ public class ServicesInjectorDefaultTest {
     public void setUp() throws Exception {
         final Object[] services = { mockContainer, mockService1, mockService2 };
 
-        injector = new ServicesInjectorDefault(Arrays.asList(services), new InjectorMethodEvaluatorDefault());
+        injector = new ServicesInjector(Arrays.asList(services), new InjectorMethodEvaluatorDefault());
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_usingFields.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_usingFields.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_usingFields.java
index 754bf32..b4e67bd 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_usingFields.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_usingFields.java
@@ -20,10 +20,13 @@
 package org.apache.isis.core.metamodel.services;
 
 import java.util.Arrays;
+
 import javax.inject.Inject;
+
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+
 import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -43,7 +46,7 @@ public class ServicesInjectorDefaultTest_usingFields {
     private SomeDomainService2 service2;
     private SomeDomainService3 service3;
     
-    private ServicesInjectorSpi injector;
+    private ServicesInjector injector;
 
 
     static class SomeDomainService3 { }
@@ -81,7 +84,7 @@ public class ServicesInjectorDefaultTest_usingFields {
         service1 = new SomeDomainService1();
         service3 = new SomeDomainService3();
         service2 = new SomeDomainService2();
-        injector = new ServicesInjectorDefault(Arrays.asList(container, service1, service3, service2));
+        injector = new ServicesInjector(Arrays.asList(container, service1, service3, service2));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_validateServices.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_validateServices.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_validateServices.java
index f2611d9..fa99e9e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_validateServices.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest_validateServices.java
@@ -28,7 +28,7 @@ import org.junit.Test;
 
 public class ServicesInjectorDefaultTest_validateServices {
 
-    ServicesInjectorDefault servicesInjector;
+    ServicesInjector servicesInjector;
 
     public static class DomainServiceWithSomeId {
         public String getId() { return "someId"; }
@@ -58,7 +58,7 @@ public class ServicesInjectorDefaultTest_validateServices {
             serviceList.add(new DomainServiceWithSomeId());
             serviceList.add(new DomainServiceWithDuplicateId());
 
-            servicesInjector = new ServicesInjectorDefault(serviceList, null);
+            servicesInjector = new ServicesInjector(serviceList, null);
 
             // when
             servicesInjector.validateServices();
@@ -70,7 +70,7 @@ public class ServicesInjectorDefaultTest_validateServices {
             serviceList.add(new DomainServiceWithSomeId());
             serviceList.add(new DomainServiceWithDifferentId());
 
-            servicesInjector = new ServicesInjectorDefault(serviceList, null);
+            servicesInjector = new ServicesInjector(serviceList, null);
 
             // when
             servicesInjector.validateServices();

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
index 43ee27a..2ab2142 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
@@ -37,6 +37,7 @@ import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.factory.FactoryService;
+import org.apache.isis.applib.services.registry.ServiceRegistry2;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
@@ -44,7 +45,6 @@ import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacetAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
 import org.apache.isis.core.metamodel.facets.properties.typicallen.annotation.TypicalLengthFacetOnPropertyAnnotation;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -82,7 +82,7 @@ public class ApplicationFeatureRepositoryDefaultTest {
     FactoryService mockFactoryService;
 
     @Mock
-    ServicesInjector mockServicesInjector;
+    ServiceRegistry2 mockServiceRegistry;
 
     ApplicationFeatureRepositoryDefault applicationFeatureRepository;
 
@@ -90,7 +90,7 @@ public class ApplicationFeatureRepositoryDefaultTest {
     public void setUp() throws Exception {
         applicationFeatureRepository = new ApplicationFeatureRepositoryDefault();
         applicationFeatureRepository.container = mockContainer;
-        applicationFeatureRepository.setServicesInjector(mockServicesInjector);
+        applicationFeatureRepository.serviceRegistry = mockServiceRegistry;
 
         final ApplicationFeatureFactory applicationFeatureFactory = new ApplicationFeatureFactory();
         applicationFeatureRepository.applicationFeatureFactory = applicationFeatureFactory;
@@ -176,7 +176,7 @@ public class ApplicationFeatureRepositoryDefaultTest {
                 allowing(mockActThatIsHidden).getSemantics();
                 will(returnValue(ActionSemantics.Of.SAFE));
 
-                allowing(mockServicesInjector).getRegisteredServices();
+                allowing(mockServiceRegistry).getRegisteredServices();
                 will(returnValue(Lists.newArrayList()));
             }});
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
index 8f5d2d5..765c3dd 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
@@ -36,7 +36,6 @@ import org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValid
 public class ObjectReflectorDefaultTest_object extends SpecificationLoaderTestAbstract {
 
     public static class TestDomainObject {
-
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
index 26faff6..591f9d1 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -49,8 +49,7 @@ import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidator
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
@@ -59,7 +58,7 @@ import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
 public abstract class SpecificationLoaderTestAbstract {
 
     @Rule
-    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_ONLY);
+    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
     @Rule
     public ExpectedException expectedException = ExpectedException.none();
@@ -73,9 +72,11 @@ public abstract class SpecificationLoaderTestAbstract {
     @Mock
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock
-    private ServicesInjectorSpi mockServicesInjector;
+    private ServicesInjector mockServicesInjector;
     @Mock
     private GridService mockGridService;
+    @Mock
+    private SpecificationLoader mockSpecificationLoader;
 
     // is loaded by subclasses
     protected ObjectSpecification specification;
@@ -99,6 +100,9 @@ public abstract class SpecificationLoaderTestAbstract {
             allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
             will(returnValue(mockAuthenticationSessionProvider));
 
+            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            will(returnValue(mockSpecificationLoader));
+
             allowing(mockServicesInjector).lookupService(GridService.class);
             will(returnValue(mockGridService));
 
@@ -107,6 +111,8 @@ public abstract class SpecificationLoaderTestAbstract {
             ignoring(mockServicesInjector).getRegisteredServices();
 
             ignoring(mockServicesInjector).isRegisteredService(with(any(Class.class)));
+
+            ignoring(mockSpecificationLoader).allServiceClasses();
         }});
 
         final SpecificationLoader reflector =
@@ -118,7 +124,7 @@ public abstract class SpecificationLoaderTestAbstract {
                                 new LayoutMetadataReaderFromJson()), mockServicesInjector);
         runtimeContext =
                 new RuntimeContextNoRuntime(
-                        new ServicesInjectorDefault(Collections.emptyList()), reflector);
+                        new ServicesInjector(Collections.emptyList()), reflector);
         reflector.init(runtimeContext);
         
         specification = loadSpecification(reflector);

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 5accaa7..7d15c76 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
@@ -44,7 +44,7 @@ import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -74,7 +74,7 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
 
     public ObjectSpecificationStub(final Class<?> type) {
         this(type.getName());
-        ServicesInjectorDefault servicesInjector = new ServicesInjectorDefault(Collections.emptyList());
+        ServicesInjector servicesInjector = new ServicesInjector(Collections.emptyList());
         servicesInjector.addFallbackIfRequired(
                 ConfigurationServiceInternal.class, new IsisConfigurationDefault(null));
         runtimeContext = new RuntimeContextNoRuntime(

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
index 868c498..c54a01b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
@@ -22,14 +22,16 @@ package org.apache.isis.core.runtime.fixtures;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import org.apache.isis.applib.fixtures.CompositeFixture;
 import org.apache.isis.applib.fixtures.FixtureType;
 import org.apache.isis.applib.fixtures.InstallableFixture;
 import org.apache.isis.applib.fixtures.LogonFixture;
 import org.apache.isis.core.commons.lang.ObjectExtensions;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -271,7 +273,7 @@ public class FixturesInstallerDelegate {
         return persistenceSession != null ? persistenceSession : IsisContext.getPersistenceSession();
     }
 
-    private ServicesInjectorSpi getServicesInjector() {
+    private ServicesInjector getServicesInjector() {
         return getPersistenceSession().getServicesInjector();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
index 1dc5921..47ccb7a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.runtime.installerregistry.installerapi;
 
 import org.apache.isis.core.commons.components.Installer;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
@@ -34,6 +34,6 @@ public interface PersistenceMechanismInstaller extends Installer {
 
     PersistenceSessionFactory createPersistenceSessionFactory(
             final DeploymentType deploymentType,
-            final ServicesInjectorSpi servicesInjector);
+            final ServicesInjector servicesInjector);
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
index 58d0f89..7e51973 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -42,7 +42,7 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
  * reference to the factory as part of the generated bytecode. Since the
  * {@link PersistenceSession} could change over the lifetime of the instance,
  * we must always look the {@link PersistenceSession} from the {@link IsisContext}.
- * The same applies to the {@link ServicesInjectorSpi}.
+ * The same applies to the {@link ServicesInjector}.
  */
 public class DomainObjectContainerResolve {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 ced961a..785279d 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
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerServiceAbstrac
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/package-info.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/package-info.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/package-info.java
index 1a94e03..29ff4dd 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/package-info.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/package-info.java
@@ -38,7 +38,7 @@
  * 
  * <p>
  * Note that the {@link PersistenceSession} both extends a number of superinterfaces as well as uses implementations of
- * various helpers (for example {@link org.apache.isis.ServicesInjectorSpi.services.ServicesInjector} and {@link org.apache.isis.core.runtime.system.persistence.runtime.persistence.oidgenerator.OidGenerator}).
+ * various helpers (for example {@link org.apache.isis.ServicesInjector.services.ServicesInjector} and {@link org.apache.isis.core.runtime.system.persistence.runtime.persistence.oidgenerator.OidGenerator}).
  * These superinterfaces and helper interfaces are not normally implemented directly, and it is the
  * responsibility of the {@link PersistenceMechanismInstaller} to ensure that the correct helper objects
  * are passed to the {@link PersistenceSession} implementation. 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/services/RequestScopedService.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/RequestScopedService.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/RequestScopedService.java
index c01b459..984381b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/RequestScopedService.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/RequestScopedService.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.runtime.services;
 
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 
 /**
@@ -35,7 +35,7 @@ public interface RequestScopedService {
 
     /**
      * Indicates to the proxy that a new request is starting, so should instantiate a new instance of the underlying
-     * service and bind to the thread, and inject into that service using the provided {@link org.apache.isis.core.metamodel.runtimecontext.ServicesInjector}.
+     * service and bind to the thread, and inject into that service using the provided {@link ServicesInjector}.
      *
      * <p>
      *     This is done before the <code>@PostConstruct</code>, see {@link #__isis_postConstruct()}.
@@ -49,7 +49,7 @@ public interface RequestScopedService {
      * underlying instance for current thread.
      *
      * <p>
-     *     This is done after the request has started, see {@link #__isis_startRequest(org.apache.isis.core.metamodel.runtimecontext.ServicesInjector)}.
+     *     This is done after the request has started, see {@link #__isis_startRequest(ServicesInjector)}.
      * </p>
      */
     @Programmatic

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
index 322c2a2..27ee048 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.commons.factory.InstanceCreationClassException;
 import org.apache.isis.core.commons.factory.InstanceCreationException;
 import org.apache.isis.core.commons.lang.ArrayExtensions;
 import org.apache.isis.core.commons.lang.MethodExtensions;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.JavassistEnhanced;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
index caf7bdd..6aef396 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
@@ -35,17 +35,15 @@ import org.apache.isis.applib.fixturescripts.FixtureScripts;
 import org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.commons.components.Noop;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.lang.ListExtensions;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.exploration.ExplorationSession;
@@ -84,14 +82,14 @@ public class IsisSystem implements ApplicationScopedComponent {
 
     //region > constructors
 
-    private final IsisComponentProvider isisComponentProvider;
+    private final IsisComponentProvider componentProvider;
 
-    public IsisSystem(IsisComponentProvider isisComponentProvider) {
-        this.deploymentType = isisComponentProvider.getDeploymentType();
+    public IsisSystem(IsisComponentProvider componentProvider) {
+        this.deploymentType = componentProvider.getDeploymentType();
         this.localeInitializer = new IsisLocaleInitializer();
         this.timeZoneInitializer = new IsisTimeZoneInitializer();
 
-        this.isisComponentProvider = isisComponentProvider;
+        this.componentProvider = componentProvider;
     }
 
     //endregion
@@ -146,31 +144,35 @@ public class IsisSystem implements ApplicationScopedComponent {
 
             // configuration
             // TODO: HACKY
-            final IsisConfigurationDefault configuration = (IsisConfigurationDefault) isisComponentProvider.getConfiguration();
+            final IsisConfigurationDefault configuration = componentProvider.getConfiguration();
 
             // services
-            ServicesInjectorDefault servicesInjector = isisComponentProvider.provideServiceInjector();
+            ServicesInjector servicesInjector = componentProvider.provideServiceInjector();
             servicesInjector.addFallbackIfRequired(FixtureScripts.class, new FixtureScriptsDefault());
             servicesInjector.addFallbackIfRequired(ConfigurationServiceInternal.class, configuration);
             servicesInjector.validateServices();
 
-            // authentication, authorization
-            final AuthenticationManager authenticationManager =
-                    isisComponentProvider.provideAuthenticationManager();
-            final AuthorizationManager authorizationManager =
-                    isisComponentProvider.provideAuthorizationManager();
+            // authentication
+            final AuthenticationManager authenticationManager = componentProvider.provideAuthenticationManager();
+            servicesInjector.addFallbackIfRequired(AuthenticationManager.class, authenticationManager);
+
+            // authorization
+            final AuthorizationManager authorizationManager = componentProvider.provideAuthorizationManager();
+            servicesInjector.addFallbackIfRequired(AuthorizationManager.class, authorizationManager);
 
             // specificationLoader
             final Collection<MetaModelRefiner> metaModelRefiners =
                     refiners(authenticationManager, authorizationManager,
                             new PersistenceSessionFactoryMetamodelRefiner());
             final SpecificationLoader specificationLoader =
-                    isisComponentProvider.provideSpecificationLoader(deploymentType, servicesInjector, metaModelRefiners);
+                    componentProvider.provideSpecificationLoader(deploymentType, servicesInjector, metaModelRefiners);
+            servicesInjector.addFallbackIfRequired(SpecificationLoader.class, specificationLoader);
 
             // persistenceSessionFactory
             final PersistenceSessionFactory persistenceSessionFactory =
-                    isisComponentProvider.providePersistenceSessionFactory(
+                    componentProvider.providePersistenceSessionFactory(
                             deploymentType, servicesInjector);
+            servicesInjector.addFallbackIfRequired(PersistenceSessionFactory.class, persistenceSessionFactory);
 
             // runtimeContext
             final RuntimeContextFromSession runtimeContext =
@@ -273,7 +275,7 @@ public class IsisSystem implements ApplicationScopedComponent {
 
     private void installFixturesIfRequired() throws IsisSystemException {
 
-        fixtureInstaller = isisComponentProvider.provideFixturesInstaller();
+        fixtureInstaller = componentProvider.provideFixturesInstaller();
 
         IsisContext.openSession(new InitialisationSession());
         fixtureInstaller.installFixtures();
@@ -326,7 +328,7 @@ public class IsisSystem implements ApplicationScopedComponent {
         return getServicesInjector().lookupService(serviceClass);
     }
 
-    private ServicesInjectorSpi getServicesInjector() {
+    private ServicesInjector getServicesInjector() {
         return getPersistenceSession().getServicesInjector();
     }
 
@@ -390,7 +392,7 @@ public class IsisSystem implements ApplicationScopedComponent {
      * effectively be immutable).
      */
     public IsisConfiguration getConfiguration() {
-        return isisComponentProvider.getConfiguration();
+        return componentProvider.getConfiguration();
     }
     //endregion
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
index 34b9848..cb16dec 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
@@ -21,17 +21,17 @@ package org.apache.isis.core.runtime.system.persistence;
 
 import java.lang.reflect.Modifier;
 
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
 
 public class ObjectFactory {
 
     private final PersistenceSession persistenceSession;
-    private final ServicesInjectorSpi servicesInjector;
+    private final ServicesInjector servicesInjector;
 
     public ObjectFactory(
             final PersistenceSession persistenceSession,
-            final ServicesInjectorSpi servicesInjector) {
+            final ServicesInjector servicesInjector) {
         this.persistenceSession = persistenceSession;
         this.servicesInjector = servicesInjector;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 428568d..8292615 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
@@ -93,15 +93,15 @@ import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
 import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerServiceAware;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
 import org.apache.isis.core.runtime.persistence.NotPersistableException;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
@@ -184,7 +184,7 @@ public class PersistenceSession implements
     private final SpecificationLoader specificationLoader;
     private final AuthenticationSession authenticationSession;
 
-    private final ServicesInjectorSpi servicesInjector;
+    private final ServicesInjector servicesInjector;
     /**
      * Used to create the {@link #persistenceManager} when {@link #open()}ed.
      */
@@ -216,7 +216,7 @@ public class PersistenceSession implements
      */
     public PersistenceSession(
             final IsisConfigurationDefault configuration,
-            final ServicesInjectorSpi servicesInjector,
+            final ServicesInjector servicesInjector,
             final SpecificationLoader specificationLoader,
             final AuthenticationSession authenticationSession,
             final PersistenceManagerFactory jdoPersistenceManagerFactory,
@@ -1247,9 +1247,9 @@ public class PersistenceSession implements
     }
 
     /**
-     * The configured {@link ServicesInjectorSpi}.
+     * The configured {@link ServicesInjector}.
      */
-    public ServicesInjectorSpi getServicesInjector() {
+    public ServicesInjector getServicesInjector() {
         return servicesInjector;
     }
 


[14/30] isis git commit: ISIS-1407: removed SpecificationLoaderAware.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
new file mode 100644
index 0000000..13fe785
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
@@ -0,0 +1,514 @@
+/**
+ *  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.services;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.ListMultimap;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
+import org.apache.isis.applib.services.publish.PublishingService;
+import org.apache.isis.core.commons.components.ApplicationScopedComponent;
+import org.apache.isis.core.commons.ensure.Assert;
+import org.apache.isis.core.commons.lang.ObjectExtensions;
+import org.apache.isis.core.commons.util.ToString;
+import org.apache.isis.core.metamodel.exceptions.MetaModelException;
+import org.apache.isis.core.metamodel.spec.InjectorMethodEvaluator;
+import org.apache.isis.core.metamodel.specloader.InjectorMethodEvaluatorDefault;
+import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
+
+/**
+ * The repository of services, also able to inject into any object.
+ *
+ * <p>
+ *    Implementation is (and must be) a thread-safe.
+ * </p>
+ *
+ */
+public class ServicesInjector implements ApplicationScopedComponent {
+
+    private static final Logger LOG = LoggerFactory.getLogger(ServicesInjector.class);
+
+    //region > constructor, fields
+    /**
+     * This is mutable internally, but only ever exposed (in {@link #getRegisteredServices()}) as immutable.
+     */
+    private final List<Object> services = Lists.newArrayList();
+
+    /**
+     * If no key, not yet searched for type; otherwise the corresponding value is a {@link List} of all
+     * services that are assignable to the type.  It's possible that this is an empty list.
+     */
+    private final Map<Class<?>, List<Object>> servicesAssignableToType = Maps.newHashMap();
+
+    private final Map<Class<?>, Object> serviceByConcreteType = Maps.newHashMap();
+
+    private final InjectorMethodEvaluator injectorMethodEvaluator;
+
+    public ServicesInjector(final List<Object> services) {
+        this(services, null);
+    }
+
+    /**
+     * For testing.
+     */
+    public ServicesInjector(final List<Object> services, final InjectorMethodEvaluator injectorMethodEvaluator) {
+        this.services.addAll(services);
+        this.injectorMethodEvaluator =
+                injectorMethodEvaluator != null
+                        ? injectorMethodEvaluator
+                        : new InjectorMethodEvaluatorDefault();
+
+        autowireServicesAndContainer();
+    }
+
+    //endregion
+
+    //region > replaceServices
+
+    /**
+     * Update an individual service.
+     *
+     * <p>
+     * There should already be a service {@link #getRegisteredServices() registered} of the specified type.
+     *
+     * @return <tt>true</tt> if a service of the specified type was found and updated, <tt>false</tt> otherwise.
+     * @param existingService
+     * @param replacementService
+     */
+    public <T> void replaceService(final T existingService, final T replacementService) {
+
+        if(!services.remove(existingService)) {
+            throw new IllegalArgumentException("Service to be replaced was not found (" + existingService + ")");
+        }
+
+        services.add(replacementService);
+
+        // invalidate
+        servicesAssignableToType.clear();
+        serviceByConcreteType.clear();
+
+        autowireServicesAndContainer();
+    }
+
+    public boolean isRegisteredService(final Class<?> cls) {
+        // lazily construct cache
+        if(serviceByConcreteType.isEmpty()) {
+            for (Object service : services) {
+                final Class<?> concreteType = service.getClass();
+                serviceByConcreteType.put(concreteType, service);
+            }
+        }
+        return serviceByConcreteType.containsKey(cls);
+    }
+
+    public <T> void addFallbackIfRequired(final Class<T> serviceClass, final T serviceInstance) {
+        if(!contains(services, serviceClass)) {
+            // add to beginning;
+            // (when first introduced, this feature has been used for the
+            // FixtureScriptsDefault so that appears it top of prototyping menu; not
+            // more flexible than this currently just because of YAGNI).
+            services.add(0, serviceInstance);
+        }
+    }
+
+    /**
+     * Validate domain service Ids are unique, and that the {@link PostConstruct} method, if present, must either
+     * take no arguments or take a {@link Map} object), and that the {@link PreDestroy} method, if present, must take
+     * no arguments.
+     *
+     * <p>
+     * TODO: there seems to be some duplication/overlap with {@link ServiceInitializer}.
+     */
+    public void validateServices() {
+        validate(getRegisteredServices());
+    }
+
+    private static void validate(List<Object> serviceList) {
+        for (Object service : serviceList) {
+            final Method[] methods = service.getClass().getMethods();
+            for (Method method : methods) {
+                validatePostConstructMethods(service, method);
+                validatePreDestroyMethods(service, method);
+            }
+        }
+        ListMultimap<String, Object> servicesById = ArrayListMultimap.create();
+        for (Object service : serviceList) {
+            String id = ServiceUtil.id(service);
+            servicesById.put(id, service);
+        }
+        for (Map.Entry<String, Collection<Object>> servicesForId : servicesById.asMap().entrySet()) {
+            String serviceId = servicesForId.getKey();
+            Collection<Object> services = servicesForId.getValue();
+            if(services.size() > 1) {
+                throw new IllegalStateException(
+                        String.format("Service ids must be unique; serviceId '%s' is declared by domain services %s",
+                                serviceId, classNamesFor(services)));
+            }
+        }
+    }
+
+    private static String classNamesFor(Collection<Object> services) {
+        StringBuilder buf = new StringBuilder();
+        for (Object service : services) {
+            if(buf.length() > 0) {
+                buf.append(", ");
+            }
+            buf.append(service.getClass().getName());
+        }
+        return buf.toString();
+    }
+
+    private static void validatePostConstructMethods(Object service, Method method) {
+        final PostConstruct postConstruct = method.getAnnotation(PostConstruct.class);
+        if(postConstruct == null) {
+            return;
+        }
+        final int numParams = method.getParameterTypes().length;
+        if(numParams == 0) {
+            return;
+        }
+        if(numParams == 1 && method.getParameterTypes()[0].isAssignableFrom(Map.class)) {
+            return;
+        }
+        throw new IllegalStateException("Domain service " + service.getClass().getName() + " has @PostConstruct method " + method.getName() + "; such methods must take either no argument or 1 argument of type Map<String,String>");
+    }
+
+    private static void validatePreDestroyMethods(Object service, Method method) {
+        final PreDestroy preDestroy = method.getAnnotation(PreDestroy.class);
+        if(preDestroy == null) {
+            return;
+        }
+        final int numParams = method.getParameterTypes().length;
+        if(numParams == 0) {
+            return;
+        }
+        throw new IllegalStateException("Domain service " + service.getClass().getName() + " has @PreDestroy method " + method.getName() + "; such methods must take no arguments");
+    }
+
+
+    static boolean contains(final List<Object> services, final Class<?> serviceClass) {
+        for (Object service : services) {
+            if(serviceClass.isAssignableFrom(service.getClass())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    /**
+     * All registered services, as an immutable {@link List}.
+     */
+    public List<Object> getRegisteredServices() {
+        return Collections.unmodifiableList(services);
+    }
+
+    private void addServices(final List<Object> services) {
+        for (final Object service : services) {
+            if (service instanceof List) {
+                final List<Object> serviceList = ObjectExtensions.asListT(service, Object.class);
+                addServices(serviceList);
+            } else {
+                addService(service);
+            }
+        }
+    }
+
+    private boolean addService(final Object service) {
+        return services.add(service);
+    }
+
+    //endregion
+
+    //region > injectServicesInto
+
+    /**
+     * Provided by the <tt>ServicesInjector</tt> when used by framework.
+     *
+     * <p>
+     * Called in multiple places from metamodel and facets.
+     */
+    public void injectServicesInto(final Object object) {
+        Assert.assertNotNull("no services", services);
+
+        injectServices(object, Collections.unmodifiableList(services));
+    }
+
+    /**
+     * As per {@link #injectServicesInto(Object)}, but for all objects in the
+     * list.
+     */
+    public void injectServicesInto(final List<Object> objects) {
+        for (final Object object : objects) {
+            injectServicesInto(object);
+        }
+    }
+
+    //endregion
+
+    //region > injectInto
+
+    /**
+     * That is, injecting this injector...
+     */
+    public void injectInto(final Object candidate) {
+        if (ServicesInjectorAware.class.isAssignableFrom(candidate.getClass())) {
+            final ServicesInjectorAware cast = ServicesInjectorAware.class.cast(candidate);
+            cast.setServicesInjector(this);
+        }
+    }
+
+    //endregion
+
+    //region > helpers
+
+    private void injectServices(final Object object, final List<Object> services) {
+
+        final Class<?> cls = object.getClass();
+
+        autowireViaFields(object, services, cls);
+        autowireViaPrefixedMethods(object, services, cls, "set");
+        autowireViaPrefixedMethods(object, services, cls, "inject");
+    }
+
+    private void autowireViaFields(final Object object, final List<Object> services, final Class<?> cls) {
+        final List<Field> fields = Arrays.asList(cls.getDeclaredFields());
+        final Iterable<Field> injectFields = Iterables.filter(fields, new Predicate<Field>() {
+            @Override
+            public boolean apply(final Field input) {
+                final Inject annotation = input.getAnnotation(javax.inject.Inject.class);
+                return annotation != null;
+            }
+        });
+
+        for (final Field field : injectFields) {
+            autowire(object, field, services);
+        }
+
+        // recurse up the object's class hierarchy
+        final Class<?> superclass = cls.getSuperclass();
+        if(superclass != null) {
+            autowireViaFields(object, services, superclass);
+        }
+    }
+
+    private void autowire(
+            final Object object,
+            final Field field,
+            final List<Object> services) {
+
+        final Class<?> type = field.getType();
+        // don't think that type can ever be null,
+        // but Javadoc for java.lang.reflect.Field doesn't say
+        if(type == null) {
+            return;
+        }
+
+        // inject into Collection<T> or List<T>
+        if(Collection.class.isAssignableFrom(type) || List.class.isAssignableFrom(type)) {
+            final Type genericType = field.getGenericType();
+            if(genericType instanceof ParameterizedType) {
+                final ParameterizedType listParameterizedType = (ParameterizedType) genericType;
+                final Class<?> listType = (Class<?>) listParameterizedType.getActualTypeArguments()[0];
+                final List<Object> listOfServices =
+                        Collections.unmodifiableList(
+                                Lists.newArrayList(
+                                        Iterables.filter(services, new Predicate<Object>() {
+                                            @Override
+                                            public boolean apply(final Object input) {
+                                                return input != null && listType.isAssignableFrom(input.getClass());
+                                            }
+                                        })));
+                invokeInjectorField(field, object, listOfServices);
+            }
+        }
+
+        for (final Object service : services) {
+            final Class<?> serviceClass = service.getClass();
+            if(type.isAssignableFrom(serviceClass)) {
+                invokeInjectorField(field, object, service);
+                return;
+            }
+        }
+    }
+
+    private void autowireViaPrefixedMethods(
+            final Object object,
+            final List<Object> services,
+            final Class<?> cls,
+            final String prefix) {
+        final List<Method> methods = Arrays.asList(cls.getMethods());
+        final Iterable<Method> prefixedMethods = Iterables.filter(methods, new Predicate<Method>(){
+            public boolean apply(final Method method) {
+                final String methodName = method.getName();
+                return methodName.startsWith(prefix);
+            }
+        });
+
+        for (final Method prefixedMethod : prefixedMethods) {
+            autowire(object, prefixedMethod, services);
+        }
+    }
+
+    private void autowire(
+            final Object object,
+            final Method prefixedMethod,
+            final List<Object> services) {
+        for (final Object service : services) {
+            final Class<?> serviceClass = service.getClass();
+            final boolean isInjectorMethod = injectorMethodEvaluator.isInjectorMethodFor(prefixedMethod, serviceClass);
+            if(isInjectorMethod) {
+                prefixedMethod.setAccessible(true);
+                invokeInjectorMethod(prefixedMethod, object, service);
+                return;
+            }
+        }
+    }
+
+    private static void invokeMethod(final Method method, final Object target, final Object[] parameters) {
+        try {
+            method.invoke(target, parameters);
+        } catch (final SecurityException | IllegalAccessException e) {
+            throw new MetaModelException(String.format("Cannot access the %s method in %s", method.getName(), target.getClass().getName()));
+        } catch (final IllegalArgumentException e1) {
+            throw new MetaModelException(e1);
+        } catch (final InvocationTargetException e) {
+            final Throwable targetException = e.getTargetException();
+            if (targetException instanceof RuntimeException) {
+                throw (RuntimeException) targetException;
+            } else {
+                throw new MetaModelException(targetException);
+            }
+        }
+    }
+
+    private static void invokeInjectorField(final Field field, final Object target, final Object parameter) {
+        try {
+            field.setAccessible(true);
+            field.set(target, parameter);
+        } catch (final IllegalArgumentException e) {
+            throw new MetaModelException(e);
+        } catch (final IllegalAccessException e) {
+            throw new MetaModelException(String.format("Cannot access the %s field in %s", field.getName(), target.getClass().getName()));
+        }
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("injected " + parameter + " into " + new ToString(target));
+        }
+    }
+
+    private static void invokeInjectorMethod(final Method method, final Object target, final Object parameter) {
+        final Object[] parameters = new Object[] { parameter };
+        invokeMethod(method, target, parameters);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("injected " + parameter + " into " + new ToString(target));
+        }
+    }
+
+    private void autowireServicesAndContainer() {
+        injectServicesInto(this.services);
+    }
+
+
+    //endregion
+
+    //region > lookupService, lookupServices
+
+    /**
+     * Returns the first registered domain service implementing the requested type.
+     *
+     * <p>
+     * Typically there will only ever be one domain service implementing a given type,
+     * (eg {@link PublishingService}), but for some services there can be more than one
+     * (eg {@link ExceptionRecognizer}).
+     *
+     * @see #lookupServices(Class)
+     */
+    @Programmatic
+    public <T> T lookupService(final Class<T> serviceClass) {
+        final List<T> services = lookupServices(serviceClass);
+        return !services.isEmpty() ? services.get(0) : null;
+    }
+
+    /**
+     * Returns all domain services implementing the requested type, in the order
+     * that they were registered in <tt>isis.properties</tt>.
+     *
+     * <p>
+     * Typically there will only ever be one domain service implementing a given type,
+     * (eg {@link PublishingService}), but for some services there can be more than one
+     * (eg {@link ExceptionRecognizer}).
+     *
+     * @see #lookupService(Class)
+     */
+    @SuppressWarnings("unchecked")
+    @Programmatic
+    public <T> List<T> lookupServices(final Class<T> serviceClass) {
+        locateAndCache(serviceClass);
+        return Collections.unmodifiableList((List<T>) servicesAssignableToType.get(serviceClass));
+    };
+
+    private void locateAndCache(final Class<?> serviceClass) {
+        if(servicesAssignableToType.containsKey(serviceClass)) {
+            return;
+        }
+
+        final List<Object> matchingServices = Lists.newArrayList();
+        addAssignableTo(serviceClass, services, matchingServices);
+
+        servicesAssignableToType.put(serviceClass, matchingServices);
+    }
+
+    private static void addAssignableTo(final Class<?> type, final List<Object> candidates, final List<Object> filteredServicesAndContainer) {
+        final Iterable<Object> filteredServices = Iterables.filter(candidates, ofType(type));
+        filteredServicesAndContainer.addAll(Lists.newArrayList(filteredServices));
+    }
+
+    private static final Predicate<Object> ofType(final Class<?> cls) {
+        return new Predicate<Object>() {
+            @Override
+            public boolean apply(final Object input) {
+                return cls.isAssignableFrom(input.getClass());
+            }
+        };
+    }
+
+    //endregion
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorAware.java
new file mode 100644
index 0000000..b7908f7
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorAware.java
@@ -0,0 +1,29 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.core.metamodel.services;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+public interface ServicesInjectorAware {
+
+    @Programmatic
+    void setServicesInjector(ServicesInjector servicesInjector);
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java
deleted file mode 100644
index 9eb9d36..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java
+++ /dev/null
@@ -1,467 +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.services;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.inject.Inject;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.ListMultimap;
-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.ensure.Assert;
-import org.apache.isis.core.commons.lang.ObjectExtensions;
-import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.exceptions.MetaModelException;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
-import org.apache.isis.core.metamodel.spec.InjectorMethodEvaluator;
-import org.apache.isis.core.metamodel.specloader.InjectorMethodEvaluatorDefault;
-import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
-
-/**
- * Must be a thread-safe.
- */
-public class ServicesInjectorDefault implements ServicesInjectorSpi {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ServicesInjectorDefault.class);
-
-    /**
-     * This is mutable internally, but only ever exposed (in {@link #getRegisteredServices()}) as immutable.
-     */
-    private final List<Object> services = Lists.newArrayList();
-
-    /**
-     * If no key, not yet searched for type; otherwise the corresponding value is a {@link List} of all
-     * services that are assignable to the type.  It's possible that this is an empty list.
-     */
-    private final Map<Class<?>, List<Object>> servicesAssignableToType = Maps.newHashMap();
-
-    private final Map<Class<?>, Object> serviceByConcreteType = Maps.newHashMap();
-
-    private final InjectorMethodEvaluator injectorMethodEvaluator;
-
-    public ServicesInjectorDefault(final List<Object> services) {
-        this(services, null);
-    }
-
-    /**
-     * For testing.  
-     */
-    public ServicesInjectorDefault(final List<Object> services, final InjectorMethodEvaluator injectorMethodEvaluator) {
-        this.services.addAll(services);
-        this.injectorMethodEvaluator = injectorMethodEvaluator != null ? injectorMethodEvaluator : new InjectorMethodEvaluatorDefault();
-
-        autowireServicesAndContainer();
-    }
-
-    //region > replaceServices
-
-    @Override
-    public <T> void replaceService(final T existingService, final T replacementService) {
-
-        if(!services.remove(existingService)) {
-            throw new IllegalArgumentException("Service to be replaced was not found (" + existingService + ")");
-        }
-
-        services.add(replacementService);
-
-        // invalidate
-        servicesAssignableToType.clear();
-        serviceByConcreteType.clear();
-
-        autowireServicesAndContainer();
-    }
-
-    @Override
-    public boolean isRegisteredService(final Class<?> cls) {
-        // lazily construct cache
-        if(serviceByConcreteType.isEmpty()) {
-            for (Object service : services) {
-                final Class<?> concreteType = service.getClass();
-                serviceByConcreteType.put(concreteType, service);
-            }
-        }
-        return serviceByConcreteType.containsKey(cls);
-    }
-
-    @Override
-    public <T> void addFallbackIfRequired(final Class<T> serviceClass, final T serviceInstance) {
-        if(!contains(services, serviceClass)) {
-            // add to beginning;
-            // (when first introduced, this feature has been used for the
-            // FixtureScriptsDefault so that appears it top of prototyping menu; not
-            // more flexible than this currently just because of YAGNI).
-            services.add(0, serviceInstance);
-        }
-    }
-
-    /**
-     * Validate domain service Ids are unique, and that the {@link PostConstruct} method, if present, must either
-     * take no arguments or take a {@link Map} object), and that the {@link PreDestroy} method, if present, must take
-     * no arguments.
-     *
-     * <p>
-     * TODO: there seems to be some duplication/overlap with {@link ServiceInitializer}.
-     */
-    @Override
-    public void validateServices() {
-        validate(getRegisteredServices());
-    }
-
-    private static void validate(List<Object> serviceList) {
-        for (Object service : serviceList) {
-            final Method[] methods = service.getClass().getMethods();
-            for (Method method : methods) {
-                validatePostConstructMethods(service, method);
-                validatePreDestroyMethods(service, method);
-            }
-        }
-        ListMultimap<String, Object> servicesById = ArrayListMultimap.create();
-        for (Object service : serviceList) {
-            String id = ServiceUtil.id(service);
-            servicesById.put(id, service);
-        }
-        for (Map.Entry<String, Collection<Object>> servicesForId : servicesById.asMap().entrySet()) {
-            String serviceId = servicesForId.getKey();
-            Collection<Object> services = servicesForId.getValue();
-            if(services.size() > 1) {
-                throw new IllegalStateException(
-                        String.format("Service ids must be unique; serviceId '%s' is declared by domain services %s",
-                                serviceId, classNamesFor(services)));
-            }
-        }
-    }
-
-    private static String classNamesFor(Collection<Object> services) {
-        StringBuilder buf = new StringBuilder();
-        for (Object service : services) {
-            if(buf.length() > 0) {
-                buf.append(", ");
-            }
-            buf.append(service.getClass().getName());
-        }
-        return buf.toString();
-    }
-
-    private static void validatePostConstructMethods(Object service, Method method) {
-        final PostConstruct postConstruct = method.getAnnotation(PostConstruct.class);
-        if(postConstruct == null) {
-            return;
-        }
-        final int numParams = method.getParameterTypes().length;
-        if(numParams == 0) {
-            return;
-        }
-        if(numParams == 1 && method.getParameterTypes()[0].isAssignableFrom(Map.class)) {
-            return;
-        }
-        throw new IllegalStateException("Domain service " + service.getClass().getName() + " has @PostConstruct method " + method.getName() + "; such methods must take either no argument or 1 argument of type Map<String,String>");
-    }
-
-    private static void validatePreDestroyMethods(Object service, Method method) {
-        final PreDestroy preDestroy = method.getAnnotation(PreDestroy.class);
-        if(preDestroy == null) {
-            return;
-        }
-        final int numParams = method.getParameterTypes().length;
-        if(numParams == 0) {
-            return;
-        }
-        throw new IllegalStateException("Domain service " + service.getClass().getName() + " has @PreDestroy method " + method.getName() + "; such methods must take no arguments");
-    }
-
-
-    static boolean contains(final List<Object> services, final Class<?> serviceClass) {
-        for (Object service : services) {
-            if(serviceClass.isAssignableFrom(service.getClass())) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-
-    @Override
-    public List<Object> getRegisteredServices() {
-        return Collections.unmodifiableList(services);
-    }
-
-    private void addServices(final List<Object> services) {
-        for (final Object service : services) {
-            if (service instanceof List) {
-                final List<Object> serviceList = ObjectExtensions.asListT(service, Object.class);
-                addServices(serviceList);
-            } else {
-                addService(service);
-            }
-        }
-    }
-
-    private boolean addService(final Object service) {
-        return services.add(service);
-    }
-
-    //endregion
-
-    //region > injectServicesInto
-
-    @Override
-    public void injectServicesInto(final Object object) {
-        Assert.assertNotNull("no services", services);
-
-        injectServices(object, Collections.unmodifiableList(services));
-    }
-
-    @Override
-    public void injectServicesInto(final List<Object> objects) {
-        for (final Object object : objects) {
-            injectServicesInto(object);
-        }
-    }
-
-    //endregion
-
-    //region > injectInto
-
-    /**
-     * That is, injecting this injector...
-     */
-    @Override
-    public void injectInto(final Object candidate) {
-        if (ServicesInjectorAware.class.isAssignableFrom(candidate.getClass())) {
-            final ServicesInjectorAware cast = ServicesInjectorAware.class.cast(candidate);
-            cast.setServicesInjector(this);
-        }
-    }
-
-    //endregion
-
-    //region > helpers
-
-    private void injectServices(final Object object, final List<Object> services) {
-
-        final Class<?> cls = object.getClass();
-
-        autowireViaFields(object, services, cls);
-        autowireViaPrefixedMethods(object, services, cls, "set");
-        autowireViaPrefixedMethods(object, services, cls, "inject");
-    }
-
-    private void autowireViaFields(final Object object, final List<Object> services, final Class<?> cls) {
-        final List<Field> fields = Arrays.asList(cls.getDeclaredFields());
-        final Iterable<Field> injectFields = Iterables.filter(fields, new Predicate<Field>() {
-            @Override
-            public boolean apply(final Field input) {
-                final Inject annotation = input.getAnnotation(javax.inject.Inject.class);
-                return annotation != null;
-            }
-        });
-
-        for (final Field field : injectFields) {
-            autowire(object, field, services);
-        }
-        
-        // recurse up the object's class hierarchy
-        final Class<?> superclass = cls.getSuperclass();
-        if(superclass != null) {
-            autowireViaFields(object, services, superclass);
-        }
-    }
-
-    private void autowire(
-            final Object object,
-            final Field field,
-            final List<Object> services) {
-
-        final Class<?> type = field.getType();
-        // don't think that type can ever be null,
-        // but Javadoc for java.lang.reflect.Field doesn't say
-        if(type == null) {
-            return;
-        }
-
-        // inject into Collection<T> or List<T>
-        if(Collection.class.isAssignableFrom(type) || List.class.isAssignableFrom(type)) {
-            final Type genericType = field.getGenericType();
-            if(genericType instanceof ParameterizedType) {
-                final ParameterizedType listParameterizedType = (ParameterizedType) genericType;
-                final Class<?> listType = (Class<?>) listParameterizedType.getActualTypeArguments()[0];
-                final List<Object> listOfServices =
-                        Collections.unmodifiableList(
-                            Lists.newArrayList(
-                                Iterables.filter(services, new Predicate<Object>() {
-                                    @Override
-                                    public boolean apply(final Object input) {
-                                        return input != null && listType.isAssignableFrom(input.getClass());
-                                    }
-                                })));
-                invokeInjectorField(field, object, listOfServices);
-            }
-        }
-
-        for (final Object service : services) {
-            final Class<?> serviceClass = service.getClass();
-            if(type.isAssignableFrom(serviceClass)) {
-                invokeInjectorField(field, object, service);
-                return;
-            }
-        }
-    }
-
-    private void autowireViaPrefixedMethods(
-            final Object object,
-            final List<Object> services,
-            final Class<?> cls,
-            final String prefix) {
-        final List<Method> methods = Arrays.asList(cls.getMethods());
-        final Iterable<Method> prefixedMethods = Iterables.filter(methods, new Predicate<Method>(){
-            public boolean apply(final Method method) {
-                final String methodName = method.getName();
-                return methodName.startsWith(prefix);
-            }
-        });
-        
-        for (final Method prefixedMethod : prefixedMethods) {
-            autowire(object, prefixedMethod, services);
-        }
-    }
-
-    private void autowire(
-            final Object object,
-            final Method prefixedMethod,
-            final List<Object> services) {
-        for (final Object service : services) {
-            final Class<?> serviceClass = service.getClass();
-            final boolean isInjectorMethod = injectorMethodEvaluator.isInjectorMethodFor(prefixedMethod, serviceClass);
-            if(isInjectorMethod) {
-                prefixedMethod.setAccessible(true);
-                invokeInjectorMethod(prefixedMethod, object, service);
-                return;
-            }
-        }
-    }
-
-    private static void invokeMethod(final Method method, final Object target, final Object[] parameters) {
-        try {
-            method.invoke(target, parameters);
-        } catch (final SecurityException | IllegalAccessException e) {
-            throw new MetaModelException(String.format("Cannot access the %s method in %s", method.getName(), target.getClass().getName()));
-        } catch (final IllegalArgumentException e1) {
-            throw new MetaModelException(e1);
-        } catch (final InvocationTargetException e) {
-            final Throwable targetException = e.getTargetException();
-            if (targetException instanceof RuntimeException) {
-                throw (RuntimeException) targetException;
-            } else {
-                throw new MetaModelException(targetException);
-            }
-        }
-    }
-
-    private static void invokeInjectorField(final Field field, final Object target, final Object parameter) {
-        try {
-            field.setAccessible(true);
-            field.set(target, parameter);
-        } catch (final IllegalArgumentException e) {
-            throw new MetaModelException(e);
-        } catch (final IllegalAccessException e) {
-            throw new MetaModelException(String.format("Cannot access the %s field in %s", field.getName(), target.getClass().getName()));
-        }
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("injected " + parameter + " into " + new ToString(target));
-        }
-    }
-
-    private static void invokeInjectorMethod(final Method method, final Object target, final Object parameter) {
-        final Object[] parameters = new Object[] { parameter };
-        invokeMethod(method, target, parameters);
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("injected " + parameter + " into " + new ToString(target));
-        }
-    }
-    
-    private void autowireServicesAndContainer() {
-        injectServicesInto(this.services);
-    }
-
-
-    //endregion
-
-    //region > lookupService, lookupServices
-
-    @Override
-    public <T> T lookupService(final Class<T> serviceClass) {
-        final List<T> services = lookupServices(serviceClass);
-        return !services.isEmpty() ? services.get(0) : null;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public <T> List<T> lookupServices(final Class<T> serviceClass) {
-        locateAndCache(serviceClass);
-        return Collections.unmodifiableList((List<T>) servicesAssignableToType.get(serviceClass));
-    };
-
-    private void locateAndCache(final Class<?> serviceClass) {
-        if(servicesAssignableToType.containsKey(serviceClass)) {
-           return; 
-        }
-
-        final List<Object> matchingServices = Lists.newArrayList();
-        addAssignableTo(serviceClass, services, matchingServices);
-
-        servicesAssignableToType.put(serviceClass, matchingServices);
-    }
-
-    private static void addAssignableTo(final Class<?> type, final List<Object> candidates, final List<Object> filteredServicesAndContainer) {
-        final Iterable<Object> filteredServices = Iterables.filter(candidates, ofType(type));
-        filteredServicesAndContainer.addAll(Lists.newArrayList(filteredServices));
-    }
-
-    private static final Predicate<Object> ofType(final Class<?> cls) {
-        return new Predicate<Object>() {
-            @Override
-            public boolean apply(final Object input) {
-                return cls.isAssignableFrom(input.getClass());
-            }
-        };
-    }
-
-    //endregion
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorSpi.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorSpi.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorSpi.java
deleted file mode 100644
index ef8f7e6..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorSpi.java
+++ /dev/null
@@ -1,50 +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.services;
-
-import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-
-/**
- * The repository of services, also able to inject into any object.
- * 
- * <p>
- * Can be considered a mutable SPI to the {@link org.apache.isis.core.metamodel.runtimecontext.ServicesInjector} immutable API.
- */
-public interface ServicesInjectorSpi extends ApplicationScopedComponent, ServicesInjector {
-
-    /**
-     * Update an individual service.
-     *
-     * <p>
-     * There should already be a service {@link #getRegisteredServices() registered} of the specified type.
-     *
-     * @return <tt>true</tt> if a service of the specified type was found and updated, <tt>false</tt> otherwise.
-     * @param originalService
-     * @param replacementService
-     */
-    <T> void replaceService(T originalService, T replacementService);
-
-    boolean isRegisteredService(Class<?> cls);
-
-    <T> void addFallbackIfRequired(Class<T> serviceClass, T serviceInstance);
-
-    void validateServices();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index fd8f0c9..077a518 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -42,6 +42,7 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
 import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
+import org.apache.isis.applib.services.registry.ServiceRegistry2;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleIntValueFacet;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
@@ -50,23 +51,19 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemove
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.specimpl.ContributeeMember;
 
 @DomainService(
         nature = NatureOfService.DOMAIN,
         repositoryFor = ApplicationFeature.class
 )
-public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRepository, SpecificationLoaderAware,
-        ServicesInjectorAware {
+public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRepository {
 
     //region > caches
     SortedMap<ApplicationFeatureId, ApplicationFeature> packageFeatures = Maps.newTreeMap();
@@ -86,7 +83,7 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
     }
 
     private Collection<ObjectSpecification> primeMetaModel() {
-        final List<Object> services = servicesInjector.getRegisteredServices();
+        final List<Object> services = serviceRegistry.getRegisteredServices();
         for (final Object service : services) {
             specificationLoader.loadSpecification(service.getClass());
         }
@@ -321,7 +318,7 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
      * </p>
      */
     private boolean isSuperClassOfService(final ObjectSpecification spec) {
-        final List<Object> registeredServices = servicesInjector.getRegisteredServices();
+        final List<Object> registeredServices = serviceRegistry.getRegisteredServices();
 
         final Class<?> specClass = spec.getCorrespondingClass();
 
@@ -512,23 +509,15 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
     //endregion
 
     //region  > services (injected)
-    @Inject
-    DomainObjectContainer container;
-
-    private SpecificationLoader specificationLoader;
 
-    @Programmatic
-    @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLoader) {
-        this.specificationLoader = specificationLoader;
-    }
+    @Inject
+    ServiceRegistry2 serviceRegistry;
 
-    private ServicesInjector servicesInjector;
+    @Inject
+    DomainObjectContainer container;
 
-    @Override
-    public void setServicesInjector(final ServicesInjector servicesInjector) {
-        this.servicesInjector = servicesInjector;
-    }
+    @Inject
+    SpecificationLoader specificationLoader;
 
     @Inject
     ApplicationFeatureFactory applicationFeatureFactory;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 aee46d9..adb18a1 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
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
+import javax.inject.Inject;
 
 import com.google.common.base.Predicate;
 
@@ -65,13 +66,10 @@ import org.apache.isis.core.metamodel.services.container.query.QueryFindByPatter
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 
 @DomainService(nature = NatureOfService.DOMAIN)
 public class DomainObjectContainerDefault
-        implements DomainObjectContainer,
-        PersistenceSessionServiceAware, SpecificationLoaderAware,
-        AdapterManagerAware, ExceptionRecognizer {
+        implements DomainObjectContainer, PersistenceSessionServiceAware, AdapterManagerAware, ExceptionRecognizer {
 
 
     //region > titleOf
@@ -109,7 +107,7 @@ public class DomainObjectContainerDefault
     @SuppressWarnings("unchecked")
     @Override
     public <T> T newViewModelInstance(Class<T> ofClass, String memento) {
-        final ObjectSpecification spec = getSpecificationLoader().loadSpecification(ofClass);
+        final ObjectSpecification spec = specificationLoader.loadSpecification(ofClass);
         if (!spec.containsFacet(ViewModelFacet.class)) {
             throw new IsisException("Type must be a ViewModel: " + ofClass);
         }
@@ -652,20 +650,9 @@ public class DomainObjectContainerDefault
     //region > framework dependencies
 
     private PersistenceSessionService persistenceSessionService;
-    private SpecificationLoader specificationLoader;
     private AdapterManager adapterManager;
 
 
-    protected SpecificationLoader getSpecificationLoader() {
-        return specificationLoader;
-    }
-
-    @Programmatic
-    @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLoader) {
-        this.specificationLoader = specificationLoader;
-    }
-
 
     protected AdapterManager getAdapterManager() {
         return adapterManager;
@@ -693,31 +680,34 @@ public class DomainObjectContainerDefault
 
     //region > service dependencies
 
-    @javax.inject.Inject
+    @Inject
+    SpecificationLoader specificationLoader;
+
+    @Inject
     org.apache.isis.applib.services.config.ConfigurationService configurationService;
 
-    @javax.inject.Inject
+    @Inject
     FactoryService factoryService;
 
-    @javax.inject.Inject
+    @Inject
     MessageService messageService;
 
-    @javax.inject.Inject
+    @Inject
     RepositoryService repositoryService;
 
-    @javax.inject.Inject
+    @Inject
     ServiceRegistry serviceRegistry;
 
-    @javax.inject.Inject
+    @Inject
     TransactionService transactionService;
 
-    @javax.inject.Inject
+    @Inject
     TitleService titleService;
 
-    @javax.inject.Inject
+    @Inject
     UserService userService;
 
-    @javax.inject.Inject
+    @Inject
     WrapperFactory wrapperFactory;
 
     //endregion

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
index ebdda4f..a72d43e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
@@ -36,21 +36,18 @@ import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
 )
-public class FactoryServiceDefault
-        implements FactoryService,
-            PersistenceSessionServiceAware, SpecificationLoaderAware {
+public class FactoryServiceDefault implements FactoryService, PersistenceSessionServiceAware {
 
 
     @Programmatic
     @Override
     @SuppressWarnings("unchecked")
     public <T> T instantiate(final Class<T> domainClass) {
-        final ObjectSpecification spec = specificationLookup.loadSpecification(domainClass);
+        final ObjectSpecification spec = specificationLoader.loadSpecification(domainClass);
         final ObjectAdapter adapter = doCreateTransientInstance(spec);
         return (T) adapter.getObject();
     }
@@ -67,7 +64,7 @@ public class FactoryServiceDefault
     @Programmatic
     @Override
     public <T> T mixin(final Class<T> mixinClass, final Object mixedIn) {
-        final ObjectSpecification objectSpec = specificationLookup.loadSpecification(mixinClass);
+        final ObjectSpecification objectSpec = specificationLoader.loadSpecification(mixinClass);
         final MixinFacet mixinFacet = objectSpec.getFacet(MixinFacet.class);
         if(mixinFacet == null) {
             throw new NonRecoverableException("Class '" + mixinClass.getName() + " is not a mixin");
@@ -94,6 +91,9 @@ public class FactoryServiceDefault
     }
 
     @Inject
+    SpecificationLoader specificationLoader;
+
+    @Inject
     ServiceRegistry serviceRegistry;
 
     private PersistenceSessionService persistenceSessionService;
@@ -103,9 +103,5 @@ public class FactoryServiceDefault
         this.persistenceSessionService = persistenceSessionService;
     }
 
-    private SpecificationLoader specificationLookup;
-    @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLookup) {
-        this.specificationLookup = specificationLookup;
-    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
index 7904ea9..8ffb99a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
@@ -104,17 +104,15 @@ import org.apache.isis.core.metamodel.facets.properties.propertylayout.NamedFace
 import org.apache.isis.core.metamodel.facets.properties.propertylayout.RenderedAdjustedFacetForPropertyXml;
 import org.apache.isis.core.metamodel.facets.properties.propertylayout.TypicalLengthFacetForPropertyXml;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
-public abstract class GridSystemServiceAbstract<G extends Grid>
-        implements GridSystemService<G>, SpecificationLoaderAware {
+public abstract class GridSystemServiceAbstract<G extends Grid> implements GridSystemService<G> {
 
     private static final Logger LOG = LoggerFactory.getLogger(GridSystemServiceAbstract.class);
 
@@ -203,7 +201,7 @@ public abstract class GridSystemServiceAbstract<G extends Grid>
             final Class<?> domainClass) {
 
 
-        final ObjectSpecification objectSpec = specificationLookup.loadSpecification(domainClass);
+        final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainClass);
 
         final Map<String, OneToOneAssociation> oneToOneAssociationById =
                 ObjectMember.Util.mapById(getOneToOneAssociations(objectSpec));
@@ -398,7 +396,7 @@ public abstract class GridSystemServiceAbstract<G extends Grid>
     public void complete(final G grid, final Class<?> domainClass) {
         normalize(grid, domainClass);
 
-        final ObjectSpecification objectSpec = specificationLookup.loadSpecification(domainClass);
+        final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainClass);
 
         grid.visit(new Grid.VisitorAdapter() {
 
@@ -680,11 +678,8 @@ public abstract class GridSystemServiceAbstract<G extends Grid>
 
     // //////////////////////////////////////
 
-    protected SpecificationLoader specificationLookup;
-
-    public void setSpecificationLoader(final SpecificationLoader specificationLookup) {
-        this.specificationLookup = specificationLookup;
-    }
+    @Inject
+    protected SpecificationLoader specificationLoader;
 
     @Inject
     protected TranslationService translationService;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
index 1d51fff..133cad6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
@@ -85,7 +85,7 @@ public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
     public Grid defaultGrid(final Class<?> domainClass) {
         final BS3Grid bs3Grid = new BS3Grid();
 
-        final ObjectSpecification objectSpec = specificationLookup.loadSpecification(domainClass);
+        final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainClass);
         bs3Grid.setDomainClass(domainClass);
 
         final BS3Row headerRow = new BS3Row();
@@ -167,7 +167,7 @@ public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
             final Class<?> domainClass) {
 
 
-        final ObjectSpecification objectSpec = specificationLookup.loadSpecification(domainClass);
+        final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainClass);
 
         final Map<String, OneToOneAssociation> oneToOneAssociationById =
                 ObjectMember.Util.mapById(getOneToOneAssociations(objectSpec));

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
index 89dd2c9..c7ba107 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
@@ -46,13 +46,12 @@ import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
 )
-public class LayoutServiceDefault implements LayoutService, SpecificationLoaderAware {
+public class LayoutServiceDefault implements LayoutService {
 
     private static final Logger LOG = LoggerFactory.getLogger(LayoutServiceDefault.class);
 
@@ -69,7 +68,7 @@ public class LayoutServiceDefault implements LayoutService, SpecificationLoaderA
     protected Grid toGrid(final Class<?> domainClass, final Style style) {
 
         if (style == Style.CURRENT) {
-            final ObjectSpecification objectSpec = specificationLookup.loadSpecification(domainClass);
+            final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainClass);
             final GridFacet facet = objectSpec.getFacet(GridFacet.class);
             return facet != null? facet.getGrid(): null;
         }
@@ -95,7 +94,7 @@ public class LayoutServiceDefault implements LayoutService, SpecificationLoaderA
 
     @Programmatic
     public byte[] toZip(final Style style) {
-        final Collection<ObjectSpecification> allSpecs = specificationLookup.allSpecifications();
+        final Collection<ObjectSpecification> allSpecs = specificationLoader.allSpecifications();
         final Collection<ObjectSpecification> domainObjectSpecs = Collections2
                 .filter(allSpecs, new Predicate<ObjectSpecification>(){
                     @Override
@@ -138,18 +137,10 @@ public class LayoutServiceDefault implements LayoutService, SpecificationLoaderA
     }
 
 
-    ////////////////////////////////////////////////////////
 
 
-    //region > injected dependencies
-
-    private SpecificationLoader specificationLookup;
-
-    @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLookup) {
-        this.specificationLookup = specificationLookup;
-    }
-
+    @Inject
+    SpecificationLoader specificationLoader;
 
     @Inject
     JaxbService jaxbService;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index 060fd07..6c1a23e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -40,18 +40,17 @@ import org.apache.isis.applib.services.metamodel.MetaModelService2;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
 )
-public class MetaModelServiceDefault implements MetaModelService2, SpecificationLoaderAware {
+public class MetaModelServiceDefault implements MetaModelService2 {
 
     @SuppressWarnings("unused")
     private final static Logger LOG = LoggerFactory.getLogger(MetaModelServiceDefault.class);
@@ -198,14 +197,11 @@ public class MetaModelServiceDefault implements MetaModelService2, Specification
         return sortOf(domainType);
     }
 
-    // //////////////////////////////////////
 
-    private SpecificationLoader specificationLookup;
 
-    @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLookup) {
-        this.specificationLookup = specificationLookup;
-    }
+
+    @Inject
+    SpecificationLoader specificationLookup;
 
     @Inject
     GridService gridService;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
index 2f5dc95..50511f8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
@@ -19,19 +19,20 @@
 
 package org.apache.isis.core.metamodel.services.registry;
 
+import java.util.List;
+
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.applib.services.registry.ServiceRegistry2;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjectorAware;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
 )
-public class ServiceRegistryDefault
-        implements ServiceRegistry, ServicesInjectorAware {
+public class ServiceRegistryDefault implements ServiceRegistry2, ServicesInjectorAware {
 
 
     @Programmatic
@@ -53,6 +54,11 @@ public class ServiceRegistryDefault
         return servicesInjector.lookupServices(service);
     }
 
+    @Programmatic
+    @Override
+    public List<Object> getRegisteredServices() {
+        return servicesInjector.getRegisteredServices();
+    }
 
     private Object unwrapped(Object domainObject) {
         return wrapperFactory != null ? wrapperFactory.unwrap(domainObject) : domainObject;
@@ -66,7 +72,7 @@ public class ServiceRegistryDefault
     private ServicesInjector servicesInjector;
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
-
         this.servicesInjector = servicesInjector;
     }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
index 15dc64b..2bde668 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.services.swagger;
 import java.util.Map;
 
 import javax.annotation.PostConstruct;
+import javax.inject.Inject;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,12 +32,11 @@ import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.swagger.SwaggerService;
 import org.apache.isis.core.metamodel.services.swagger.internal.SwaggerSpecGenerator;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
 )
-public class SwaggerServiceDefault implements SwaggerService, SpecificationLoaderAware {
+public class SwaggerServiceDefault implements SwaggerService {
 
     @SuppressWarnings("unused")
     private final static Logger LOG = LoggerFactory.getLogger(SwaggerServiceDefault.class);
@@ -70,14 +70,8 @@ public class SwaggerServiceDefault implements SwaggerService, SpecificationLoade
         return swaggerSpec;
     }
 
-    //region > injected dependencies
-    private SpecificationLoader specificationLoader;
 
-    @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLookup) {
-        this.specificationLoader = specificationLookup;
-    }
-
-    //endregion
+    @Inject
+    SpecificationLoader specificationLoader;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 40275f3..bc2211f 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
@@ -17,7 +17,7 @@
 package org.apache.isis.core.metamodel.spec;
 
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 47d4223..178cf50 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,7 +17,7 @@
 package org.apache.isis.core.metamodel.spec.feature;
 
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ObjectMemberDependencies {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index f16375a..a92cf0a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -32,9 +32,9 @@ import org.slf4j.LoggerFactory;
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.lang.ClassUtil;
@@ -46,13 +46,11 @@ import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFac
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-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.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjectorAware;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -89,6 +87,7 @@ import static org.hamcrest.Matchers.notNullValue;
  * conjunction with some <tt>PersistenceMechanism</tt>s that do class
  * enhancement.
  * </ul>
+ * </p>
  *
  * <p>
  * In addition, the {@link RuntimeContext} can optionally be injected, but will
@@ -101,7 +100,14 @@ import static org.hamcrest.Matchers.notNullValue;
  * framework (that is, when there <i>is</i> a runtime), then the framework
  * injects an implementation of {@link RuntimeContext} that acts like a bridge
  * to its <tt>IsisContext</tt>.
- */
+ * </p>
+ *
+ * <p>
+ * Implementing class is added to {@link ServicesInjector} as an (internal) domain service; all public methods
+ * must be annotated using {@link Programmatic}.
+ * </p>
+ *
+*/
 public class SpecificationLoader implements ApplicationScopedComponent {
 
     private final static Logger LOG = LoggerFactory.getLogger(SpecificationLoader.class);
@@ -113,7 +119,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     private final ProgrammingModel programmingModel;
     private final FacetProcessor facetProcessor;
 
-    private final ServicesInjectorSpi servicesInjector;
+    private final ServicesInjector servicesInjector;
 
     private final MetaModelValidator metaModelValidator;
     private final SpecificationCacheDefault cache = new SpecificationCacheDefault();
@@ -125,7 +131,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
             final ProgrammingModel programmingModel,
             final MetaModelValidator metaModelValidator,
             final List<LayoutMetadataReader> layoutMetadataReaders,
-            final ServicesInjectorSpi servicesInjector) {
+            final ServicesInjector servicesInjector) {
 
         ensureThatArg(deploymentCategory, is(notNullValue()));
         ensureThatArg(configuration, is(notNullValue()));
@@ -140,8 +146,8 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
         this.programmingModel = programmingModel;
 
-
         this.metaModelValidator = metaModelValidator;
+
         this.facetProcessor = new FacetProcessor(configuration, programmingModel);
         this.layoutMetadataReaders = layoutMetadataReaders;
     }
@@ -170,9 +176,10 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     /**
      * Initializes and wires up, and primes the cache based on any service
-     * classes (provided by the {@link ServicesInjectorSpi}).
+     * classes (provided by the {@link ServicesInjector}).
      * @param runtimeContext
      */
+    @Programmatic
     public void init(final RuntimeContext runtimeContext) {
         this.runtimeContext = runtimeContext;
 
@@ -182,13 +189,9 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
         // default subcomponents
         if (runtimeContext == null) {
-            servicesInjector.addFallbackIfRequired(
-                    ConfigurationServiceInternal.class, new IsisConfigurationDefault(null));
             this.runtimeContext = new RuntimeContextNoRuntime(servicesInjector, this);
         }
 
-        injectInto(metaModelValidator);
-
         // wire subcomponents into each other
         this.runtimeContext.injectInto(facetProcessor);
         for (final LayoutMetadataReader layoutMetadataReader : layoutMetadataReaders) {
@@ -198,7 +201,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
         // initialize subcomponents
         programmingModel.init();
         facetProcessor.init();
-        metaModelValidator.init();
+        metaModelValidator.init(this);
 
         loadSpecificationsForServices();
         loadSpecificationsForMixins();
@@ -240,6 +243,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
         cache.setCacheBySpecId(specById);
     }
 
+    @Programmatic
     public boolean isInitialized() {
         return initialized;
     }
@@ -248,6 +252,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     /**
      * Set using {@link #init(RuntimeContext)}.
      */
+    @Programmatic
     public RuntimeContext getRuntimeContext() {
         return runtimeContext;
     }
@@ -256,6 +261,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     //region > shutdown
 
+    @Programmatic
     public void shutdown() {
         LOG.info("shutting down " + this);
 
@@ -268,6 +274,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     //region > invalidateCache
 
+    @Programmatic
     public void invalidateCache(final Class<?> cls) {
 
         if(!cache.isInitialized()) {
@@ -305,6 +312,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     private ValidationFailures validationFailures;
 
+    @Programmatic
     public void validateAndAssert() {
         ValidationFailures validationFailures = validate();
         validationFailures.assertNone();
@@ -312,6 +320,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
         cacheBySpecId();
     }
 
+    @Programmatic
     public ValidationFailures validate() {
         if(validationFailures == null) {
             validationFailures = new ValidationFailures();
@@ -333,6 +342,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
      * the configured {@link org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor}
      * has filtered out the class.
      */
+    @Programmatic
     public ObjectSpecification loadSpecification(final String className) {
         ensureThatArg(className, is(notNullValue()), "specification class name must be specified");
 
@@ -351,6 +361,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     /**
      * @see #loadSpecification(String)
      */
+    @Programmatic
     public ObjectSpecification loadSpecification(final Class<?> type) {
         final ObjectSpecification spec = internalLoadSpecification(type);
         if(spec == null) {
@@ -410,6 +421,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
      * Loads the specifications of the specified types except the one specified
      * (to prevent an infinite loop).
      */
+    @Programmatic
     public boolean loadSpecifications(final List<Class<?>> typesToLoad, final Class<?> typeToIgnore) {
         boolean anyLoadedAsNull = false;
         for (final Class<?> typeToLoad : typesToLoad) {
@@ -425,6 +437,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     /**
      * Loads the specifications of the specified types.
      */
+    @Programmatic
     public boolean loadSpecifications(final List<Class<?>> typesToLoad) {
         return loadSpecifications(typesToLoad, null);
     }
@@ -504,6 +517,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     /**
      * Return all the loaded specifications.
      */
+    @Programmatic
     public Collection<ObjectSpecification> allSpecifications() {
         return cache.allSpecifications();
     }
@@ -512,6 +526,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     //region > getServiceClasses, isServiceClass
 
+    @Programmatic
     public List<Class<?>> allServiceClasses() {
         List<Class<?>> serviceClasses = Lists
                 .transform(this.servicesInjector.getRegisteredServices(), new Function<Object, Class<?>>(){
@@ -523,6 +538,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
         return Collections.unmodifiableList(Lists.newArrayList(serviceClasses));
     }
 
+    @Programmatic
     public boolean isServiceClass(Class<?> cls) {
         return this.servicesInjector.isRegisteredService(cls);
     }
@@ -533,6 +549,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     /**
      * Whether this class has been loaded.
      */
+    @Programmatic
     public boolean loaded(final Class<?> cls) {
         return loaded(cls.getName());
     }
@@ -540,6 +557,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     /**
      * @see #loaded(Class).
      */
+    @Programmatic
     public boolean loaded(final String fullyQualifiedClassName) {
         return cache.get(fullyQualifiedClassName) != null;
     }
@@ -547,6 +565,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     //endregion
 
     //region > lookupBySpecId
+    @Programmatic
     public ObjectSpecification lookupBySpecId(ObjectSpecId objectSpecId) {
         final ObjectSpecification objectSpecification = cache.getByObjectType(objectSpecId);
         if(objectSpecification == null) {
@@ -563,16 +582,9 @@ public class SpecificationLoader implements ApplicationScopedComponent {
      * Injects self into candidate if required, and instructs its subcomponents
      * to do so also.
      */
+    @Programmatic
     public void injectInto(final Object candidate) {
         final Class<?> candidateClass = candidate.getClass();
-        if (SpecificationLoaderAware.class.isAssignableFrom(candidateClass)) {
-            final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);
-            cast.setSpecificationLoader(this);
-        }
-        if (SpecificationLoaderAware.class.isAssignableFrom(candidateClass)) {
-            final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);
-            cast.setSpecificationLoader(this);
-        }
         if (ServicesInjectorAware.class.isAssignableFrom(candidateClass)) {
             final ServicesInjectorAware cast = ServicesInjectorAware.class.cast(candidate);
             cast.setServicesInjector(this.servicesInjector);

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderAware.java
deleted file mode 100644
index 8f60a85..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderAware.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.specloader;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-public interface SpecificationLoaderAware {
-
-    @Programmatic
-    public void setSpecificationLoader(final SpecificationLoader specificationLookup);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderInstaller.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderInstaller.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderInstaller.java
index cd6a86c..60a4f08 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderInstaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderInstaller.java
@@ -20,21 +20,22 @@
 package org.apache.isis.core.metamodel.specloader;
 
 import java.util.Collection;
+
 import org.apache.isis.core.commons.components.Installer;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * Installs a {@link SpecificationLoader} during system start up.
  */
 public interface SpecificationLoaderInstaller extends Installer {
 
-    static String TYPE = "reflector";
+    String TYPE = "reflector";
 
     SpecificationLoader createReflector(
             final DeploymentCategory deploymentCategory,
             final Collection<MetaModelRefiner> metaModelRefiners,
-            final ServicesInjectorSpi servicesInjector);
+            final ServicesInjector servicesInjector);
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 3306a6e..bb77b40 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
@@ -55,7 +55,7 @@ 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.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;


[10/30] isis git commit: ISIS-1408: simpifying InstallerLookup and IsisComponentProvider.

Posted by da...@apache.org.
ISIS-1408: simpifying InstallerLookup and IsisComponentProvider.

Right now is slightly broken... not picking up the app manifest.


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

Branch: refs/heads/ISIS-1408
Commit: b6dc190b8a177e869f9c6e3bef3703f0429d4586
Parents: 04bf1f2
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu May 19 20:50:17 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu May 19 20:54:34 2016 +0100

----------------------------------------------------------------------
 .../guides/_rgcfg_specifying-components.adoc    |   2 +
 .../integtestsupport/IsisSystemForTest.java     |  40 +--
 .../configbuilder/IsisConfigurationBuilder.java |  10 +-
 .../runtime/fixtures/FixturesInstaller.java     |   3 +-
 .../installerregistry/InstallerLookup.java      |  56 +---
 .../runner/opts/OptionHandlerReflector.java     |  71 -----
 .../isis/core/runtime/system/IsisSystem.java    |  13 +-
 .../core/runtime/system/SystemConstants.java    |  59 +---
 .../AuthenticatorBypass.java                    |  40 +++
 .../IsisComponentProvider.java                  | 262 +++++++++++++++++-
 .../IsisComponentProviderAbstract.java          | 269 -------------------
 .../IsisComponentProviderDefault2.java          | 164 ++---------
 .../IsisComponentProviderUsingInstallers.java   | 121 ++-------
 .../core/runtime/installer-registry.properties  |  12 -
 14 files changed, 382 insertions(+), 740 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_specifying-components.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_specifying-components.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_specifying-components.adoc
index 3205a5b..f5bc353 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_specifying-components.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_specifying-components.adoc
@@ -82,6 +82,8 @@ The mechanism to discover and load domain services:
 
 This property is IGNORED if the `isis.appManifest` configuration property is specified, or if an xref:rgcms.adoc#_rgcms_classes_super_AppManifest[`AppManifest`] is provided programmatically.
 
+This property is also IGNORED completely in 1.13.0+; the `configuration-and-annotation` implementation is always used.
+
 
 |===
 

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
----------------------------------------------------------------------
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
index 82bf0d5..c4ac9fd 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
@@ -155,12 +155,12 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
 
 
     // these fields 'xxxForComponentProvider' are used to initialize the IsisComponentProvider, but shouldn't be used thereafter.
-    private final AppManifest appManifestForComponentProvider;
-    private final IsisConfiguration configurationForComponentProvider;
-    private final List<Object> servicesForComponentProvider;
-    private final List<InstallableFixture> fixturesForComponentProvider;
-    private final MetaModelValidator metaModelValidatorForComponentProvider;
-    private final ProgrammingModel programmingModelForComponentProvider;
+    private final AppManifest appManifestIfAny;
+    private final IsisConfiguration configurationOverride;
+    private final List<Object> servicesIfAny;
+    private final List<InstallableFixture> fixturesIfAny;
+    private final MetaModelValidator metaModelValidatorOverride;
+    private final ProgrammingModel programmingModelOverride;
 
     // populated at #setupSystem
     private IsisComponentProvider componentProvider;
@@ -335,15 +335,15 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
             final List<InstallableFixture> fixturesIfAny,
             final ProgrammingModel programmingModelOverride,
             final MetaModelValidator metaModelValidatorOverride,
-            final AuthenticationRequest authenticationRequest,
+            final AuthenticationRequest authenticationRequestIfAny,
             final List<Listener> listeners) {
-        this.appManifestForComponentProvider = appManifestIfAny;
-        this.configurationForComponentProvider = configurationOverride;
-        this.servicesForComponentProvider = servicesIfAny;
-        this.fixturesForComponentProvider = fixturesIfAny;
-        this.programmingModelForComponentProvider = programmingModelOverride;
-        this.metaModelValidatorForComponentProvider = metaModelValidatorOverride;
-        this.authenticationRequestIfAny = authenticationRequest;
+        this.appManifestIfAny = appManifestIfAny;
+        this.configurationOverride = configurationOverride;
+        this.servicesIfAny = servicesIfAny;
+        this.fixturesIfAny = fixturesIfAny;
+        this.programmingModelOverride = programmingModelOverride;
+        this.metaModelValidatorOverride = metaModelValidatorOverride;
+        this.authenticationRequestIfAny = authenticationRequestIfAny;
         this.listeners = listeners;
     }
 
@@ -398,12 +398,12 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
 
             componentProvider = new IsisComponentProviderDefault(
                     DeploymentType.UNIT_TESTING,
-                    appManifestForComponentProvider,
-                    servicesForComponentProvider,
-                    fixturesForComponentProvider,
-                    configurationForComponentProvider,
-                    programmingModelForComponentProvider,
-                    metaModelValidatorForComponentProvider
+                    appManifestIfAny,
+                    servicesIfAny,
+                    fixturesIfAny,
+                    configurationOverride,
+                    programmingModelOverride,
+                    metaModelValidatorOverride
             );
 
             isisSystem = new IsisSystem(componentProvider);

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/metamodel/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilder.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilder.java
index ed229ef..423d01a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilder.java
@@ -346,14 +346,14 @@ public final class IsisConfigurationBuilder {
      * Log a summary of resources found or not found.
      */
     public void dumpResourcesToLog() {
-        if (LOG.isInfoEnabled()) {
-            LOG.info("Configuration resources FOUND:");
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Configuration resources FOUND:");
             for (String resource : configurationResourcesFound) {
-                LOG.info("*  " + resource);
+                LOG.debug("*  {}", resource);
             }
-            LOG.info("Configuration resources NOT FOUND (but not needed):");
+            LOG.debug("Configuration resources NOT FOUND (but not needed):");
             for (String resource : configurationResourcesNotFound) {
-                LOG.info("*  " + resource);
+                LOG.debug("*  {}", resource);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstaller.java
index dcf6356..bb1b2f8 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstaller.java
@@ -21,12 +21,11 @@ package org.apache.isis.core.runtime.fixtures;
 
 import org.apache.isis.applib.fixtures.InstallableFixture;
 import org.apache.isis.applib.fixtures.LogonFixture;
-import org.apache.isis.core.commons.components.Installer;
 
 /**
  * A particular mechanism to install fixtures.
  */
-public interface FixturesInstaller extends Installer {
+public interface FixturesInstaller {
 
     /**
      * NB: this has the suffix '-installer' because in the command line we must

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
index 6d27751..cac2a50 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
@@ -43,15 +43,15 @@ import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.commons.factory.UnavailableClassException;
 import org.apache.isis.core.commons.lang.ObjectExtensions;
 import org.apache.isis.core.commons.lang.StringExtensions;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.runtime.IsisInstallerRegistry;
 import org.apache.isis.core.runtime.about.AboutIsis;
 import org.apache.isis.core.runtime.about.ComponentDetails;
 import org.apache.isis.core.runtime.authentication.AuthenticationManagerInstaller;
 import org.apache.isis.core.runtime.authorization.AuthorizationManagerInstaller;
 import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
-import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
+import org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration;
 import org.apache.isis.core.runtime.services.ServicesInstaller;
+import org.apache.isis.core.runtime.services.ServicesInstallerFromConfigurationAndAnnotation;
 import org.apache.isis.core.runtime.system.IsisSystem;
 import org.apache.isis.core.runtime.system.SystemConstants;
 import org.apache.isis.core.runtime.systemdependencyinjector.SystemDependencyInjector;
@@ -81,7 +81,7 @@ import org.apache.isis.core.runtime.systemdependencyinjector.SystemDependencyInj
  * even if it has not been registered in <tt>installer-registry.properties</tt>
  * : just specify the {@link Installer}'s fully qualified class name.
  */
-public class InstallerLookup implements InstallerRepository, ApplicationScopedComponent, SystemDependencyInjector {
+public class InstallerLookup implements ApplicationScopedComponent, SystemDependencyInjector {
 
     private static final Logger LOG = LoggerFactory.getLogger(InstallerLookup.class);
 
@@ -136,32 +136,12 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
     }
     //endregion
 
-    //region > InstallerRepository impl.
-
-    @Override
-    public Installer[] getInstallers(final Class<?> cls) {
-        final List<Installer> list = new ArrayList<Installer>();
-        for (final Installer comp : installerList) {
-            if (cls.isAssignableFrom(comp.getClass())) {
-                list.add(comp);
-            }
-        }
-        return list.toArray(new Installer[list.size()]);
-    }
-    //endregion
-
-
-    //region > metamodel
-    public SpecificationLoaderInstaller reflectorInstaller(final String requested) {
-        return getInstaller(SpecificationLoaderInstaller.class, requested, SystemConstants.REFLECTOR_KEY, SystemConstants.REFLECTOR_DEFAULT);
-    }
-    //endregion
-
     //region > framework
 
     public AuthenticationManagerInstaller authenticationManagerInstaller(final String requested) {
         return getInstaller(
-                AuthenticationManagerInstaller.class, requested,
+                AuthenticationManagerInstaller.class,
+                requested,
                 SystemConstants.AUTHENTICATION_INSTALLER_KEY,
                 SystemConstants.AUTHENTICATION_DEFAULT);
     }
@@ -173,31 +153,11 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
                 SystemConstants.AUTHORIZATION_DEFAULT);
     }
 
-    public FixturesInstaller fixturesInstaller(final String requested) {
-        return getInstaller(
-                FixturesInstaller.class, requested,
-                SystemConstants.FIXTURES_INSTALLER_KEY,
-                SystemConstants.FIXTURES_INSTALLER_DEFAULT);
-    }
-
-    public PersistenceMechanismInstaller persistenceMechanismInstaller(final String requested) {
-        return getInstaller(
-                PersistenceMechanismInstaller.class, requested,
-                SystemConstants.OBJECT_PERSISTOR_KEY,
-                SystemConstants.OBJECT_PERSISTOR_DEFAULT);
-    }
-
-    public ServicesInstaller servicesInstaller(final String requestedImplementationName) {
-        return getInstaller(
-                ServicesInstaller.class, requestedImplementationName,
-                SystemConstants.SERVICES_INSTALLER_KEY,
-                SystemConstants.SERVICES_INSTALLER_DEFAULT);
-    }
     //endregion
 
     //region > framework - generic
     @SuppressWarnings("unchecked")
-    public <T extends Installer> T getInstaller(final Class<T> cls, final String implName) {
+    private <T extends Installer> T getInstaller(final Class<T> cls, final String implName) {
         Assert.assertNotNull("No name specified", implName);
         for (final Installer installer : installerList) {
             if (cls.isAssignableFrom(installer.getClass()) && installer.getName().equals(implName)) {
@@ -217,7 +177,8 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
             }
             return installer;
         } catch (final InstanceCreationException e) {
-            throw new InstanceCreationException("Specification error in " + IsisInstallerRegistry.INSTALLER_REGISTRY_FILE, e);
+            throw new InstanceCreationException(
+                    "Specification error in " + IsisInstallerRegistry.INSTALLER_REGISTRY_FILE, e);
         } catch (final UnavailableClassException e) {
             return null;
         }
@@ -259,7 +220,6 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
     }
     //endregion
 
-
     //region > SystemDependencyInjector, Injectable
     @Override
     public <T> T injectDependenciesInto(final T candidate) {

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerReflector.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerReflector.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerReflector.java
deleted file mode 100644
index 4ac20dc..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerReflector.java
+++ /dev/null
@@ -1,71 +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.runner.opts;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.cli.Options;
-
-import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
-import org.apache.isis.core.runtime.installerregistry.InstallerRepository;
-import org.apache.isis.core.runtime.optionhandler.BootPrinter;
-import org.apache.isis.core.runtime.optionhandler.OptionHandlerAbstract;
-import org.apache.isis.core.runtime.runner.Constants;
-import org.apache.isis.core.runtime.system.SystemConstants;
-
-import static org.apache.isis.core.runtime.runner.Constants.REFLECTOR_LONG_OPT;
-import static org.apache.isis.core.runtime.runner.Constants.REFLECTOR_OPT;
-
-/**
- * @deprecated - far better to use `isis.reflector.facets.include` and `isis.reflector.facets.exclude`; no longer registered in IsisRunner/IsisWebServer
- */
-@Deprecated
-public class OptionHandlerReflector extends OptionHandlerAbstract {
-
-    private final InstallerRepository installerRepository;
-    private String reflector;
-
-    public OptionHandlerReflector(final InstallerRepository installerRepository) {
-        this.installerRepository = installerRepository;
-    }
-
-    @Override
-    @SuppressWarnings("static-access")
-    public void addOption(final Options options) {
-        final Object[] reflectors = installerRepository.getInstallers(SpecificationLoaderInstaller.class);
-        final Option option = OptionBuilder.withArgName("name|class name").hasArg().withLongOpt(REFLECTOR_LONG_OPT).withDescription("reflector to use (ignored if type is prototype or client): " + availableInstallers(reflectors) + "; or class name").create(REFLECTOR_OPT);
-        options.addOption(option);
-
-    }
-
-    @Override
-    public boolean handle(final CommandLine commandLine, final BootPrinter bootPrinter, final Options options) {
-        reflector = commandLine.getOptionValue(Constants.REFLECTOR_OPT);
-        return true;
-    }
-
-    @Override
-    public void prime(final IsisConfigurationBuilder isisConfigurationBuilder) {
-        isisConfigurationBuilder.add(SystemConstants.REFLECTOR_KEY, reflector);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
index 3f82837..caf7bdd 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
@@ -156,9 +156,9 @@ public class IsisSystem implements ApplicationScopedComponent {
 
             // authentication, authorization
             final AuthenticationManager authenticationManager =
-                    isisComponentProvider.provideAuthenticationManager(deploymentType);
+                    isisComponentProvider.provideAuthenticationManager();
             final AuthorizationManager authorizationManager =
-                    isisComponentProvider.provideAuthorizationManager(deploymentType);
+                    isisComponentProvider.provideAuthorizationManager();
 
             // specificationLoader
             final Collection<MetaModelRefiner> metaModelRefiners =
@@ -170,7 +170,7 @@ public class IsisSystem implements ApplicationScopedComponent {
             // persistenceSessionFactory
             final PersistenceSessionFactory persistenceSessionFactory =
                     isisComponentProvider.providePersistenceSessionFactory(
-                            deploymentType, servicesInjector, specificationLoader);
+                            deploymentType, servicesInjector);
 
             // runtimeContext
             final RuntimeContextFromSession runtimeContext =
@@ -274,9 +274,6 @@ public class IsisSystem implements ApplicationScopedComponent {
     private void installFixturesIfRequired() throws IsisSystemException {
 
         fixtureInstaller = isisComponentProvider.provideFixturesInstaller();
-        if (isNoop(fixtureInstaller)) {
-            return;
-        }
 
         IsisContext.openSession(new InitialisationSession());
         fixtureInstaller.installFixtures();
@@ -291,10 +288,6 @@ public class IsisSystem implements ApplicationScopedComponent {
         }
     }
 
-    private boolean isNoop(final FixturesInstaller candidate) {
-        return candidate == null || (fixtureInstaller instanceof Noop);
-    }
-
     /**
      * The act of invoking titleOf(...) will cause translations to be requested.
      */

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
index c8aa4e5..ca446f1 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
@@ -22,15 +22,11 @@ package org.apache.isis.core.runtime.system;
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.core.commons.config.ConfigurationConstants;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.AuthenticationManagerInstaller;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManagerInstaller;
-import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
 import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
-import org.apache.isis.core.runtime.services.ServicesInstaller;
 
 public final class SystemConstants {
 
@@ -44,24 +40,6 @@ public final class SystemConstants {
     public static final String DEPLOYMENT_TYPE_KEY = ConfigurationConstants.ROOT + "deploymentType";
 
 
-    /**
-     * Key used to lookup {@link SpecificationLoader specification Loader} in
-     * {@link IsisConfiguration}, and root for any
-     * {@link SpecificationLoaderInstaller reflector}-specific configuration keys.
-     *
-     * @deprecated
-     */
-    @Deprecated
-    public final static String REFLECTOR_KEY = ConfigurationConstants.ROOT + SpecificationLoaderInstaller.TYPE;
-    
-    /**
-     * Default for {@link #REFLECTOR_KEY}
-     *
-     * @deprecated
-     */
-    @Deprecated
-    public static final String REFLECTOR_DEFAULT = "java";
-
 
     /**
      * Key used to lookup {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory persistor} in
@@ -74,20 +52,6 @@ public final class SystemConstants {
     @Deprecated
     public final static String OBJECT_PERSISTOR_INSTALLER_KEY = ConfigurationConstants.ROOT + PersistenceMechanismInstaller.TYPE;
 
-    /**
-     *
-     * @deprecated
-     */
-    @Deprecated
-    public static final String OBJECT_PERSISTOR_KEY = OBJECT_PERSISTOR_INSTALLER_KEY;
-
-    /**
-     *
-     * @deprecated
-     */
-    @Deprecated
-    public static final String OBJECT_PERSISTOR_DEFAULT = "datanucleus";
-
 
     /**
      * Key used to lookup {@link AppManifest} (if any) from the {@link IsisConfiguration}.
@@ -118,27 +82,7 @@ public final class SystemConstants {
      */
     public static final String AUTHORIZATION_DEFAULT = "shiro";
 
-    /**
-     * Key used to lookup {@link ServicesInstaller services installer} in
-     * {@link IsisConfiguration}, and root for any {@link ServicesInstaller
-     * services installer}-specific configuration keys.
-     */
-    public static final String SERVICES_INSTALLER_KEY = ConfigurationConstants.ROOT + ServicesInstaller.TYPE;
-    /**
-     * Default for {@link #SERVICES_INSTALLER_KEY}
-     */
-    public static final String SERVICES_INSTALLER_DEFAULT = "configuration-and-annotation";
 
-    /**
-     * Key used to lookup {@link FixturesInstaller fixtures installer} in
-     * {@link IsisConfiguration}, and root for any {@link FixturesInstaller
-     * fixtures installer}-specific configuration keys.
-     */
-    public static final String FIXTURES_INSTALLER_KEY = ConfigurationConstants.ROOT + FixturesInstaller.TYPE;
-    /**
-     * Default for {@link #FIXTURES_INSTALLER_KEY}
-     */
-    public static final String FIXTURES_INSTALLER_DEFAULT = "configuration";
 
     /**
      * Key by which requested fixture (eg via command line) is made available in
@@ -146,6 +90,8 @@ public final class SystemConstants {
      */
     public final static String FIXTURE_KEY = ConfigurationConstants.ROOT + "fixtures";
 
+
+
     /**
      * Key by which requested user (eg via command line) is made available in
      * {@link IsisConfiguration} .
@@ -164,6 +110,7 @@ public final class SystemConstants {
     @Deprecated
     public final static String PASSWORD_KEY = ConfigurationConstants.ROOT + "password";
 
+
     /**
      * Key as to whether to show splash (eg via command line) is made available
      * in {@link IsisConfiguration}.

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/AuthenticatorBypass.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/AuthenticatorBypass.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/AuthenticatorBypass.java
new file mode 100644
index 0000000..7703ab7
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/AuthenticatorBypass.java
@@ -0,0 +1,40 @@
+/*
+ *  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.systemusinginstallers;
+
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
+import org.apache.isis.core.runtime.authentication.standard.AuthenticatorAbstract;
+
+class AuthenticatorBypass extends AuthenticatorAbstract {
+
+    public AuthenticatorBypass(final IsisConfiguration configuration) {
+        super(configuration);
+    }
+
+    @Override
+    public boolean isValid(final AuthenticationRequest request) {
+        return true;
+    }
+
+    @Override
+    public boolean canAuthenticate(Class<? extends AuthenticationRequest> authenticationRequestClass) {
+        return true;
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
index 20d9337..96698fb 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
@@ -20,45 +20,281 @@
 package org.apache.isis.core.runtime.systemusinginstallers;
 
 import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
+import javax.annotation.Nullable;
+import javax.jdo.annotations.PersistenceCapable;
+
+import com.google.common.base.Function;
+import com.google.common.base.Joiner;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+import org.reflections.Reflections;
+import org.reflections.vfs.Vfs;
+
+import org.apache.isis.applib.AppManifest;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.Mixin;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.fixturescripts.FixtureScript;
+import org.apache.isis.applib.services.classdiscovery.ClassDiscoveryServiceUsingReflections;
+import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
+import org.apache.isis.core.commons.lang.ClassUtil;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
+import org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration;
+import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
+import org.apache.isis.core.runtime.services.ServicesInstallerFromAnnotation;
+import org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.IsisSystemException;
+import org.apache.isis.core.runtime.system.SystemConstants;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
+import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller;
+import org.apache.isis.objectstore.jdo.service.RegisterEntities;
+import org.apache.isis.progmodels.dflt.JavaReflectorInstaller;
+
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
 
 /**
  * 
  */
-public interface IsisComponentProvider {
+public abstract class IsisComponentProvider {
+
+    //region > constructor, fields
+
+    private final DeploymentType deploymentType;
+    private final AppManifest appManifestIfAny;
+    private final IsisConfigurationDefault configuration;
+
+    public IsisComponentProvider(
+            final DeploymentType deploymentType,
+            final AppManifest appManifestIfAny,
+            final IsisConfigurationDefault configuration) {
+
+        this.deploymentType = deploymentType;
+        this.appManifestIfAny = appManifestIfAny;
+        this.configuration = configuration;
+
+        if(appManifestIfAny != null) {
+
+            putAppManifestKey(appManifestIfAny);
+            findAndRegisterTypes(appManifestIfAny);
+            specifyServicesAndRegisteredEntitiesUsing(appManifestIfAny);
+
+            overrideConfigurationUsing(appManifestIfAny);
+        }
+
+    }
+
+    public DeploymentType getDeploymentType() {
+        return deploymentType;
+    }
+
+    public AppManifest getAppManifestIfAny() {
+        return appManifestIfAny;
+    }
+
+    public IsisConfigurationDefault getConfiguration() {
+        return configuration;
+    }
+
+    //endregion
+
+
+    //region > helpers (appManifest)
+
+    private void putAppManifestKey(final AppManifest appManifest) {
+        // required to prevent RegisterEntities validation from complaining
+        // if it can't find any @PersistenceCapable entities in a module
+        // that contains only services.
+        putConfigurationProperty(
+                SystemConstants.APP_MANIFEST_KEY, appManifest.getClass().getName()
+        );
+    }
+
+    private void findAndRegisterTypes(final AppManifest appManifest) {
+        final Iterable<String> packageNameList = modulePackageNamesFrom(appManifest);
+        final AppManifest.Registry registry = AppManifest.Registry.instance();
+
+        final List<String> packages = Lists.newArrayList();
+        packages.addAll(AppManifest.Registry.FRAMEWORK_PROVIDED_SERVICES);
+        Iterables.addAll(packages, packageNameList);
+
+        Vfs.setDefaultURLTypes(ClassDiscoveryServiceUsingReflections.getUrlTypes());
 
-    DeploymentType getDeploymentType();
+        final Reflections reflections = new Reflections(packages);
+        final Set<Class<?>> domainServiceTypes = reflections.getTypesAnnotatedWith(DomainService.class);
+        final Set<Class<?>> persistenceCapableTypes = reflections.getTypesAnnotatedWith(PersistenceCapable.class);
+        final Set<Class<? extends FixtureScript>> fixtureScriptTypes = reflections.getSubTypesOf(FixtureScript.class);
 
-    IsisConfigurationDefault getConfiguration();
+        final Set<Class<?>> mixinTypes = Sets.newHashSet();
+        mixinTypes.addAll(reflections.getTypesAnnotatedWith(Mixin.class));
+        final Set<Class<?>> domainObjectTypes = reflections.getTypesAnnotatedWith(DomainObject.class);
+        mixinTypes.addAll(
+                Lists.newArrayList(Iterables.filter(domainObjectTypes, new Predicate<Class<?>>() {
+                    @Override
+                    public boolean apply(@Nullable final Class<?> input) {
+                        if(input == null) { return false; }
+                        final DomainObject annotation = input.getAnnotation(DomainObject.class);
+                        return annotation.nature() == Nature.MIXIN;
+                    }
+                }))
+        );
 
-    AuthenticationManager provideAuthenticationManager(DeploymentType deploymentType);
-    AuthorizationManager provideAuthorizationManager(final DeploymentType deploymentType);
+        registry.setDomainServiceTypes(domainServiceTypes);
+        registry.setPersistenceCapableTypes(persistenceCapableTypes);
+        registry.setFixtureScriptTypes(fixtureScriptTypes);
+        registry.setMixinTypes(mixinTypes);
+    }
 
-    ServicesInjectorDefault provideServiceInjector();
 
+    private void specifyServicesAndRegisteredEntitiesUsing(final AppManifest appManifest) {
+        final Iterable<String> packageNames = modulePackageNamesFrom(appManifest);
+        final String packageNamesCsv = Joiner.on(',').join(packageNames);
 
-    FixturesInstaller provideFixturesInstaller();
+        putConfigurationProperty(ServicesInstallerFromAnnotation.PACKAGE_PREFIX_KEY, packageNamesCsv);
+        putConfigurationProperty(RegisterEntities.PACKAGE_PREFIX_KEY, packageNamesCsv);
 
-    SpecificationLoader provideSpecificationLoader(
+        final List<Class<?>> additionalServices = appManifest.getAdditionalServices();
+        if(additionalServices != null) {
+            putConfigurationProperty(
+                    ServicesInstallerFromConfiguration.SERVICES_KEY, classNamesFrom(additionalServices));
+        }
+    }
+
+    private Iterable<String> modulePackageNamesFrom(final AppManifest appManifest) {
+        List<Class<?>> modules = appManifest.getModules();
+        if (modules == null || modules.isEmpty()) {
+            throw new IllegalArgumentException(
+                    "If an appManifest is provided then it must return a non-empty set of modules");
+        }
+
+        return Iterables.transform(modules, ClassUtil.Functions.packageNameOf());
+    }
+
+    protected String classNamesFrom(final List<?> objectsOrClasses) {
+        if (objectsOrClasses == null) {
+            return null;
+        }
+        final Iterable<String> fixtureClassNames = Iterables.transform(objectsOrClasses, classNameOf());
+        return Joiner.on(',').join(fixtureClassNames);
+    }
+
+    private static Function<Object, String> classNameOf() {
+        return new Function<Object, String>() {
+            @Nullable @Override
+            public String apply(final Object input) {
+                Class<?> aClass = input instanceof Class ? (Class<?>) input : input.getClass();
+                return aClass.getName();
+            }
+        };
+    }
+
+    private void overrideConfigurationUsing(final AppManifest appManifest) {
+        final Map<String, String> configurationProperties = appManifest.getConfigurationProperties();
+        if (configurationProperties != null) {
+            for (Map.Entry<String, String> configProp : configurationProperties.entrySet()) {
+                putConfigurationProperty(configProp.getKey(), configProp.getValue());
+            }
+        }
+    }
+
+    /**
+     * TODO: hacky, {@link IsisConfiguration} is meant to be immutable...
+     */
+    void putConfigurationProperty(final String key, final String value) {
+        if(value == null) {
+            return;
+        }
+        this.configuration.put(key, value);
+    }
+
+    //endregion
+
+
+    //region > services, configuration, authenticationManager, authorizationManager (populated by subclass)
+
+    /**
+     * populated by subclass, in its constructor.
+     */
+    protected List<Object> services;
+    /**
+     * populated by subclass, in its constructor.
+     */
+    protected AuthenticationManager authenticationManager;
+    /**
+     * populated by subclass, in its constructor.
+     */
+    protected AuthorizationManager authorizationManager;
+
+
+    /**
+     * Provided for subclasses to call to ensure that they have correctly populated all fields.
+     */
+    protected void ensureInitialized() {
+        ensureThatState(authenticationManager, is(not(nullValue())));
+        ensureThatState(authorizationManager, is(not(nullValue())));
+        ensureThatState(services, is(not(nullValue())));
+        ensureThatState(configuration, is(not(nullValue())));
+    }
+    //endregion
+
+    //region > provide*
+
+    public AuthenticationManager provideAuthenticationManager() {
+        return authenticationManager;
+    }
+
+    public AuthorizationManager provideAuthorizationManager() {
+        return authorizationManager;
+    }
+
+    public ServicesInjectorDefault provideServiceInjector() {
+        return new ServicesInjectorDefault(services);
+    }
+
+    public FixturesInstaller provideFixturesInstaller()  {
+        return new FixturesInstallerFromConfiguration(getConfiguration());
+    }
+
+    public SpecificationLoader provideSpecificationLoader(
             final DeploymentType deploymentType,
             final ServicesInjectorSpi servicesInjector,
-            final Collection<MetaModelRefiner> metaModelRefiners)
-            throws IsisSystemException;
+            final Collection<MetaModelRefiner> metaModelRefiners)  throws IsisSystemException {
 
-    PersistenceSessionFactory providePersistenceSessionFactory(
+        final SpecificationLoaderInstaller reflectorInstaller = new JavaReflectorInstaller(getConfiguration());
+
+        return reflectorInstaller.createReflector(
+                deploymentType.getDeploymentCategory(), metaModelRefiners, servicesInjector);
+    }
+
+    public PersistenceSessionFactory providePersistenceSessionFactory(
             final DeploymentType deploymentType,
-            final ServicesInjectorSpi servicesInjector,
-            final SpecificationLoader specificationLoader);
+            final ServicesInjectorSpi servicesInjector) {
+        final PersistenceMechanismInstaller persistenceMechanismInstaller =
+                new DataNucleusPersistenceMechanismInstaller(getConfiguration());
+
+        return persistenceMechanismInstaller.createPersistenceSessionFactory(
+                deploymentType, servicesInjector);
+    }
+
+    //endregion
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderAbstract.java
deleted file mode 100644
index 3a40061..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderAbstract.java
+++ /dev/null
@@ -1,269 +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.systemusinginstallers;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.annotation.Nullable;
-import javax.jdo.annotations.PersistenceCapable;
-
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
-import org.reflections.Reflections;
-import org.reflections.vfs.Vfs;
-
-import org.apache.isis.applib.AppManifest;
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.Mixin;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.fixturescripts.FixtureScript;
-import org.apache.isis.applib.services.classdiscovery.ClassDiscoveryServiceUsingReflections;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.commons.lang.ClassUtil;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
-import org.apache.isis.core.runtime.authentication.AuthenticationManager;
-import org.apache.isis.core.runtime.authorization.AuthorizationManager;
-import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
-import org.apache.isis.core.runtime.services.ServicesInstallerFromAnnotation;
-import org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.runtime.system.SystemConstants;
-import org.apache.isis.objectstore.jdo.service.RegisterEntities;
-
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-
-public abstract class IsisComponentProviderAbstract implements IsisComponentProvider {
-
-    protected final DeploymentType deploymentType;
-    /**
-     * may be null.
-     */
-    protected final AppManifest appManifest;
-
-    /**
-     * populated by subclass, in its constructor.
-     */
-    protected IsisConfigurationDefault configuration;
-    /**
-     * populated by subclass, in its constructor.
-     */
-    protected List<Object> services;
-    /**
-     * populated by subclass, in its constructor.
-     */
-    protected FixturesInstaller fixturesInstaller;
-    /**
-     * populated by subclass, in its constructor.
-     */
-    protected AuthenticationManager authenticationManager;
-    /**
-     * populated by subclass, in its constructor.
-     */
-    protected AuthorizationManager authorizationManager;
-
-    public IsisComponentProviderAbstract(
-            final DeploymentType deploymentType,
-            final AppManifest appManifest) {
-
-        this.deploymentType = deploymentType;
-        this.appManifest = appManifest;
-
-    }
-
-    protected void putAppManifestKey(final AppManifest appManifest) {
-        // required to prevent RegisterEntities validation from complaining
-        // if it can't find any @PersistenceCapable entities in a module
-        // that contains only services.
-        putConfigurationProperty(
-                SystemConstants.APP_MANIFEST_KEY, appManifest.getClass().getName()
-        );
-    }
-
-    /**
-     * Provided for subclasses to call to ensure that they have correctly populated all fields.
-     */
-    protected void ensureInitialized() {
-        ensureThatState(authenticationManager, is(not(nullValue())));
-        ensureThatState(authorizationManager, is(not(nullValue())));
-        ensureThatState(services, is(not(nullValue())));
-        ensureThatState(fixturesInstaller, is(not(nullValue())));
-        ensureThatState(configuration, is(not(nullValue())), "fixtureInstaller could not be looked up");
-    }
-
-
-    //region > appManifest helpers
-    protected void specifyServicesAndRegisteredEntitiesUsing(final AppManifest appManifest) {
-        final Iterable<String> packageNames = modulePackageNamesFrom(appManifest);
-        final String packageNamesCsv = Joiner.on(',').join(packageNames);
-
-        putConfigurationProperty(ServicesInstallerFromAnnotation.PACKAGE_PREFIX_KEY, packageNamesCsv);
-        putConfigurationProperty(RegisterEntities.PACKAGE_PREFIX_KEY, packageNamesCsv);
-
-        final List<Class<?>> additionalServices = appManifest.getAdditionalServices();
-        if(additionalServices != null) {
-            putConfigurationProperty(ServicesInstallerFromConfiguration.SERVICES_KEY, classNamesFrom(additionalServices));
-        }
-    }
-
-    /**
-     * @deprecated - unused, renamed to {@link #findAndRegisterTypes(AppManifest)}.
-     */
-    @Deprecated
-    protected void registerPackageNames(final AppManifest appManifest) {
-        findAndRegisterTypes(appManifest);
-    }
-    protected void findAndRegisterTypes(final AppManifest appManifest) {
-        final Iterable<String> packageNameList = modulePackageNamesFrom(appManifest);
-        final AppManifest.Registry registry = AppManifest.Registry.instance();
-
-        final List<String> packages = Lists.newArrayList();
-        packages.addAll(AppManifest.Registry.FRAMEWORK_PROVIDED_SERVICES);
-        Iterables.addAll(packages, packageNameList);
-
-        Vfs.setDefaultURLTypes(ClassDiscoveryServiceUsingReflections.getUrlTypes());
-
-        final Reflections reflections = new Reflections(packages);
-        final Set<Class<?>> domainServiceTypes = reflections.getTypesAnnotatedWith(DomainService.class);
-        final Set<Class<?>> persistenceCapableTypes = reflections.getTypesAnnotatedWith(PersistenceCapable.class);
-        final Set<Class<? extends FixtureScript>> fixtureScriptTypes = reflections.getSubTypesOf(FixtureScript.class);
-
-        final Set<Class<?>> mixinTypes = Sets.newHashSet();
-        mixinTypes.addAll(reflections.getTypesAnnotatedWith(Mixin.class));
-        final Set<Class<?>> domainObjectTypes = reflections.getTypesAnnotatedWith(DomainObject.class);
-        mixinTypes.addAll(
-                Lists.newArrayList(Iterables.filter(domainObjectTypes, new Predicate<Class<?>>() {
-                    @Override
-                    public boolean apply(@Nullable final Class<?> input) {
-                        if(input == null) { return false; }
-                        final DomainObject annotation = input.getAnnotation(DomainObject.class);
-                        return annotation.nature() == Nature.MIXIN;
-                    }
-                }))
-        );
-
-        registry.setDomainServiceTypes(domainServiceTypes);
-        registry.setPersistenceCapableTypes(persistenceCapableTypes);
-        registry.setFixtureScriptTypes(fixtureScriptTypes);
-        registry.setMixinTypes(mixinTypes);
-    }
-
-    private Iterable<String> modulePackageNamesFrom(final AppManifest appManifest) {
-        List<Class<?>> modules = appManifest.getModules();
-        if (modules == null || modules.isEmpty()) {
-            throw new IllegalArgumentException(
-                    "If an appManifest is provided then it must return a non-empty set of modules");
-        }
-
-        return Iterables.transform(modules, ClassUtil.Functions.packageNameOf());
-    }
-
-    protected String classNamesFrom(final List<?> objectsOrClasses) {
-        if (objectsOrClasses == null) {
-            return null;
-        }
-        final Iterable<String> fixtureClassNames = Iterables.transform(objectsOrClasses, classNameOf());
-        return Joiner.on(',').join(fixtureClassNames);
-    }
-
-    private static Function<Object, String> classNameOf() {
-        return new Function<Object, String>() {
-                        @Nullable @Override
-                        public String apply(final Object input) {
-                            Class<?> aClass =
-                                    input instanceof Class
-                                        ? (Class<?>)input
-                                        : input.getClass();
-                            return aClass.getName();
-                        }
-                    };
-    }
-
-    protected void overrideConfigurationUsing(final AppManifest appManifest) {
-        final Map<String, String> configurationProperties = appManifest.getConfigurationProperties();
-        if (configurationProperties != null) {
-            for (Map.Entry<String, String> configProp : configurationProperties.entrySet()) {
-                putConfigurationProperty(configProp.getKey(), configProp.getValue());
-            }
-        }
-    }
-
-    protected final void putConfigurationProperty(final String key, final String value) {
-        if(value == null) {
-            return;
-        }
-        doPutConfigurationProperty(key, value);
-    }
-
-
-    /**
-     * For subclasses to implement, to update their implementation of {@link IsisConfiguration}.
-     */
-    protected abstract void doPutConfigurationProperty(final String key, final String value);
-
-    //endregion
-
-    //region > API impl.
-
-    @Override
-    public DeploymentType getDeploymentType() {
-        return deploymentType;
-    }
-
-    @Override
-    public IsisConfigurationDefault getConfiguration() {
-        return configuration;
-    }
-
-    @Override
-    public AuthenticationManager provideAuthenticationManager(final DeploymentType deploymentType) {
-        return authenticationManager;
-    }
-
-    @Override
-    public  AuthorizationManager provideAuthorizationManager(final DeploymentType deploymentType) {
-        return authorizationManager;
-    }
-
-    @Override
-    public FixturesInstaller provideFixturesInstaller() {
-        return fixturesInstaller;
-    }
-
-    @Override
-    public ServicesInjectorDefault provideServiceInjector() {
-        return new ServicesInjectorDefault(services);
-    }
-
-    //endregion
-
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
index 2af84d9..ef7d119 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
@@ -26,7 +26,6 @@ import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.applib.fixtures.InstallableFixture;
-import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.resource.ResourceStreamSourceContextLoaderClassPath;
@@ -40,24 +39,18 @@ import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
-import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 import org.apache.isis.core.runtime.authentication.standard.AuthenticationManagerStandard;
-import org.apache.isis.core.runtime.authentication.standard.Authenticator;
-import org.apache.isis.core.runtime.authentication.standard.AuthenticatorAbstract;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.authorization.standard.AuthorizationManagerStandard;
-import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
 import org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration;
 import org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration;
 import org.apache.isis.core.runtime.services.ServicesInstallerFromConfigurationAndAnnotation;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.IsisSystemException;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
-import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller;
 import org.apache.isis.progmodels.dflt.JavaReflectorHelper;
 import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
 
-public class IsisComponentProviderDefault2 extends IsisComponentProviderAbstract {
+public class IsisComponentProviderDefault2 extends IsisComponentProvider  {
 
     private final ProgrammingModel programmingModel;
     private final MetaModelValidator metaModelValidator;
@@ -70,62 +63,28 @@ public class IsisComponentProviderDefault2 extends IsisComponentProviderAbstract
             final IsisConfiguration configurationOverride,
             final ProgrammingModel programmingModelOverride,
             final MetaModelValidator metaModelValidatorOverride) {
-        super(deploymentType, appManifestIfAny);
+        super(deploymentType, appManifestIfAny, elseDefault(configurationOverride));
 
-        this.configuration = elseDefault(configurationOverride);
+        this.services = appManifestIfAny != null
+                ? new ServicesInstallerFromConfigurationAndAnnotation(getConfiguration()).getServices()
+                : servicesOverride != null
+                    ? servicesOverride
+                    : new ServicesInstallerFromConfiguration(getConfiguration()).getServices();
 
-        final String fixtureClassNamesCsv;
-        if(appManifest != null) {
-
-            putAppManifestKey(appManifest);
-            findAndRegisterTypes(appManifest);
-            specifyServicesAndRegisteredEntitiesUsing(appManifest);
-
-            List<Class<? extends FixtureScript>> fixtureClasses = appManifest.getFixtures();
-            fixtureClassNamesCsv = classNamesFrom(fixtureClasses);
-
-            overrideConfigurationUsing(appManifest);
-
-            this.services = createServices(configuration);
-
-        } else {
-            fixtureClassNamesCsv = classNamesFrom(fixturesOverride);
-
-            this.services = elseDefault(servicesOverride, configuration);
-        }
+        final String fixtureClassNamesCsv = classNamesFrom(
+                        appManifestIfAny != null ? appManifestIfAny.getFixtures() : fixturesOverride);
 
         putConfigurationProperty(FixturesInstallerFromConfiguration.FIXTURES, fixtureClassNamesCsv);
-        this.fixturesInstaller = new FixturesInstallerFromConfiguration(configuration);
 
         // integration tests ignore appManifest for authentication and authorization.
-        this.authenticationManager = createAuthenticationManager(configuration);
-        this.authorizationManager = createAuthorizationManager(configuration);
+        this.authenticationManager = createAuthenticationManager();
+        this.authorizationManager = createAuthorizationManager();
 
-        this.programmingModel = elseDefault(programmingModelOverride, configuration);
+        this.programmingModel = elseDefault(programmingModelOverride);
         this.metaModelValidator = elseDefault(metaModelValidatorOverride);
 
     }
 
-
-
-    //region > appManifest
-
-    private List<Object> createServices(final IsisConfigurationDefault configuration) {
-        final ServicesInstallerFromConfigurationAndAnnotation servicesInstaller =
-                new ServicesInstallerFromConfigurationAndAnnotation(configuration);
-        return servicesInstaller.getServices();
-    }
-
-
-    @Override
-    protected void doPutConfigurationProperty(final String key, final String value) {
-        // bit hacky :-(
-        IsisConfigurationDefault configurationDefault = this.configuration;
-        configurationDefault.put(key, value);
-    }
-
-    //endregion
-
     /**
      * Default will read <tt>isis.properties</tt> (and other optional property files) from the &quot;config&quot;
      * package on the current classpath.
@@ -136,33 +95,19 @@ public class IsisComponentProviderDefault2 extends IsisComponentProviderAbstract
                 : new IsisConfigurationDefault(ResourceStreamSourceContextLoaderClassPath.create("config"));
     }
 
-    private static List<Object> elseDefault(
-            final List<Object> servicesOverride,
-            final IsisConfigurationDefault configuration) {
-        return servicesOverride != null
-                ? servicesOverride
-                : createDefaultServices(configuration);
-    }
-
-    private static List<Object> createDefaultServices(
-            final IsisConfigurationDefault configuration) {
-        final ServicesInstallerFromConfiguration servicesInstaller = new ServicesInstallerFromConfiguration( configuration);
-        return servicesInstaller.getServices();
+    private ProgrammingModel elseDefault(final ProgrammingModel programmingModel) {
+        return programmingModel != null ? programmingModel : createDefaultProgrammingModel();
     }
 
+    // TODO: this is duplicating logic in JavaReflectorInstaller; need to unify.
+    private ProgrammingModel createDefaultProgrammingModel() {
 
-    private static ProgrammingModel elseDefault(final ProgrammingModel programmingModel, final IsisConfiguration configuration) {
-        return programmingModel != null
-                ? programmingModel
-                : createDefaultProgrammingModel(configuration);
-    }
-
-    // TODO: this is duplicating logic in JavaReflectorInstallerNoDecorators; need to unify.
-    private static ProgrammingModel createDefaultProgrammingModel(final IsisConfiguration configuration) {
         final ProgrammingModelFacetsJava5 programmingModel = new ProgrammingModelFacetsJava5();
 
+        final IsisConfigurationDefault configuration = getConfiguration();
         ProgrammingModel.Util.includeFacetFactories(configuration, programmingModel);
         ProgrammingModel.Util.excludeFacetFactories(configuration, programmingModel);
+
         return programmingModel;
     }
 
@@ -173,58 +118,21 @@ public class IsisComponentProviderDefault2 extends IsisComponentProviderAbstract
     }
 
     /**
-     * The standard authentication manager, configured with the default authenticator (allows all requests through).
+     * The standard authentication manager, configured with the 'bypass' authenticator (allows all requests through).
      */
-    private static AuthenticationManager createAuthenticationManager(final IsisConfiguration configuration) {
-        final AuthenticationManagerStandard authenticationManager = new AuthenticationManagerStandard(configuration);
-        Authenticator authenticator = new AuthenticatorBypass(configuration);
-        authenticationManager.addAuthenticator(authenticator);
+    private AuthenticationManager createAuthenticationManager() {
+        final AuthenticationManagerStandard authenticationManager =
+                new AuthenticationManagerStandard(getConfiguration());
+        authenticationManager.addAuthenticator(new AuthenticatorBypass(getConfiguration()));
         return authenticationManager;
     }
 
-    private static class AuthenticatorBypass extends AuthenticatorAbstract {
-
-        public AuthenticatorBypass(final IsisConfiguration configuration) {
-            super(configuration);
-        }
-
-        @Override
-        public boolean isValid(final AuthenticationRequest request) {
-            return true;
-        }
-
-        @Override
-        public boolean canAuthenticate(final Class<? extends AuthenticationRequest> authenticationRequestClass) {
-            return true;
-        }
-
-    }
-
-
-    /**
-     * The standard authorization manager, allowing all access.
-     */
-    private static AuthorizationManager createAuthorizationManager(final IsisConfiguration configuration) {
-        return new AuthorizationManagerStandard(configuration);
+    private AuthorizationManager createAuthorizationManager() {
+        return new AuthorizationManagerStandard(getConfiguration());
     }
 
 
     @Override
-    public DeploymentType getDeploymentType() {
-        return deploymentType;
-    }
-
-    @Override
-    public IsisConfigurationDefault getConfiguration() {
-        return configuration;
-    }
-
-    @Override
-    public FixturesInstaller provideFixturesInstaller()  {
-        return fixturesInstaller;
-    }
-
-    @Override
     public SpecificationLoader provideSpecificationLoader(
             final DeploymentType deploymentType,
             final ServicesInjectorSpi servicesInjector,
@@ -244,26 +152,4 @@ public class IsisComponentProviderDefault2 extends IsisComponentProviderAbstract
                         servicesInjector);
     }
 
-    @Override
-    public AuthenticationManager provideAuthenticationManager(DeploymentType deploymentType) {
-        return authenticationManager;
-    }
-
-    @Override
-    public AuthorizationManager provideAuthorizationManager(DeploymentType deploymentType) {
-        return authorizationManager;
-    }
-
-    @Override
-    public PersistenceSessionFactory providePersistenceSessionFactory(
-            DeploymentType deploymentType,
-            final ServicesInjectorSpi servicesInjector,
-            final SpecificationLoader specificationLoader) {
-        DataNucleusPersistenceMechanismInstaller installer =
-                new DataNucleusPersistenceMechanismInstaller(configuration);
-        return installer.createPersistenceSessionFactory(
-                deploymentType, servicesInjector
-        );
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
index dd8bb72..192750c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
@@ -19,112 +19,68 @@
 
 package org.apache.isis.core.runtime.systemusinginstallers;
 
-import java.util.Collection;
 import java.util.List;
 
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.factory.InstanceUtil;
-import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.runtime.authentication.AuthenticationManagerInstaller;
 import org.apache.isis.core.runtime.authorization.AuthorizationManagerInstaller;
 import org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration;
 import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
-import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
 import org.apache.isis.core.runtime.services.ServicesInstaller;
 import org.apache.isis.core.runtime.services.ServicesInstallerFromConfigurationAndAnnotation;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.SystemConstants;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
 
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
 import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.CoreMatchers.nullValue;
 
-public class IsisComponentProviderUsingInstallers extends IsisComponentProviderAbstract {
+public class IsisComponentProviderUsingInstallers extends IsisComponentProvider {
 
-    private final InstallerLookup installerLookup;
-
-    private SpecificationLoaderInstaller reflectorInstaller;
-    private PersistenceMechanismInstaller persistenceMechanismInstaller;
 
     public IsisComponentProviderUsingInstallers(
             final DeploymentType deploymentType,
             final AppManifest appManifestIfAny,
             final InstallerLookup installerLookup) {
-        super(deploymentType, appManifestIfAny(appManifestIfAny, installerLookup));
-
-        ensureThatArg(deploymentType, is(not(nullValue())));
-        ensureThatArg(installerLookup, is(not(nullValue())));
-
-        this.installerLookup = installerLookup;
-
-        if(appManifest != null) {
+        super(deploymentType,
+                appManifestIfAny(appManifestIfAny, installerLookup),
+                configurationFrom(installerLookup));
 
-            putAppManifestKey(appManifest);
-            findAndRegisterTypes(appManifest);
-            specifyServicesAndRegisteredEntitiesUsing(appManifest);
+        if(getAppManifestIfAny() != null) {
 
-            putConfigurationProperty(SystemConstants.SERVICES_INSTALLER_KEY, ServicesInstallerFromConfigurationAndAnnotation.NAME);
-
-            final String authenticationMechanism = appManifest.getAuthenticationMechanism();
+            final String authenticationMechanism = getAppManifestIfAny().getAuthenticationMechanism();
             putConfigurationProperty(SystemConstants.AUTHENTICATION_INSTALLER_KEY, authenticationMechanism);
 
-            final String authorizationMechanism = appManifest.getAuthorizationMechanism();
+            final String authorizationMechanism = getAppManifestIfAny().getAuthorizationMechanism();
             putConfigurationProperty(SystemConstants.AUTHORIZATION_INSTALLER_KEY, authorizationMechanism);
+        }
 
-            List<Class<? extends FixtureScript>> fixtureClasses = appManifest.getFixtures();
+        if(getAppManifestIfAny() != null) {
+            List<Class<? extends FixtureScript>> fixtureClasses = getAppManifestIfAny().getFixtures();
             final String fixtureClassNamesCsv = classNamesFrom(fixtureClasses);
             putConfigurationProperty(FixturesInstallerFromConfiguration.FIXTURES, fixtureClassNamesCsv);
-
-            overrideConfigurationUsing(appManifest);
         }
 
         // loading installers causes the configuration to be appended to successively
-        AuthenticationManagerInstaller authenticationInstaller = this.installerLookup.authenticationManagerInstaller(
-                configProperty(SystemConstants.AUTHENTICATION_INSTALLER_KEY));
+        final String requestedAuthencn = getConfiguration().getString(SystemConstants.AUTHENTICATION_INSTALLER_KEY);
+        AuthenticationManagerInstaller authenticationInstaller =
+                installerLookup.authenticationManagerInstaller(requestedAuthencn);
 
-        AuthorizationManagerInstaller authorizationInstaller = this.installerLookup.authorizationManagerInstaller(
-                configProperty(SystemConstants.AUTHORIZATION_INSTALLER_KEY));
+        final String requestedAuthorzn = getConfiguration().getString(SystemConstants.AUTHORIZATION_INSTALLER_KEY);
+        AuthorizationManagerInstaller authorizationInstaller =
+                installerLookup.authorizationManagerInstaller(requestedAuthorzn);
 
-        this.fixturesInstaller = this.installerLookup.fixturesInstaller(
-                configProperty(SystemConstants.FIXTURES_INSTALLER_KEY));
-
-        ServicesInstaller servicesInstaller = this.installerLookup.servicesInstaller(null);
-
-        // although there is only one implementation of PersistenceMechanismInstaller, we still do the lookup
-        // because this will add the persistor_datanucleus.properties and persistor.properties to the set of
-        // config files from which we read configuration properties.
-        persistenceMechanismInstaller = this.installerLookup.persistenceMechanismInstaller(
-                configProperty(SystemConstants.OBJECT_PERSISTOR_INSTALLER_KEY)
-        );
-
-        reflectorInstaller = this.installerLookup.reflectorInstaller(
-                configProperty(SystemConstants.REFLECTOR_KEY));
+        ServicesInstaller servicesInstaller = new ServicesInstallerFromConfigurationAndAnnotation(getConfiguration());
 
         // ensure we were able to load all components via InstallerLookup (fail fast)
         ensureThatState(authenticationInstaller, is(not(nullValue())),
                 "authenticationInstaller could not be looked up");
         ensureThatState(authorizationInstaller, is(not(nullValue())),
                 "authorizationInstaller could not be looked up");
-        ensureThatState(servicesInstaller, is(not(nullValue())),
-                "servicesInstaller could not be looked up");
-        ensureThatState(fixturesInstaller, is(not(nullValue())),
-                "fixtureInstaller could not be looked up");
-        ensureThatState(persistenceMechanismInstaller, is(not(nullValue())),
-                "persistenceMechanismInstaller could not be looked up");
-        ensureThatState(reflectorInstaller, is(not(nullValue())),
-                "reflectorInstaller could not be looked up");
-
-
-        // capture the final configuration once all components have been loaded
-        configuration = this.installerLookup.getConfiguration();
 
         // eagerly calculate
         authenticationManager = authenticationInstaller.createAuthenticationManager();
@@ -146,48 +102,23 @@ public class IsisComponentProviderUsingInstallers extends IsisComponentProviderA
         if(appManifestFromConstructor != null) {
             return appManifestFromConstructor;
         }
-        final String appManifestFromConfiguration = installerLookup.getConfiguration().getString(SystemConstants.APP_MANIFEST_KEY);
-        return appManifestFromConfiguration != null? InstanceUtil.createInstance(appManifestFromConfiguration, AppManifest.class): null;
+        final IsisConfigurationDefault configuration = configurationFrom(installerLookup);
+        final String appManifestFromConfiguration = configuration.getString(SystemConstants.APP_MANIFEST_KEY);
+        return appManifestFromConfiguration != null
+                ? InstanceUtil.createInstance(appManifestFromConfiguration, AppManifest.class)
+                : null;
     }
 
-    protected void doPutConfigurationProperty(final String key, final String value) {
-        IsisConfigurationDefault configuration = (IsisConfigurationDefault) this.installerLookup.getConfiguration();
-        configuration.put(key, value);
-    }
-    //endregion
-
-
-
-    @Override
-    public SpecificationLoader provideSpecificationLoader(
-            final DeploymentType deploymentType,
-            final ServicesInjectorSpi servicesInjector,
-            final Collection<MetaModelRefiner> metaModelRefiners) {
-        return reflectorInstaller.createReflector(deploymentType.getDeploymentCategory(), metaModelRefiners,
-                servicesInjector);
-    }
 
+    //endregion
 
-    @Override
-    public PersistenceSessionFactory providePersistenceSessionFactory(
-            final DeploymentType deploymentType,
-            final ServicesInjectorSpi servicesInjector,
-            final SpecificationLoader specificationLoader) {
-        return persistenceMechanismInstaller.createPersistenceSessionFactory(
-                    deploymentType,
-                servicesInjector);
-    }
 
     //region > helpers
 
-    /**
-     * Returns the current value of the configuration property.
-     *
-     * Note that this may change over time as new installers are loaded (= new config property files).
-     */
-    private String configProperty(final String key) {
-        return this.installerLookup.getConfiguration().getString(key);
+    private static IsisConfigurationDefault configurationFrom(final InstallerLookup installerLookup) {
+        return installerLookup.getConfiguration();
     }
+
     //endregion
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/b6dc190b/core/runtime/src/main/resources/org/apache/isis/core/runtime/installer-registry.properties
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/resources/org/apache/isis/core/runtime/installer-registry.properties b/core/runtime/src/main/resources/org/apache/isis/core/runtime/installer-registry.properties
index 7ee6aef..7f9efeb 100644
--- a/core/runtime/src/main/resources/org/apache/isis/core/runtime/installer-registry.properties
+++ b/core/runtime/src/main/resources/org/apache/isis/core/runtime/installer-registry.properties
@@ -16,8 +16,6 @@
 #  under the License.
 
 
-# ObjectReflectorInstaller
-org.apache.isis.progmodels.dflt.JavaReflectorInstaller                                  # "java"
 
 # AuthenticationManagerInstaller
 org.apache.isis.core.security.authentication.BypassAuthenticationManagerInstaller       # "bypass"
@@ -27,14 +25,4 @@ org.apache.isis.security.shiro.authentication.ShiroAuthenticationManagerInstalle
 org.apache.isis.core.security.authorization.BypassAuthorizationManagerInstaller         # "bypass"
 org.apache.isis.security.shiro.authorization.ShiroAuthorizationManagerInstaller         # "shiro"
 
-# FixturesInstaller
-org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration                # "configuration"
-
-# ServicesInstaller
-org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration                # "configuration"
-org.apache.isis.core.runtime.services.ServicesInstallerFromAnnotation                   # "annotation"
-org.apache.isis.core.runtime.services.ServicesInstallerFromConfigurationAndAnnotation   # "configuration-and-annotation"
-
-# PersistenceMechanismInstaller
-org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller    # datanucleus
 


[25/30] isis git commit: ISIS-1409: removing PersistenceSessionServiceAware.

Posted by da...@apache.org.
ISIS-1409: removing PersistenceSessionServiceAware.


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

Branch: refs/heads/ISIS-1408
Commit: fbf1770f4fb5ef5ce3b068565b19105a790c0f39
Parents: a2a9f51
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri May 20 00:06:22 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri May 20 00:06:22 2016 +0100

----------------------------------------------------------------------
 ...sFacetFromBoundedMarkerInterfaceFactory.java |  13 +-
 .../DomainObjectAnnotationFacetFactory.java     |  12 +-
 .../bookmarks/BookmarkServiceDefault.java       | 144 ----------
 .../BookmarkServiceInternalDefault.java         | 129 +++++++++
 .../container/DomainObjectContainerDefault.java |  15 +-
 .../services/factory/FactoryServiceDefault.java | 107 --------
 .../factory/FactoryServiceInternalDefault.java  | 102 +++++++
 .../PersistenceSessionServiceAware.java         |  29 --
 ...rsistenceSessionServiceInternalAbstract.java |   4 -
 .../repository/RepositoryServiceDefault.java    | 270 -------------------
 .../RepositoryServiceInternalDefault.java       | 265 ++++++++++++++++++
 .../xactn/TransactionServiceDefault.java        |  51 ----
 .../TransactionServiceInternalDefault.java      |  48 ++++
 ...RepositoryServiceDefaultTest_allMatches.java |   4 +-
 .../persistence/PersistenceSessionInternal.java |  11 +-
 .../core/wrapper/WrapperFactoryDefault.java     |  21 +-
 16 files changed, 571 insertions(+), 654 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
index 6c8a54f..2e46eb3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
@@ -22,16 +22,15 @@ package org.apache.isis.core.metamodel.facets.object.choices.boundedmarkerifc;
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.marker.Bounded;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 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.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class ChoicesFacetFromBoundedMarkerInterfaceFactory extends FacetFactoryAbstract implements
-        PersistenceSessionServiceAware {
+public class ChoicesFacetFromBoundedMarkerInterfaceFactory extends FacetFactoryAbstract {
 
     private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
@@ -59,7 +58,9 @@ public class ChoicesFacetFromBoundedMarkerInterfaceFactory extends FacetFactoryA
     }
 
     @Override
-    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        this.persistenceSessionServiceInternal = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index ea97b8d..dfb8f24 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -81,9 +81,8 @@ import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObjectFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
@@ -96,7 +95,7 @@ import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapabl
 
 public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         implements AdapterManagerAware,
-        MetaModelValidatorRefiner, PersistenceSessionServiceAware,
+        MetaModelValidatorRefiner,
         PostConstructMethodCache {
 
     private final MetaModelValidatorForDeprecatedAnnotation auditedValidator = new MetaModelValidatorForDeprecatedAnnotation(Audited.class);
@@ -501,6 +500,9 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         boundedValidator.setConfiguration(configuration);
         immutableValidator.setConfiguration(configuration);
         objectTypeValidator.setConfiguration(configuration);
+
+        this.persistenceSessionServiceInternal =
+                servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
 
@@ -509,10 +511,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         this.adapterManager = adapterManager;
     }
 
-    @Override
-    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
-    }
 
 
     // //////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
deleted file mode 100644
index 5584c57..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
+++ /dev/null
@@ -1,144 +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.services.bookmarks;
-
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkHolder;
-import org.apache.isis.applib.services.bookmark.BookmarkService2;
-import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
-import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
-
-/**
- * This service enables a serializable &quot;bookmark&quot; to be created for an entity.
- *
- * <p>
- * This implementation has no UI and there are no other implementations of the service API, and so it annotated
- * with {@link org.apache.isis.applib.annotation.DomainService}.  Because this class is implemented in core, this means
- * that it is automatically registered and available for use; no further configuration is required.
- */
-@DomainService(
-        nature = NatureOfService.DOMAIN
-)
-public class BookmarkServiceDefault implements BookmarkService2,
-        PersistenceSessionServiceAware {
-
-    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
-
-    // //////////////////////////////////////
-
-    @Programmatic
-    @Override
-    public Object lookup(
-            final BookmarkHolder bookmarkHolder,
-            final FieldResetPolicy fieldResetPolicy) {
-        Bookmark bookmark = bookmarkHolder.bookmark();
-        return bookmark != null? lookup(bookmark, fieldResetPolicy): null;
-    }
-
-    @Programmatic
-    @Override
-    public Object lookup(final BookmarkHolder bookmarkHolder) {
-        return lookup(bookmarkHolder, FieldResetPolicy.RESET);
-    }
-
-    // //////////////////////////////////////
-
-    @Programmatic
-    @Override
-    public Object lookup(
-            final Bookmark bookmark,
-            final FieldResetPolicy fieldResetPolicy) {
-        if(bookmark == null) {
-            return null;
-        }
-        try {
-            return persistenceSessionServiceInternal.lookup(bookmark, fieldResetPolicy);
-        } catch(ObjectNotFoundException ex) {
-            return null;
-        }
-    }
-
-    @Programmatic
-    @Override
-    public Object lookup(final Bookmark bookmark) {
-        return lookup(bookmark, FieldResetPolicy.RESET);
-    }
-
-    // //////////////////////////////////////
-
-    @SuppressWarnings("unchecked")
-    @Programmatic
-    @Override
-    public <T> T lookup(
-            final Bookmark bookmark,
-            final FieldResetPolicy fieldResetPolicy,
-            Class<T> cls) {
-        return (T) lookup(bookmark, fieldResetPolicy);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Programmatic
-    @Override
-    public <T> T lookup(final Bookmark bookmark, Class<T> cls) {
-        return (T) lookup(bookmark, FieldResetPolicy.RESET, cls);
-    }
-
-    // //////////////////////////////////////
-
-    @Programmatic
-    @Override
-    public Bookmark bookmarkFor(final Object domainObject) {
-        if(domainObject == null) {
-            return null;
-        }
-        return persistenceSessionServiceInternal.bookmarkFor(unwrapped(domainObject));
-    }
-
-    private Object unwrapped(Object domainObject) {
-        return wrapperFactory != null ? wrapperFactory.unwrap(domainObject) : domainObject;
-    }
-
-    // //////////////////////////////////////
-
-    @Programmatic
-    @Override
-    public Bookmark bookmarkFor(Class<?> cls, String identifier) {
-        return persistenceSessionServiceInternal.bookmarkFor(cls, identifier);
-    }
-
-    // //////////////////////////////////////
-
-
-
-
-    @Override
-    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
-    }
-
-
-    @javax.inject.Inject
-    private WrapperFactory wrapperFactory;
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java
new file mode 100644
index 0000000..7eb86f5
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java
@@ -0,0 +1,129 @@
+/*
+ *  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.services.bookmarks;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkHolder;
+import org.apache.isis.applib.services.bookmark.BookmarkService2;
+import org.apache.isis.applib.services.wrapper.WrapperFactory;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
+
+/**
+ * This service enables a serializable &quot;bookmark&quot; to be created for an entity.
+ *
+ * <p>
+ * This implementation has no UI and there are no other implementations of the service API, and so it annotated
+ * with {@link org.apache.isis.applib.annotation.DomainService}.  Because this class is implemented in core, this means
+ * that it is automatically registered and available for use; no further configuration is required.
+ */
+@DomainService(
+        nature = NatureOfService.DOMAIN
+)
+public class BookmarkServiceInternalDefault implements BookmarkService2 {
+
+
+    @Programmatic
+    @Override
+    public Object lookup(
+            final BookmarkHolder bookmarkHolder,
+            final FieldResetPolicy fieldResetPolicy) {
+        Bookmark bookmark = bookmarkHolder.bookmark();
+        return bookmark != null? lookup(bookmark, fieldResetPolicy): null;
+    }
+
+    @Programmatic
+    @Override
+    public Object lookup(final BookmarkHolder bookmarkHolder) {
+        return lookup(bookmarkHolder, FieldResetPolicy.RESET);
+    }
+
+
+    @Programmatic
+    @Override
+    public Object lookup(
+            final Bookmark bookmark,
+            final FieldResetPolicy fieldResetPolicy) {
+        if(bookmark == null) {
+            return null;
+        }
+        try {
+            return persistenceSessionServiceInternal.lookup(bookmark, fieldResetPolicy);
+        } catch(ObjectNotFoundException ex) {
+            return null;
+        }
+    }
+
+    @Programmatic
+    @Override
+    public Object lookup(final Bookmark bookmark) {
+        return lookup(bookmark, FieldResetPolicy.RESET);
+    }
+
+
+    @SuppressWarnings("unchecked")
+    @Programmatic
+    @Override
+    public <T> T lookup(
+            final Bookmark bookmark,
+            final FieldResetPolicy fieldResetPolicy,
+            Class<T> cls) {
+        return (T) lookup(bookmark, fieldResetPolicy);
+    }
+
+    @SuppressWarnings("unchecked")
+    @Programmatic
+    @Override
+    public <T> T lookup(final Bookmark bookmark, Class<T> cls) {
+        return (T) lookup(bookmark, FieldResetPolicy.RESET, cls);
+    }
+
+
+    @Programmatic
+    @Override
+    public Bookmark bookmarkFor(final Object domainObject) {
+        if(domainObject == null) {
+            return null;
+        }
+        return persistenceSessionServiceInternal.bookmarkFor(unwrapped(domainObject));
+    }
+
+    private Object unwrapped(Object domainObject) {
+        return wrapperFactory != null ? wrapperFactory.unwrap(domainObject) : domainObject;
+    }
+
+
+    @Programmatic
+    @Override
+    public Bookmark bookmarkFor(Class<?> cls, String identifier) {
+        return persistenceSessionServiceInternal.bookmarkFor(cls, identifier);
+    }
+
+
+
+    @javax.inject.Inject
+    PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+
+    @javax.inject.Inject
+    private WrapperFactory wrapperFactory;
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/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 424bd78..c00ab71 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
@@ -60,16 +60,15 @@ import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 @DomainService(nature = NatureOfService.DOMAIN)
 public class DomainObjectContainerDefault
-        implements DomainObjectContainer, PersistenceSessionServiceAware, AdapterManagerAware, ExceptionRecognizer {
+        implements DomainObjectContainer, AdapterManagerAware, ExceptionRecognizer {
 
 
     //region > titleOf
@@ -649,11 +648,9 @@ public class DomainObjectContainerDefault
 
     //region > framework dependencies
 
-    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
     private AdapterManager adapterManager;
 
 
-
     protected AdapterManager getAdapterManager() {
         return adapterManager;
     }
@@ -668,11 +665,6 @@ public class DomainObjectContainerDefault
         return persistenceSessionServiceInternal;
     }
 
-    @Programmatic
-    @Override
-    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
-    }
 
 
 
@@ -710,6 +702,9 @@ public class DomainObjectContainerDefault
     @Inject
     WrapperFactory wrapperFactory;
 
+    @javax.inject.Inject
+    PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+
     //endregion
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
deleted file mode 100644
index ae64445..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.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.services.factory;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.NonRecoverableException;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.services.factory.FactoryService;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-
-@DomainService(
-        nature = NatureOfService.DOMAIN
-)
-public class FactoryServiceDefault implements FactoryService, PersistenceSessionServiceAware {
-
-
-    @Programmatic
-    @Override
-    @SuppressWarnings("unchecked")
-    public <T> T instantiate(final Class<T> domainClass) {
-        final ObjectSpecification spec = specificationLoader.loadSpecification(domainClass);
-        final ObjectAdapter adapter = doCreateTransientInstance(spec);
-        return (T) adapter.getObject();
-    }
-
-    /**
-     * Factored out as a potential hook method for subclasses.
-     */
-    protected ObjectAdapter doCreateTransientInstance(final ObjectSpecification spec) {
-        return persistenceSessionServiceInternal.createTransientInstance(spec);
-    }
-
-
-
-    @Programmatic
-    @Override
-    public <T> T mixin(final Class<T> mixinClass, final Object mixedIn) {
-        final ObjectSpecification objectSpec = specificationLoader.loadSpecification(mixinClass);
-        final MixinFacet mixinFacet = objectSpec.getFacet(MixinFacet.class);
-        if(mixinFacet == null) {
-            throw new NonRecoverableException("Class '" + mixinClass.getName() + " is not a mixin");
-        }
-        if(!mixinFacet.isMixinFor(mixedIn.getClass())) {
-            throw new NonRecoverableException("Mixin class '" + mixinClass.getName() + " is not a mixin for supplied object '" + mixedIn + "'");
-        }
-        final Constructor<?>[] constructors = mixinClass.getConstructors();
-        for (Constructor<?> constructor : constructors) {
-            if(constructor.getParameterTypes().length == 1 &&
-                    constructor.getParameterTypes()[0].isAssignableFrom(mixedIn.getClass())) {
-                final Object mixin;
-                try {
-                    mixin = constructor.newInstance(mixedIn);
-                    return (T) serviceRegistry.injectServicesInto(mixin);
-                } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
-                    throw new NonRecoverableException(e);
-                }
-            }
-        }
-        // should never get here because of previous guards
-        throw new NonRecoverableException( String.format(
-                "Failed to locate constructor in %s to instantiate using %s", mixinClass.getName(), mixedIn));
-    }
-
-    @Inject
-    SpecificationLoader specificationLoader;
-
-    @Inject
-    ServiceRegistry serviceRegistry;
-
-    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
-    @Override
-    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-
-        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceInternalDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceInternalDefault.java
new file mode 100644
index 0000000..9198525
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceInternalDefault.java
@@ -0,0 +1,102 @@
+/*
+ *  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.services.factory;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.NonRecoverableException;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.services.factory.FactoryService;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+
+@DomainService(
+        nature = NatureOfService.DOMAIN
+)
+public class FactoryServiceInternalDefault implements FactoryService {
+
+
+    @Programmatic
+    @Override
+    @SuppressWarnings("unchecked")
+    public <T> T instantiate(final Class<T> domainClass) {
+        final ObjectSpecification spec = specificationLoader.loadSpecification(domainClass);
+        final ObjectAdapter adapter = doCreateTransientInstance(spec);
+        return (T) adapter.getObject();
+    }
+
+    /**
+     * Factored out as a potential hook method for subclasses.
+     */
+    protected ObjectAdapter doCreateTransientInstance(final ObjectSpecification spec) {
+        return persistenceSessionServiceInternal.createTransientInstance(spec);
+    }
+
+
+
+    @Programmatic
+    @Override
+    public <T> T mixin(final Class<T> mixinClass, final Object mixedIn) {
+        final ObjectSpecification objectSpec = specificationLoader.loadSpecification(mixinClass);
+        final MixinFacet mixinFacet = objectSpec.getFacet(MixinFacet.class);
+        if(mixinFacet == null) {
+            throw new NonRecoverableException("Class '" + mixinClass.getName() + " is not a mixin");
+        }
+        if(!mixinFacet.isMixinFor(mixedIn.getClass())) {
+            throw new NonRecoverableException("Mixin class '" + mixinClass.getName() + " is not a mixin for supplied object '" + mixedIn + "'");
+        }
+        final Constructor<?>[] constructors = mixinClass.getConstructors();
+        for (Constructor<?> constructor : constructors) {
+            if(constructor.getParameterTypes().length == 1 &&
+                    constructor.getParameterTypes()[0].isAssignableFrom(mixedIn.getClass())) {
+                final Object mixin;
+                try {
+                    mixin = constructor.newInstance(mixedIn);
+                    return (T) serviceRegistry.injectServicesInto(mixin);
+                } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
+                    throw new NonRecoverableException(e);
+                }
+            }
+        }
+        // should never get here because of previous guards
+        throw new NonRecoverableException( String.format(
+                "Failed to locate constructor in %s to instantiate using %s", mixinClass.getName(), mixedIn));
+    }
+
+    @Inject
+    SpecificationLoader specificationLoader;
+
+    @Inject
+    ServiceRegistry serviceRegistry;
+
+    @javax.inject.Inject
+    PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceAware.java
deleted file mode 100644
index 29d939a..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceAware.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.services.persistsession;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-public interface PersistenceSessionServiceAware {
-
-    @Programmatic
-    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java
index 60714af..f10cc90 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java
@@ -26,10 +26,6 @@ public abstract class PersistenceSessionServiceInternalAbstract implements Persi
             final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
             cast.setAdapterManager(this);
         }
-        if (PersistenceSessionServiceAware.class.isAssignableFrom(candidate.getClass())) {
-            final PersistenceSessionServiceAware cast = PersistenceSessionServiceAware.class.cast(candidate);
-            cast.setPersistenceSessionService(this);
-        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefault.java
deleted file mode 100644
index 966bdef..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefault.java
+++ /dev/null
@@ -1,270 +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.services.repository;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.PostConstruct;
-
-import com.google.common.base.Predicate;
-
-import org.apache.isis.applib.PersistFailedException;
-import org.apache.isis.applib.RepositoryException;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.applib.query.QueryFindAllInstances;
-import org.apache.isis.applib.services.factory.FactoryService;
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
-
-@DomainService(
-        nature = NatureOfService.DOMAIN
-)
-public class RepositoryServiceDefault
-        implements RepositoryService,
-            PersistenceSessionServiceAware, AdapterManagerAware {
-
-
-
-    private boolean autoFlush;
-
-    @Programmatic
-    @PostConstruct
-    public void init(Map<String, String> properties) {
-        final boolean disableAutoFlush = Boolean.parseBoolean(properties.get(KEY_DISABLE_AUTOFLUSH));
-        this.autoFlush = !disableAutoFlush;
-    }
-
-
-    // //////////////////////////////////////
-
-    @Programmatic
-    @Override
-    public <T> T instantiate(final Class<T> domainClass) {
-        return factoryService.instantiate(domainClass);
-    }
-
-    // //////////////////////////////////////
-
-    @Programmatic
-    @Override
-    public boolean isPersistent(final Object domainObject) {
-        final ObjectAdapter adapter = adapterManager.adapterFor(unwrapped(domainObject));
-        return adapter.representsPersistent();
-    }
-
-    @Programmatic
-    @Override
-    public void persist(final Object object) {
-        if (isPersistent(object)) {
-            return;
-        }
-        final ObjectAdapter adapter = adapterManager.adapterFor(unwrapped(object));
-
-        if(adapter == null) {
-            throw new PersistFailedException("Object not known to framework; instantiate using newTransientInstance(...) rather than simply new'ing up.");
-        }
-        if (adapter.isParentedCollection()) {
-            // TODO check aggregation is supported
-            return;
-        }
-        if (isPersistent(object)) {
-            throw new PersistFailedException("Object already persistent; OID=" + adapter.getOid());
-        }
-        persistenceSessionServiceInternal.makePersistent(adapter);
-    }
-    
-    @Programmatic
-    @Override
-    public void persistAndFlush(final Object object) {
-	persist(object);
-	transactionService.flushTransaction();
-    }
-
-    @Override
-    @Programmatic
-    public void remove(final Object domainObject) {
-        removeIfNotAlready(domainObject);
-    }
-
-    private void removeIfNotAlready(final Object object) {
-        if (!isPersistent(object)) {
-            return;
-        }
-        if (object == null) {
-            throw new IllegalArgumentException("Must specify a reference for disposing an object");
-        }
-        final ObjectAdapter adapter = adapterManager.adapterFor(unwrapped(object));
-        if (!isPersistent(object)) {
-            throw new RepositoryException("Object not persistent: " + adapter);
-        }
-
-        persistenceSessionServiceInternal.remove(adapter);
-    }
-    
-    @Override
-    @Programmatic
-    public void removeAndFlush(final Object domainObject) {
-        remove(domainObject);
-	transactionService.flushTransaction();
-    }
-
-
-    // //////////////////////////////////////
-
-
-    //region > allInstances, allMatches, uniqueMatch, firstMatch
-
-    @Programmatic
-    @Override
-    public <T> List<T> allInstances(final Class<T> type, long... range) {
-        return allMatches(new QueryFindAllInstances<T>(type, range));
-    }
-
-    // //////////////////////////////////////
-
-    @Programmatic
-    @Override
-    public <T> List<T> allMatches(final Class<T> cls, final Predicate<? super T> predicate, long... range) {
-        final List<T> allInstances = allInstances(cls, range);
-        final List<T> filtered = new ArrayList<T>();
-        for (final T instance : allInstances) {
-            if (predicate.apply(instance)) {
-                filtered.add(instance);
-            }
-        }
-        return filtered;
-    }
-
-
-    @Programmatic
-    @Override
-    public <T> List<T> allMatches(final Query<T> query) {
-        if(autoFlush) {
-            transactionService.flushTransaction();
-        }
-        return submitQuery(query);
-    }
-
-    <T> List<T> submitQuery(final Query<T> query) {
-        final List<ObjectAdapter> allMatching = persistenceSessionServiceInternal.allMatchingQuery(query);
-        return ObjectAdapter.Util.unwrapT(allMatching);
-    }
-
-
-    // //////////////////////////////////////
-
-
-    @Programmatic
-    @Override
-    public <T> T uniqueMatch(final Class<T> type, final Predicate<T> predicate) {
-        final List<T> instances = allMatches(type, predicate, 0, 2); // No need to fetch more than 2.
-        if (instances.size() > 1) {
-            throw new RepositoryException("Found more than one instance of " + type + " matching filter " + predicate);
-        }
-        return firstInstanceElseNull(instances);
-    }
-
-
-    @Programmatic
-    @Override
-    public <T> T uniqueMatch(final Query<T> query) {
-        final List<T> instances = allMatches(query); // No need to fetch more than 2.
-        if (instances.size() > 1) {
-            throw new RepositoryException("Found more that one instance for query:" + query.getDescription());
-        }
-        return firstInstanceElseNull(instances);
-    }
-
-
-    // //////////////////////////////////////
-
-
-    @Programmatic
-    @Override
-    public <T> T firstMatch(final Class<T> cls, final Predicate<T> predicate) {
-        final List<T> allInstances = allInstances(cls); // Have to fetch all, as matching is done in next loop
-        for (final T instance : allInstances) {
-            if (predicate.apply(instance)) {
-                return instance;
-            }
-        }
-        return null;
-    }
-
-
-    @Programmatic
-    @Override
-    @SuppressWarnings("unchecked")
-    public <T> T firstMatch(final Query<T> query) {
-        if(autoFlush) {
-            transactionService.flushTransaction();
-        }
-        final ObjectAdapter firstMatching = persistenceSessionServiceInternal.firstMatchingQuery(query);
-        return (T) ObjectAdapter.Util.unwrap(firstMatching);
-    }
-
-
-    // //////////////////////////////////////
-
-
-    private static <T> T firstInstanceElseNull(final List<T> instances) {
-        return instances.size() == 0 ? null : instances.get(0);
-    }
-
-
-    private Object unwrapped(Object domainObject) {
-        return wrapperFactory != null ? wrapperFactory.unwrap(domainObject) : domainObject;
-    }
-
-
-    @javax.inject.Inject
-    FactoryService factoryService;
-
-    @javax.inject.Inject
-    WrapperFactory wrapperFactory;
-
-    @javax.inject.Inject
-    TransactionService transactionService;
-
-    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
-    @Override
-    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-
-        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
-    }
-
-    private AdapterManager adapterManager;
-    @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
new file mode 100644
index 0000000..d8d6521
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
@@ -0,0 +1,265 @@
+/*
+ *  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.services.repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+
+import com.google.common.base.Predicate;
+
+import org.apache.isis.applib.PersistFailedException;
+import org.apache.isis.applib.RepositoryException;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.query.Query;
+import org.apache.isis.applib.query.QueryFindAllInstances;
+import org.apache.isis.applib.services.factory.FactoryService;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.services.wrapper.WrapperFactory;
+import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+
+@DomainService(
+        nature = NatureOfService.DOMAIN
+)
+public class RepositoryServiceInternalDefault
+        implements RepositoryService,
+        AdapterManagerAware {
+
+
+
+    private boolean autoFlush;
+
+    @Programmatic
+    @PostConstruct
+    public void init(Map<String, String> properties) {
+        final boolean disableAutoFlush = Boolean.parseBoolean(properties.get(KEY_DISABLE_AUTOFLUSH));
+        this.autoFlush = !disableAutoFlush;
+    }
+
+
+    // //////////////////////////////////////
+
+    @Programmatic
+    @Override
+    public <T> T instantiate(final Class<T> domainClass) {
+        return factoryService.instantiate(domainClass);
+    }
+
+    // //////////////////////////////////////
+
+    @Programmatic
+    @Override
+    public boolean isPersistent(final Object domainObject) {
+        final ObjectAdapter adapter = adapterManager.adapterFor(unwrapped(domainObject));
+        return adapter.representsPersistent();
+    }
+
+    @Programmatic
+    @Override
+    public void persist(final Object object) {
+        if (isPersistent(object)) {
+            return;
+        }
+        final ObjectAdapter adapter = adapterManager.adapterFor(unwrapped(object));
+
+        if(adapter == null) {
+            throw new PersistFailedException("Object not known to framework; instantiate using newTransientInstance(...) rather than simply new'ing up.");
+        }
+        if (adapter.isParentedCollection()) {
+            // TODO check aggregation is supported
+            return;
+        }
+        if (isPersistent(object)) {
+            throw new PersistFailedException("Object already persistent; OID=" + adapter.getOid());
+        }
+        persistenceSessionServiceInternal.makePersistent(adapter);
+    }
+    
+    @Programmatic
+    @Override
+    public void persistAndFlush(final Object object) {
+	persist(object);
+	transactionService.flushTransaction();
+    }
+
+    @Override
+    @Programmatic
+    public void remove(final Object domainObject) {
+        removeIfNotAlready(domainObject);
+    }
+
+    private void removeIfNotAlready(final Object object) {
+        if (!isPersistent(object)) {
+            return;
+        }
+        if (object == null) {
+            throw new IllegalArgumentException("Must specify a reference for disposing an object");
+        }
+        final ObjectAdapter adapter = adapterManager.adapterFor(unwrapped(object));
+        if (!isPersistent(object)) {
+            throw new RepositoryException("Object not persistent: " + adapter);
+        }
+
+        persistenceSessionServiceInternal.remove(adapter);
+    }
+    
+    @Override
+    @Programmatic
+    public void removeAndFlush(final Object domainObject) {
+        remove(domainObject);
+	transactionService.flushTransaction();
+    }
+
+
+    // //////////////////////////////////////
+
+
+    //region > allInstances, allMatches, uniqueMatch, firstMatch
+
+    @Programmatic
+    @Override
+    public <T> List<T> allInstances(final Class<T> type, long... range) {
+        return allMatches(new QueryFindAllInstances<T>(type, range));
+    }
+
+    // //////////////////////////////////////
+
+    @Programmatic
+    @Override
+    public <T> List<T> allMatches(final Class<T> cls, final Predicate<? super T> predicate, long... range) {
+        final List<T> allInstances = allInstances(cls, range);
+        final List<T> filtered = new ArrayList<T>();
+        for (final T instance : allInstances) {
+            if (predicate.apply(instance)) {
+                filtered.add(instance);
+            }
+        }
+        return filtered;
+    }
+
+
+    @Programmatic
+    @Override
+    public <T> List<T> allMatches(final Query<T> query) {
+        if(autoFlush) {
+            transactionService.flushTransaction();
+        }
+        return submitQuery(query);
+    }
+
+    <T> List<T> submitQuery(final Query<T> query) {
+        final List<ObjectAdapter> allMatching = persistenceSessionServiceInternal.allMatchingQuery(query);
+        return ObjectAdapter.Util.unwrapT(allMatching);
+    }
+
+
+    // //////////////////////////////////////
+
+
+    @Programmatic
+    @Override
+    public <T> T uniqueMatch(final Class<T> type, final Predicate<T> predicate) {
+        final List<T> instances = allMatches(type, predicate, 0, 2); // No need to fetch more than 2.
+        if (instances.size() > 1) {
+            throw new RepositoryException("Found more than one instance of " + type + " matching filter " + predicate);
+        }
+        return firstInstanceElseNull(instances);
+    }
+
+
+    @Programmatic
+    @Override
+    public <T> T uniqueMatch(final Query<T> query) {
+        final List<T> instances = allMatches(query); // No need to fetch more than 2.
+        if (instances.size() > 1) {
+            throw new RepositoryException("Found more that one instance for query:" + query.getDescription());
+        }
+        return firstInstanceElseNull(instances);
+    }
+
+
+    // //////////////////////////////////////
+
+
+    @Programmatic
+    @Override
+    public <T> T firstMatch(final Class<T> cls, final Predicate<T> predicate) {
+        final List<T> allInstances = allInstances(cls); // Have to fetch all, as matching is done in next loop
+        for (final T instance : allInstances) {
+            if (predicate.apply(instance)) {
+                return instance;
+            }
+        }
+        return null;
+    }
+
+
+    @Programmatic
+    @Override
+    @SuppressWarnings("unchecked")
+    public <T> T firstMatch(final Query<T> query) {
+        if(autoFlush) {
+            transactionService.flushTransaction();
+        }
+        final ObjectAdapter firstMatching = persistenceSessionServiceInternal.firstMatchingQuery(query);
+        return (T) ObjectAdapter.Util.unwrap(firstMatching);
+    }
+
+
+    // //////////////////////////////////////
+
+
+    private static <T> T firstInstanceElseNull(final List<T> instances) {
+        return instances.size() == 0 ? null : instances.get(0);
+    }
+
+
+    private Object unwrapped(Object domainObject) {
+        return wrapperFactory != null ? wrapperFactory.unwrap(domainObject) : domainObject;
+    }
+
+
+    @javax.inject.Inject
+    FactoryService factoryService;
+
+    @javax.inject.Inject
+    WrapperFactory wrapperFactory;
+
+    @javax.inject.Inject
+    TransactionService transactionService;
+
+    private AdapterManager adapterManager;
+    @Override
+    public void setAdapterManager(final AdapterManager adapterManager) {
+        this.adapterManager = adapterManager;
+    }
+
+    @javax.inject.Inject
+    PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceDefault.java
deleted file mode 100644
index 92be34f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceDefault.java
+++ /dev/null
@@ -1,51 +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.services.xactn;
-
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
-
-@DomainService(
-        nature = NatureOfService.DOMAIN
-)
-public class TransactionServiceDefault implements TransactionService, PersistenceSessionServiceAware {
-
-
-    @Override
-    public void flushTransaction() {
-        persistenceSessionServiceInternal.flush();
-    }
-
-    @Override
-    public void nextTransaction() {
-        persistenceSessionServiceInternal.commit();
-        persistenceSessionServiceInternal.beginTran();
-    }
-
-    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
-    @Override
-    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-
-        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceInternalDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceInternalDefault.java
new file mode 100644
index 0000000..ceaab92
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceInternalDefault.java
@@ -0,0 +1,48 @@
+/*
+ *  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.services.xactn;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+
+@DomainService(
+        nature = NatureOfService.DOMAIN
+)
+public class TransactionServiceInternalDefault implements TransactionService {
+
+
+    @Override
+    public void flushTransaction() {
+        persistenceSessionServiceInternal.flush();
+    }
+
+    @Override
+    public void nextTransaction() {
+        persistenceSessionServiceInternal.commit();
+        persistenceSessionServiceInternal.beginTran();
+    }
+
+
+    @javax.inject.Inject
+    PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefaultTest_allMatches.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefaultTest_allMatches.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefaultTest_allMatches.java
index c7a435e..863c23e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefaultTest_allMatches.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefaultTest_allMatches.java
@@ -39,14 +39,14 @@ public class RepositoryServiceDefaultTest_allMatches {
     @Rule
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
-    private RepositoryServiceDefault repositoryService;
+    private RepositoryServiceInternalDefault repositoryService;
 
     @Mock
     private TransactionService mockTransactionService;
 
     @Before
     public void setUp() throws Exception {
-        repositoryService = new RepositoryServiceDefault() {
+        repositoryService = new RepositoryServiceInternalDefault() {
             @Override <T> List<T> submitQuery(final Query<T> query) {
                 return null;
             }

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
index ac0f6f0..df4e535 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
@@ -89,12 +89,11 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleE
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
-import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceAware;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceAware;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -405,10 +404,6 @@ public class PersistenceSessionInternal implements
             final MessageBrokerServiceAware cast = MessageBrokerServiceAware.class.cast(candidate);
             cast.setMessageBrokerService(this);
         }
-        if (PersistenceSessionServiceAware.class.isAssignableFrom(candidate.getClass())) {
-            final PersistenceSessionServiceAware cast = PersistenceSessionServiceAware.class.cast(candidate);
-            cast.setPersistenceSessionService(this);
-        }
     }
     //endregion
 

http://git-wip-us.apache.org/repos/asf/isis/blob/fbf1770f/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
index 4c67195..080d7be 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
@@ -54,7 +54,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcher;
 import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcherTypeSafe;
@@ -73,8 +72,7 @@ import org.apache.isis.core.wrapper.proxy.ProxyCreator;
  * configuration is required.
  */
 @DomainService(nature = NatureOfService.DOMAIN)
-public class WrapperFactoryDefault implements WrapperFactory,
-        AdapterManagerAware, PersistenceSessionServiceAware {
+public class WrapperFactoryDefault implements WrapperFactory, AdapterManagerAware {
 
     private final List<InteractionListener> listeners = new ArrayList<InteractionListener>();
     private final Map<Class<? extends InteractionEvent>, InteractionEventDispatcher> dispatchersByEventClass = new HashMap<Class<? extends InteractionEvent>, InteractionEventDispatcher>();
@@ -253,8 +251,7 @@ public class WrapperFactoryDefault implements WrapperFactory,
     }
 
     protected <T> T createProxy(final T domainObject, final ExecutionMode mode) {
-        return proxyContextHandler.proxy(domainObject, this, mode, authenticationSessionProvider, specificationLoader,
-                getAdapterManager(), getPersistenceSessionService());
+        return proxyContextHandler.proxy(domainObject, this, mode, authenticationSessionProvider, specificationLoader, getAdapterManager(), persistenceSessionServiceInternal);
     }
 
     @Override
@@ -304,7 +301,6 @@ public class WrapperFactoryDefault implements WrapperFactory,
 
 
     private AdapterManager adapterManager;
-    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     protected AdapterManager getAdapterManager() {
         return adapterManager;
@@ -317,20 +313,13 @@ public class WrapperFactoryDefault implements WrapperFactory,
 
 
 
-    protected PersistenceSessionServiceInternal getPersistenceSessionService() {
-        return persistenceSessionServiceInternal;
-    }
-    @Programmatic
-    @Override
-    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
-    }
-
-
     @Inject
     AuthenticationSessionProvider authenticationSessionProvider;
 
     @Inject
     SpecificationLoader specificationLoader;
 
+    @javax.inject.Inject
+    PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+
 }


[07/30] isis git commit: ISIS-1407: SpecificationLoader is now a concrete class (rolled ObjectReflector up into it).

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
index 2c3f87c..3517aa0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
@@ -53,7 +53,7 @@ import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader.Reader
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader2;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverser;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java
index c9802c8..e75c2b3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java
@@ -18,7 +18,7 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import java.util.List;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 
 public class FacetedMethodsBuilderContext {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index d3f31ef..0dd0d1a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -58,7 +58,7 @@ import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
 import org.apache.isis.core.metamodel.spec.Instance;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 dd9ccd2..3306a6e 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
@@ -58,7 +58,7 @@ import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 68eaf9b..0ca7200 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
@@ -90,7 +90,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationDependencies;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
 import org.apache.isis.core.metamodel.spec.Persistability;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
index 8c6d1bf..633d354 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
index 3ccf7c8..5d0ec7b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
@@ -42,7 +42,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 
 public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault implements MixedInMember2 {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
index 17b151f..42349d9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.specloader.validator;
 
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 
 public interface MetaModelValidator extends SpecificationLoaderAware, ApplicationScopedComponent {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
index 85224d5..1f194db 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
@@ -23,7 +23,7 @@ import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
 
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class MetaModelValidatorAbstract implements MetaModelValidator {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
index 053b4d8..99ee00c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
@@ -19,12 +19,11 @@
 
 package org.apache.isis.core.metamodel.specloader.validator;
 
-import java.util.Collections;
 import java.util.List;
 
 import com.google.common.collect.Lists;
 
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class MetaModelValidatorComposite extends MetaModelValidatorAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
index e1ed792..fefcecb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
@@ -24,14 +24,14 @@ import java.util.List;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 
@@ -62,7 +62,7 @@ public final class JavaReflectorHelper  {
             programmingModel.refineMetaModelValidator(metaModelValidator, configuration);
         }
 
-        return new ObjectReflectorDefault(
+        return new SpecificationLoader(
                 deploymentCategory, configuration,
                 programmingModel, metaModelValidator, layoutMetadataReaders, servicesInjector);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstaller.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstaller.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstaller.java
index a6018de..60c9093 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstaller.java
@@ -19,10 +19,173 @@
 
 package org.apache.isis.progmodels.dflt;
 
+import java.util.Collection;
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.isis.core.commons.components.InstallerAbstract;
+import org.apache.isis.core.commons.config.ConfigurationConstants;
+import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
+import org.apache.isis.core.commons.factory.InstanceUtil;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
+import org.apache.isis.core.metamodel.facets.FacetFactory;
+import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
+import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
+import org.apache.isis.core.metamodel.specloader.ReflectorConstants;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
+
+public class JavaReflectorInstaller extends InstallerAbstract implements SpecificationLoaderInstaller {
+
+    //region > constants
+
+    private static final Logger LOG = LoggerFactory.getLogger(JavaReflectorInstaller.class);
+
+    public static final String PROPERTY_BASE = ConfigurationConstants.ROOT;
+
+    //endregion
+
+    //region > constructor
 
-public class JavaReflectorInstaller extends JavaReflectorInstallerNoDecorators {
     public JavaReflectorInstaller(final IsisConfigurationDefault isisConfiguration) {
-        super(isisConfiguration);
+        this("java", isisConfiguration);
+    }
+
+    public JavaReflectorInstaller(final String name, final IsisConfigurationDefault isisConfiguration) {
+        super(SpecificationLoaderInstaller.TYPE, name, isisConfiguration);
+
+    }
+    //endregion
+
+    //region > createReflector, doCreateReflector
+
+    @Override
+    public SpecificationLoader createReflector(
+            final DeploymentCategory deploymentCategory,
+            final Collection<MetaModelRefiner> metaModelRefiners,
+            final ServicesInjectorSpi servicesInjector) {
+
+        final ProgrammingModel programmingModel = createProgrammingModel(getConfiguration());
+        final MetaModelValidator mmv = createMetaModelValidator(getConfiguration());
+        final List<LayoutMetadataReader> layoutMetadataReaders = createLayoutMetadataReaders(getConfiguration());
+
+        return JavaReflectorHelper.createObjectReflector(deploymentCategory, getConfiguration(), programmingModel, metaModelRefiners,
+                layoutMetadataReaders, mmv,
+                servicesInjector);
+    }
+
+    //endregion
+
+    //region > createProgrammingModel
+
+    /**
+     * Hook method to allow subclasses to specify a different implementations
+     * (that is, sets of {@link ProgrammingModel} .
+     *
+     * <p>
+     * By default, looks up implementation from provided
+     * {@link IsisConfiguration} using
+     * {@link ReflectorConstants#PROGRAMMING_MODEL_FACETS_CLASS_NAME}. If not
+     * specified, then defaults to
+     * {@link ReflectorConstants#PROGRAMMING_MODEL_FACETS_CLASS_NAME_DEFAULT}.
+     *
+     * <p>
+     * The list of facets can be adjusted using
+     * {@link ReflectorConstants#FACET_FACTORY_INCLUDE_CLASS_NAME_LIST} to
+     * specify additional {@link FacetFactory factories} to include, and
+     * {@link ReflectorConstants#FACET_FACTORY_EXCLUDE_CLASS_NAME_LIST} to
+     * exclude.
+     */
+    protected ProgrammingModel createProgrammingModel(final IsisConfiguration configuration) {
+        final ProgrammingModel programmingModel = lookupAndCreateProgrammingModelFacets(configuration);
+        includeAndExcludeFacetFactories(configuration, programmingModel);
+        return programmingModel;
+    }
+
+    private ProgrammingModel lookupAndCreateProgrammingModelFacets(final IsisConfiguration configuration) {
+        final String progModelFacetsClassName = configuration.getString(ReflectorConstants.PROGRAMMING_MODEL_FACETS_CLASS_NAME, ReflectorConstants.PROGRAMMING_MODEL_FACETS_CLASS_NAME_DEFAULT);
+        final ProgrammingModel programmingModel = InstanceUtil.createInstance(progModelFacetsClassName, ProgrammingModel.class);
+        return programmingModel;
     }
+
+    private void includeAndExcludeFacetFactories(final IsisConfiguration configuration, final ProgrammingModel programmingModel) {
+        includeFacetFactories(configuration, programmingModel);
+        excludeFacetFactories(configuration, programmingModel);
+    }
+
+    //endregion
+
+    //region > includeFacetFactories, excludeFacetFactories
+
+    /**
+     * Factored out of {@link #createProgrammingModel(IsisConfiguration)}
+     * so that subclasses that choose to override can still support
+     * customization of their {@link ProgrammingModel} in a similar way.
+     */
+    protected void includeFacetFactories(final IsisConfiguration configuration, final ProgrammingModel programmingModel) {
+        ProgrammingModel.Util.includeFacetFactories(configuration, programmingModel);
+    }
+
+    /**
+     * Factored out of {@link #createProgrammingModel(IsisConfiguration)}
+     * so that subclasses that choose to override can still support
+     * customization of their {@link ProgrammingModel} in a similar way.
+     */
+    protected void excludeFacetFactories(final IsisConfiguration configuration, final ProgrammingModel programmingModel) {
+        ProgrammingModel.Util.excludeFacetFactories(configuration, programmingModel);
+    }
+
+    //endregion
+
+    //region > createMetaModelValidator
+
+    /**
+     * Hook method to allow subclasses to specify a different implementation of
+     * {@link MetaModelValidator}.
+     *
+     * <p>
+     * By default, looks up implementation from provided
+     * {@link IsisConfiguration} using
+     * {@link ReflectorConstants#META_MODEL_VALIDATOR_CLASS_NAME}.
+     */
+    protected MetaModelValidator createMetaModelValidator(final IsisConfiguration configuration) {
+        final String metaModelValidatorClassName = configuration.getString(ReflectorConstants.META_MODEL_VALIDATOR_CLASS_NAME, ReflectorConstants.META_MODEL_VALIDATOR_CLASS_NAME_DEFAULT);
+        return InstanceUtil.createInstance(metaModelValidatorClassName, MetaModelValidator.class);
+    }
+
+    //endregion
+
+    //region > createLayoutMetadataReaders
+
+    protected List<LayoutMetadataReader> createLayoutMetadataReaders(final IsisConfiguration configuration) {
+        final List<LayoutMetadataReader> layoutMetadataReaders = Lists.newArrayList();
+        final String[] layoutMetadataReaderClassNames = configuration.getList(ReflectorConstants.LAYOUT_METADATA_READER_LIST, ReflectorConstants.LAYOUT_METADATA_READER_LIST_DEFAULT);
+        if (layoutMetadataReaderClassNames != null) {
+            for (final String layoutMetadataReaderClassName : layoutMetadataReaderClassNames) {
+                final LayoutMetadataReader layoutMetadataReader = InstanceUtil.createInstance(layoutMetadataReaderClassName, LayoutMetadataReader.class);
+                layoutMetadataReaders.add(layoutMetadataReader);
+            }
+        }
+        return layoutMetadataReaders;
+    }
+
+    //endregion
+
+    //region > getTypes
+
+    @Override
+    public List<Class<?>> getTypes() {
+        return listOf(SpecificationLoader.class);
+    }
+
+    //endregion
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
deleted file mode 100644
index e4d3379..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
+++ /dev/null
@@ -1,191 +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.progmodels.dflt;
-
-import java.util.Collection;
-import java.util.List;
-
-import com.google.common.collect.Lists;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.isis.core.commons.config.ConfigurationConstants;
-import org.apache.isis.core.commons.components.InstallerAbstract;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.commons.factory.InstanceUtil;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.metamodel.facets.FacetFactory;
-import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
-import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.ObjectReflectorInstaller;
-import org.apache.isis.core.metamodel.specloader.ReflectorConstants;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
-
-public class JavaReflectorInstallerNoDecorators extends InstallerAbstract implements ObjectReflectorInstaller {
-
-    //region > constants
-
-    private static final Logger LOG = LoggerFactory.getLogger(JavaReflectorInstallerNoDecorators.class);
-
-    public static final String PROPERTY_BASE = ConfigurationConstants.ROOT;
-
-    //endregion
-
-    //region > constructor
-
-    public JavaReflectorInstallerNoDecorators(final IsisConfigurationDefault isisConfiguration) {
-        this("java", isisConfiguration);
-    }
-
-    public JavaReflectorInstallerNoDecorators(final String name, final IsisConfigurationDefault isisConfiguration) {
-        super(ObjectReflectorInstaller.TYPE, name, isisConfiguration);
-        
-    }
-    //endregion
-
-    //region > createReflector, doCreateReflector
-
-    @Override
-    public SpecificationLoader createReflector(
-            final DeploymentCategory deploymentCategory,
-            final Collection<MetaModelRefiner> metaModelRefiners,
-            final ServicesInjectorSpi servicesInjector) {
-
-        final ProgrammingModel programmingModel = createProgrammingModel(getConfiguration());
-        final MetaModelValidator mmv = createMetaModelValidator(getConfiguration());
-        final List<LayoutMetadataReader> layoutMetadataReaders = createLayoutMetadataReaders(getConfiguration());
-
-        return JavaReflectorHelper.createObjectReflector(deploymentCategory, getConfiguration(), programmingModel, metaModelRefiners,
-                layoutMetadataReaders, mmv,
-                servicesInjector);
-    }
-
-    //endregion
-
-    //region > createProgrammingModel
-
-    /**
-     * Hook method to allow subclasses to specify a different implementations
-     * (that is, sets of {@link ProgrammingModel} .
-     * 
-     * <p>
-     * By default, looks up implementation from provided
-     * {@link IsisConfiguration} using
-     * {@link ReflectorConstants#PROGRAMMING_MODEL_FACETS_CLASS_NAME}. If not
-     * specified, then defaults to
-     * {@link ReflectorConstants#PROGRAMMING_MODEL_FACETS_CLASS_NAME_DEFAULT}.
-     * 
-     * <p>
-     * The list of facets can be adjusted using
-     * {@link ReflectorConstants#FACET_FACTORY_INCLUDE_CLASS_NAME_LIST} to
-     * specify additional {@link FacetFactory factories} to include, and
-     * {@link ReflectorConstants#FACET_FACTORY_EXCLUDE_CLASS_NAME_LIST} to
-     * exclude.
-     */
-    protected ProgrammingModel createProgrammingModel(final IsisConfiguration configuration) {
-        final ProgrammingModel programmingModel = lookupAndCreateProgrammingModelFacets(configuration);
-        includeAndExcludeFacetFactories(configuration, programmingModel);
-        return programmingModel;
-    }
-
-    private ProgrammingModel lookupAndCreateProgrammingModelFacets(final IsisConfiguration configuration) {
-        final String progModelFacetsClassName = configuration.getString(ReflectorConstants.PROGRAMMING_MODEL_FACETS_CLASS_NAME, ReflectorConstants.PROGRAMMING_MODEL_FACETS_CLASS_NAME_DEFAULT);
-        final ProgrammingModel programmingModel = InstanceUtil.createInstance(progModelFacetsClassName, ProgrammingModel.class);
-        return programmingModel;
-    }
-
-    private void includeAndExcludeFacetFactories(final IsisConfiguration configuration, final ProgrammingModel programmingModel) {
-        includeFacetFactories(configuration, programmingModel);
-        excludeFacetFactories(configuration, programmingModel);
-    }
-
-    //endregion
-
-    //region > includeFacetFactories, excludeFacetFactories
-
-    /**
-     * Factored out of {@link #createProgrammingModel(IsisConfiguration)}
-     * so that subclasses that choose to override can still support
-     * customization of their {@link ProgrammingModel} in a similar way.
-     */
-    protected void includeFacetFactories(final IsisConfiguration configuration, final ProgrammingModel programmingModel) {
-        ProgrammingModel.Util.includeFacetFactories(configuration, programmingModel);
-    }
-
-    /**
-     * Factored out of {@link #createProgrammingModel(IsisConfiguration)}
-     * so that subclasses that choose to override can still support
-     * customization of their {@link ProgrammingModel} in a similar way.
-     */
-    protected void excludeFacetFactories(final IsisConfiguration configuration, final ProgrammingModel programmingModel) {
-        ProgrammingModel.Util.excludeFacetFactories(configuration, programmingModel);
-    }
-
-    //endregion
-
-    //region > createMetaModelValidator
-
-    /**
-     * Hook method to allow subclasses to specify a different implementation of
-     * {@link MetaModelValidator}.
-     * 
-     * <p>
-     * By default, looks up implementation from provided
-     * {@link IsisConfiguration} using
-     * {@link ReflectorConstants#META_MODEL_VALIDATOR_CLASS_NAME}.
-     */
-    protected MetaModelValidator createMetaModelValidator(final IsisConfiguration configuration) {
-        final String metaModelValidatorClassName = configuration.getString(ReflectorConstants.META_MODEL_VALIDATOR_CLASS_NAME, ReflectorConstants.META_MODEL_VALIDATOR_CLASS_NAME_DEFAULT);
-        return InstanceUtil.createInstance(metaModelValidatorClassName, MetaModelValidator.class);
-    }
-
-    //endregion
-
-    //region > createLayoutMetadataReaders
-
-    protected List<LayoutMetadataReader> createLayoutMetadataReaders(final IsisConfiguration configuration) {
-        final List<LayoutMetadataReader> layoutMetadataReaders = Lists.newArrayList();
-        final String[] layoutMetadataReaderClassNames = configuration.getList(ReflectorConstants.LAYOUT_METADATA_READER_LIST, ReflectorConstants.LAYOUT_METADATA_READER_LIST_DEFAULT);
-        if (layoutMetadataReaderClassNames != null) {
-            for (final String layoutMetadataReaderClassName : layoutMetadataReaderClassNames) {
-                final LayoutMetadataReader layoutMetadataReader = InstanceUtil.createInstance(layoutMetadataReaderClassName, LayoutMetadataReader.class);
-                layoutMetadataReaders.add(layoutMetadataReader);
-            }
-        }
-        return layoutMetadataReaders;
-    }
-
-    //endregion
-
-    //region > getTypes
-
-    @Override
-    public List<Class<?>> getTypes() {
-        return listOf(SpecificationLoader.class);
-    }
-
-    //endregion
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index 75feaff..dd73306 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.Au
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 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.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index 5375a62..a1514ef 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 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.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import junit.framework.TestCase;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
index 5b44f54..86acf64 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
@@ -42,7 +42,7 @@ import org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFa
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderContext;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTestAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTestAbstract.java
deleted file mode 100644
index 40c7332..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTestAbstract.java
+++ /dev/null
@@ -1,185 +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.specloader;
-
-import java.util.Collections;
-
-import com.google.common.collect.Lists;
-
-import org.jmock.Expectations;
-import org.jmock.auto.Mock;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-import org.apache.isis.applib.services.grid.GridService;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
-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.object.plural.PluralFacet;
-import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
-import org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson;
-import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
-
-public abstract class ObjectReflectorDefaultTestAbstract {
-
-    @Rule
-    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_ONLY);
-
-    @Rule
-    public ExpectedException expectedException = ExpectedException.none();
-
-    private RuntimeContext runtimeContext;
-
-    @Mock
-    private IsisConfiguration mockConfiguration;
-    @Mock
-    private DeploymentCategoryProvider mockDeploymentCategoryProvider;
-    @Mock
-    private AuthenticationSessionProvider mockAuthenticationSessionProvider;
-    @Mock
-    private ServicesInjectorSpi mockServicesInjector;
-    @Mock
-    private GridService mockGridService;
-
-    // is loaded by subclasses
-    protected ObjectSpecification specification;
-
-    
-    @Before
-    public void setUp() throws Exception {
-
-        context.checking(new Expectations() {{
-            ignoring(mockConfiguration);
-
-            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
-            will(returnValue(new IsisConfigurationDefault(null)));
-
-            allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
-            will(returnValue(mockDeploymentCategoryProvider));
-
-            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-            will(returnValue(DeploymentCategory.PRODUCTION));
-
-            allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
-            will(returnValue(mockAuthenticationSessionProvider));
-
-            allowing(mockServicesInjector).lookupService(GridService.class);
-            will(returnValue(mockGridService));
-
-            ignoring(mockGridService).existsFor(with(any(Class.class)));
-
-            ignoring(mockServicesInjector).getRegisteredServices();
-
-            ignoring(mockServicesInjector).isRegisteredService(with(any(Class.class)));
-        }});
-
-        final ObjectReflectorDefault reflector =
-                new ObjectReflectorDefault(DeploymentCategory.PRODUCTION,
-                        mockConfiguration,
-                        new ProgrammingModelFacetsJava5(),
-                        new MetaModelValidatorDefault(),
-                        Lists.<LayoutMetadataReader>newArrayList(
-                                new LayoutMetadataReaderFromJson()), mockServicesInjector);
-        runtimeContext =
-                new RuntimeContextNoRuntime(
-                        new ServicesInjectorDefault(Collections.emptyList()), reflector);
-        reflector.init(runtimeContext);
-        
-        specification = loadSpecification(reflector);
-    }
-
-    protected abstract ObjectSpecification loadSpecification(ObjectReflectorDefault reflector);
-
-    @Test
-    public void testLayoutMetadataReaderEmptyList() {
-        expectedException.expect(IllegalArgumentException.class);
-        expectedException.expectMessage("illegal argument, expected: is not an empty collection");
-
-        new ObjectReflectorDefault(DeploymentCategory.PRODUCTION ,
-                mockConfiguration,
-                new ProgrammingModelFacetsJava5(),
-                new MetaModelValidatorDefault(),
-                Lists.<LayoutMetadataReader>newArrayList(),
-                mockServicesInjector);
-    }
-
-    @Test
-    public void testLayoutMetadataReaderNull() {
-        expectedException.expect(IllegalArgumentException.class);
-        expectedException.expectMessage("illegal argument, expected: is not null");
-
-        new ObjectReflectorDefault(DeploymentCategory.PRODUCTION,
-                mockConfiguration,
-                new ProgrammingModelFacetsJava5(),
-                new MetaModelValidatorDefault(),
-                null,
-                mockServicesInjector);
-    }
-
-    @Test
-    public void testCollectionFacet() throws Exception {
-        final Facet facet = specification.getFacet(CollectionFacet.class);
-        Assert.assertNull(facet);
-    }
-
-    @Test
-    public void testTypeOfFacet() throws Exception {
-        final TypeOfFacet facet = specification.getFacet(TypeOfFacet.class);
-        Assert.assertNull(facet);
-    }
-
-    @Test
-    public void testNamedFaced() throws Exception {
-        final Facet facet = specification.getFacet(NamedFacet.class);
-        Assert.assertNotNull(facet);
-    }
-
-    @Test
-    public void testPluralFaced() throws Exception {
-        final Facet facet = specification.getFacet(PluralFacet.class);
-        Assert.assertNotNull(facet);
-    }
-
-    @Test
-    public void testDescriptionFacet() throws Exception {
-        final Facet facet = specification.getFacet(DescribedAsFacet.class);
-        Assert.assertNotNull(facet);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_array.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_array.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_array.java
deleted file mode 100644
index 86639ea..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_array.java
+++ /dev/null
@@ -1,62 +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.specloader;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public class ObjectReflectorDefaultTest_array extends ObjectReflectorDefaultTestAbstract {
-
-    @Override
-    protected ObjectSpecification loadSpecification(final ObjectReflectorDefault reflector) {
-        return reflector.loadSpecification(ReflectorTestPojo[].class);
-    }
-
-    @Test
-    public void testType() throws Exception {
-        Assert.assertTrue(specification.isParentedOrFreeCollection());
-    }
-
-    @Test
-    public void testName() throws Exception {
-        Assert.assertEquals(ReflectorTestPojo[].class.getName(), specification.getFullIdentifier());
-    }
-
-    @Test
-    @Override
-    public void testCollectionFacet() throws Exception {
-        final Facet facet = specification.getFacet(CollectionFacet.class);
-        Assert.assertNotNull(facet);
-    }
-
-    @Test
-    @Override
-    public void testTypeOfFacet() throws Exception {
-        final TypeOfFacet facet = specification.getFacet(TypeOfFacet.class);
-        Assert.assertNotNull(facet);
-        Assert.assertEquals(ReflectorTestPojo.class, facet.value());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_collection.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_collection.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_collection.java
deleted file mode 100644
index a673884..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_collection.java
+++ /dev/null
@@ -1,64 +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.specloader;
-
-import java.util.Vector;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public class ObjectReflectorDefaultTest_collection extends ObjectReflectorDefaultTestAbstract {
-
-    @Override
-    protected ObjectSpecification loadSpecification(final ObjectReflectorDefault reflector) {
-        return reflector.loadSpecification(Vector.class);
-    }
-
-    @Test
-    public void testType() throws Exception {
-        Assert.assertTrue(specification.isParentedOrFreeCollection());
-    }
-
-    @Test
-    public void testName() throws Exception {
-        Assert.assertEquals(Vector.class.getName(), specification.getFullIdentifier());
-    }
-
-    @Test
-    @Override
-    public void testCollectionFacet() throws Exception {
-        final Facet facet = specification.getFacet(CollectionFacet.class);
-        Assert.assertNotNull(facet);
-    }
-
-    @Test
-    @Override
-    public void testTypeOfFacet() throws Exception {
-        final TypeOfFacet facet = specification.getFacet(TypeOfFacet.class);
-        Assert.assertNotNull(facet);
-        Assert.assertEquals(Object.class, facet.value());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
index 30f354f..8f5d2d5 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
@@ -33,14 +33,14 @@ import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet;
 
-public class ObjectReflectorDefaultTest_object extends ObjectReflectorDefaultTestAbstract {
+public class ObjectReflectorDefaultTest_object extends SpecificationLoaderTestAbstract {
 
     public static class TestDomainObject {
 
     }
 
     @Override
-    protected ObjectSpecification loadSpecification(final ObjectReflectorDefault reflector) {
+    protected ObjectSpecification loadSpecification(final SpecificationLoader reflector) {
         return reflector.loadSpecification(TestDomainObject.class);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_value.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_value.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_value.java
deleted file mode 100644
index cb7c488..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_value.java
+++ /dev/null
@@ -1,44 +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.specloader;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public class ObjectReflectorDefaultTest_value extends ObjectReflectorDefaultTestAbstract {
-
-    @Override
-    protected ObjectSpecification loadSpecification(final ObjectReflectorDefault reflector) {
-        return reflector.loadSpecification(String.class);
-    }
-
-    @Test
-    public void testType() throws Exception {
-        Assert.assertTrue(specification.isNotCollection());
-    }
-
-    @Test
-    public void testName() throws Exception {
-        Assert.assertEquals(String.class.getName(), specification.getFullIdentifier());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
new file mode 100644
index 0000000..26faff6
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -0,0 +1,185 @@
+/*
+ *  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.specloader;
+
+import java.util.Collections;
+
+import com.google.common.collect.Lists;
+
+import org.jmock.Expectations;
+import org.jmock.auto.Mock;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import org.apache.isis.applib.services.grid.GridService;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
+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.object.plural.PluralFacet;
+import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
+import org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson;
+import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
+import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
+import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
+import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
+import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
+import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
+
+public abstract class SpecificationLoaderTestAbstract {
+
+    @Rule
+    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_ONLY);
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    private RuntimeContext runtimeContext;
+
+    @Mock
+    private IsisConfiguration mockConfiguration;
+    @Mock
+    private DeploymentCategoryProvider mockDeploymentCategoryProvider;
+    @Mock
+    private AuthenticationSessionProvider mockAuthenticationSessionProvider;
+    @Mock
+    private ServicesInjectorSpi mockServicesInjector;
+    @Mock
+    private GridService mockGridService;
+
+    // is loaded by subclasses
+    protected ObjectSpecification specification;
+
+    
+    @Before
+    public void setUp() throws Exception {
+
+        context.checking(new Expectations() {{
+            ignoring(mockConfiguration);
+
+            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
+            will(returnValue(new IsisConfigurationDefault(null)));
+
+            allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
+            will(returnValue(mockDeploymentCategoryProvider));
+
+            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
+            will(returnValue(DeploymentCategory.PRODUCTION));
+
+            allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
+            will(returnValue(mockAuthenticationSessionProvider));
+
+            allowing(mockServicesInjector).lookupService(GridService.class);
+            will(returnValue(mockGridService));
+
+            ignoring(mockGridService).existsFor(with(any(Class.class)));
+
+            ignoring(mockServicesInjector).getRegisteredServices();
+
+            ignoring(mockServicesInjector).isRegisteredService(with(any(Class.class)));
+        }});
+
+        final SpecificationLoader reflector =
+                new SpecificationLoader(DeploymentCategory.PRODUCTION,
+                        mockConfiguration,
+                        new ProgrammingModelFacetsJava5(),
+                        new MetaModelValidatorDefault(),
+                        Lists.<LayoutMetadataReader>newArrayList(
+                                new LayoutMetadataReaderFromJson()), mockServicesInjector);
+        runtimeContext =
+                new RuntimeContextNoRuntime(
+                        new ServicesInjectorDefault(Collections.emptyList()), reflector);
+        reflector.init(runtimeContext);
+        
+        specification = loadSpecification(reflector);
+    }
+
+    protected abstract ObjectSpecification loadSpecification(SpecificationLoader reflector);
+
+    @Test
+    public void testLayoutMetadataReaderEmptyList() {
+        expectedException.expect(IllegalArgumentException.class);
+        expectedException.expectMessage("illegal argument, expected: is not an empty collection");
+
+        new SpecificationLoader(DeploymentCategory.PRODUCTION ,
+                mockConfiguration,
+                new ProgrammingModelFacetsJava5(),
+                new MetaModelValidatorDefault(),
+                Lists.<LayoutMetadataReader>newArrayList(),
+                mockServicesInjector);
+    }
+
+    @Test
+    public void testLayoutMetadataReaderNull() {
+        expectedException.expect(IllegalArgumentException.class);
+        expectedException.expectMessage("illegal argument, expected: is not null");
+
+        new SpecificationLoader(DeploymentCategory.PRODUCTION,
+                mockConfiguration,
+                new ProgrammingModelFacetsJava5(),
+                new MetaModelValidatorDefault(),
+                null,
+                mockServicesInjector);
+    }
+
+    @Test
+    public void testCollectionFacet() throws Exception {
+        final Facet facet = specification.getFacet(CollectionFacet.class);
+        Assert.assertNull(facet);
+    }
+
+    @Test
+    public void testTypeOfFacet() throws Exception {
+        final TypeOfFacet facet = specification.getFacet(TypeOfFacet.class);
+        Assert.assertNull(facet);
+    }
+
+    @Test
+    public void testNamedFaced() throws Exception {
+        final Facet facet = specification.getFacet(NamedFacet.class);
+        Assert.assertNotNull(facet);
+    }
+
+    @Test
+    public void testPluralFaced() throws Exception {
+        final Facet facet = specification.getFacet(PluralFacet.class);
+        Assert.assertNotNull(facet);
+    }
+
+    @Test
+    public void testDescriptionFacet() throws Exception {
+        final Facet facet = specification.getFacet(DescribedAsFacet.class);
+        Assert.assertNotNull(facet);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_array.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_array.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_array.java
new file mode 100644
index 0000000..25065c0
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_array.java
@@ -0,0 +1,62 @@
+/*
+ *  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.specloader;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+
+public class SpecificationLoaderTest_array extends SpecificationLoaderTestAbstract {
+
+    @Override
+    protected ObjectSpecification loadSpecification(final SpecificationLoader reflector) {
+        return reflector.loadSpecification(ReflectorTestPojo[].class);
+    }
+
+    @Test
+    public void testType() throws Exception {
+        Assert.assertTrue(specification.isParentedOrFreeCollection());
+    }
+
+    @Test
+    public void testName() throws Exception {
+        Assert.assertEquals(ReflectorTestPojo[].class.getName(), specification.getFullIdentifier());
+    }
+
+    @Test
+    @Override
+    public void testCollectionFacet() throws Exception {
+        final Facet facet = specification.getFacet(CollectionFacet.class);
+        Assert.assertNotNull(facet);
+    }
+
+    @Test
+    @Override
+    public void testTypeOfFacet() throws Exception {
+        final TypeOfFacet facet = specification.getFacet(TypeOfFacet.class);
+        Assert.assertNotNull(facet);
+        Assert.assertEquals(ReflectorTestPojo.class, facet.value());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_collection.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_collection.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_collection.java
new file mode 100644
index 0000000..6a6df8b
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_collection.java
@@ -0,0 +1,64 @@
+/*
+ *  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.specloader;
+
+import java.util.Vector;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+
+public class SpecificationLoaderTest_collection extends SpecificationLoaderTestAbstract {
+
+    @Override
+    protected ObjectSpecification loadSpecification(final SpecificationLoader reflector) {
+        return reflector.loadSpecification(Vector.class);
+    }
+
+    @Test
+    public void testType() throws Exception {
+        Assert.assertTrue(specification.isParentedOrFreeCollection());
+    }
+
+    @Test
+    public void testName() throws Exception {
+        Assert.assertEquals(Vector.class.getName(), specification.getFullIdentifier());
+    }
+
+    @Test
+    @Override
+    public void testCollectionFacet() throws Exception {
+        final Facet facet = specification.getFacet(CollectionFacet.class);
+        Assert.assertNotNull(facet);
+    }
+
+    @Test
+    @Override
+    public void testTypeOfFacet() throws Exception {
+        final TypeOfFacet facet = specification.getFacet(TypeOfFacet.class);
+        Assert.assertNotNull(facet);
+        Assert.assertEquals(Object.class, facet.value());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_value.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_value.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_value.java
new file mode 100644
index 0000000..f942a0a
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTest_value.java
@@ -0,0 +1,44 @@
+/*
+ *  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.specloader;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+
+public class SpecificationLoaderTest_value extends SpecificationLoaderTestAbstract {
+
+    @Override
+    protected ObjectSpecification loadSpecification(final SpecificationLoader reflector) {
+        return reflector.loadSpecification(String.class);
+    }
+
+    @Test
+    public void testType() throws Exception {
+        Assert.assertTrue(specification.isNotCollection());
+    }
+
+    @Test
+    public void testName() throws Exception {
+        Assert.assertEquals(String.class.getName(), specification.getFullIdentifier());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
index 9c124d5..b7d4390 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
@@ -42,7 +42,7 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetU
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
index eba4cf5..6d27751 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/InstallerLookup.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.commons.factory.UnavailableClassException;
 import org.apache.isis.core.commons.lang.ObjectExtensions;
 import org.apache.isis.core.commons.lang.StringExtensions;
-import org.apache.isis.core.metamodel.specloader.ObjectReflectorInstaller;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.runtime.IsisInstallerRegistry;
 import org.apache.isis.core.runtime.about.AboutIsis;
 import org.apache.isis.core.runtime.about.ComponentDetails;
@@ -152,8 +152,8 @@ public class InstallerLookup implements InstallerRepository, ApplicationScopedCo
 
 
     //region > metamodel
-    public ObjectReflectorInstaller reflectorInstaller(final String requested) {
-        return getInstaller(ObjectReflectorInstaller.class, requested, SystemConstants.REFLECTOR_KEY, SystemConstants.REFLECTOR_DEFAULT);
+    public SpecificationLoaderInstaller reflectorInstaller(final String requested) {
+        return getInstaller(SpecificationLoaderInstaller.class, requested, SystemConstants.REFLECTOR_KEY, SystemConstants.REFLECTOR_DEFAULT);
     }
     //endregion
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
index f8599f7..3ebbb98 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
index 9b2db6a..89ab049 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.spec.Instance;
 import org.apache.isis.core.metamodel.spec.InstanceAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.Specification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
index acbbe6f..58d0f89 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 f6df1e4..ced961a 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
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAb
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
 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.specloader.SpecificationLoader;
 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;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
index f46eb2d..cbdd81b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.commons.encoding.DataInputExtended;
 import org.apache.isis.core.commons.encoding.DataOutputExtended;
 import org.apache.isis.core.commons.encoding.Encodable;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/Constants.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/Constants.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/Constants.java
index 54d5a48..21f37e4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/Constants.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/Constants.java
@@ -19,8 +19,7 @@
 
 package org.apache.isis.core.runtime.runner;
 
-import org.apache.isis.core.metamodel.specloader.ObjectReflectorInstaller;
-import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.runtime.logging.LoggingConstants;
 import org.apache.isis.core.runtime.system.DeploymentType;
 
@@ -36,7 +35,7 @@ public final class Constants {
     public static final String TYPE_SERVER = DeploymentType.SERVER.friendlyName();
 
     public static final String REFLECTOR_OPT = "l";
-    public static final String REFLECTOR_LONG_OPT = ObjectReflectorInstaller.TYPE;
+    public static final String REFLECTOR_LONG_OPT = SpecificationLoaderInstaller.TYPE;
 
     public static final String CONFIGURATION_OPT = "c";
     public static final String CONFIGURATION_LONG_OPT = "config";

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerReflector.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerReflector.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerReflector.java
index 684874b..4ac20dc 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerReflector.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerReflector.java
@@ -25,7 +25,7 @@ import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 
 import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
-import org.apache.isis.core.metamodel.specloader.ObjectReflectorInstaller;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.runtime.installerregistry.InstallerRepository;
 import org.apache.isis.core.runtime.optionhandler.BootPrinter;
 import org.apache.isis.core.runtime.optionhandler.OptionHandlerAbstract;
@@ -51,7 +51,7 @@ public class OptionHandlerReflector extends OptionHandlerAbstract {
     @Override
     @SuppressWarnings("static-access")
     public void addOption(final Options options) {
-        final Object[] reflectors = installerRepository.getInstallers(ObjectReflectorInstaller.class);
+        final Object[] reflectors = installerRepository.getInstallers(SpecificationLoaderInstaller.class);
         final Option option = OptionBuilder.withArgName("name|class name").hasArg().withLongOpt(REFLECTOR_LONG_OPT).withDescription("reflector to use (ignored if type is prototype or client): " + availableInstallers(reflectors) + "; or class name").create(REFLECTOR_OPT);
         options.addOption(option);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
index c93e844..74929e5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
index 3022223..4e7b16b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
index fa7b036..324dd6c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
@@ -20,7 +20,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.session.IsisSession;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
index d65e23d..3f82837 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
@@ -44,7 +44,7 @@ import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInterna
 import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;


[16/30] isis git commit: ISIS-1407: removed SpecificationLoaderAware.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForPostsCollectionRemovedFromEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForPostsCollectionRemovedFromEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForPostsCollectionRemovedFromEventAnnotation.java
index 0101c2f..9c5b108 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForPostsCollectionRemovedFromEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForPostsCollectionRemovedFromEventAnnotation.java
@@ -24,7 +24,7 @@ import org.apache.isis.applib.services.eventbus.CollectionRemovedFromEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/paged/PagedFacetOnCollectionFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/paged/PagedFacetOnCollectionFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/paged/PagedFacetOnCollectionFactory.java
index 56d9467..9f59ce1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/paged/PagedFacetOnCollectionFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/paged/PagedFacetOnCollectionFactory.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/sortedby/annotation/SortedByFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/sortedby/annotation/SortedByFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/sortedby/annotation/SortedByFacetAnnotationFactory.java
index 81bf034..7afa2bd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/sortedby/annotation/SortedByFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/sortedby/annotation/SortedByFacetAnnotationFactory.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnMemberFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnMemberFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnMemberFactory.java
index 9cbc9f6..8bd5d51 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnMemberFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnMemberFactory.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
index 049987f..7df2a4a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
@@ -40,7 +40,7 @@ import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet;
 import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPosition;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/annotprop/DescribedAsFacetOnMemberFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/annotprop/DescribedAsFacetOnMemberFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/annotprop/DescribedAsFacetOnMemberFactory.java
index 61e2a7f..e671c73 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/annotprop/DescribedAsFacetOnMemberFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/annotprop/DescribedAsFacetOnMemberFactory.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 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.MetaModelValidatorForDeprecatedAnnotation;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/staticmethod/DescribedAsFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/staticmethod/DescribedAsFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/staticmethod/DescribedAsFacetStaticMethodFactory.java
index b952a2b..a3669a1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/staticmethod/DescribedAsFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/staticmethod/DescribedAsFacetStaticMethodFactory.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
index f18192f..6f567a7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstra
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
index 27ef717..b2f0348 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstra
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
index 7513786..753a482 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
index 6437fd6..81711b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
index bf51b34..8c8376c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
@@ -30,8 +30,6 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 
 public class MemberOrderFacetFactory extends FacetFactoryAbstract implements ContributeeMemberFacetFactory {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
index 23f2947..00bc4e7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.members.render.RenderFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
index 4dd9dfb..f316150 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.actionorder.ActionOrderFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
index bd7edef..3ea735f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
index 0b6398f..b4b7539 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFa
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
index bbd7023..1a33afe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetAbstract.java
index b56c5c3..f7a481a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetAbstract.java
@@ -24,7 +24,7 @@ import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.core.commons.lang.ClassExtensions;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public abstract class DefaultedFacetAbstract extends FacetAbstract implements DefaultedFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetUsingDefaultsProvider.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetUsingDefaultsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetUsingDefaultsProvider.java
index c30d384..8a027c2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetUsingDefaultsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetUsingDefaultsProvider.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.defaults;
 import org.apache.isis.applib.adapters.DefaultsProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class DefaultedFacetUsingDefaultsProvider extends FacetAbstract implements DefaultedFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/annotcfg/DefaultedFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/annotcfg/DefaultedFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/annotcfg/DefaultedFacetAnnotation.java
index dd65692..8f44598 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/annotcfg/DefaultedFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/annotcfg/DefaultedFacetAnnotation.java
@@ -24,7 +24,7 @@ import com.google.common.base.Strings;
 import org.apache.isis.applib.annotation.Defaulted;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.defaults.DefaultsProviderUtil;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/annotcfg/DefaultedFacetFromConfiguration.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/annotcfg/DefaultedFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/annotcfg/DefaultedFacetFromConfiguration.java
index ec2096b..0c8a0c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/annotcfg/DefaultedFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/defaults/annotcfg/DefaultedFacetFromConfiguration.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.facets.object.defaults.annotcfg;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetAbstract;
 
 public class DefaultedFacetFromConfiguration extends DefaultedFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
index a2a0cb6..8ca4ce2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 545946b..855cee5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -83,10 +83,9 @@ import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObj
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
@@ -97,7 +96,7 @@ import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapabl
 
 public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         implements AdapterManagerAware,
-        SpecificationLoaderAware, MetaModelValidatorRefiner, PersistenceSessionServiceAware,
+        MetaModelValidatorRefiner, PersistenceSessionServiceAware,
         PostConstructMethodCache {
 
     private final MetaModelValidatorForDeprecatedAnnotation auditedValidator = new MetaModelValidatorForDeprecatedAnnotation(Audited.class);

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForAutoCompleteAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForAutoCompleteAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForAutoCompleteAnnotation.java
index 4c97449..f9740ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForAutoCompleteAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForAutoCompleteAnnotation.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForDomainObjectAnnotation.java
index 748581e..156dc8e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForDomainObjectAnnotation.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class AutoCompleteFacetForDomainObjectAnnotation extends AutoCompleteFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
index f34063f..1c9eefc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacetDeclarativeInitializingAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class RecreatableObjectFacetForDomainObjectAnnotation extends

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
index 165c1d3..e104cea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.util.EventUtil;
 
 public class CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent extends FacetAbstract implements

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
index cccd692..0204871 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.util.EventUtil;
 
 public class IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent extends IconFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
index be83cea..4daa17f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.util.EventUtil;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/EncodableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
index 0e844d5..14bd182 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public abstract class EncodableFacetAbstract extends FacetAbstract implements EncodableFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotation.java
index cd4f6d6..abe1cb0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotation.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncoderDecoderUtil;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class EncodableFacetAnnotation extends EncodableFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetFromConfiguration.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetFromConfiguration.java
index b5ce5ff..9e2e2ff 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetFromConfiguration.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.encodeable.annotcfg;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class EncodableFacetFromConfiguration extends EncodableFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
index 55f9106..e873618 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class EncodableFacetUsingEncoderDecoder extends FacetAbstract implements EncodableFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
index 07647f8..dea0b43 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.fieldorder.FieldOrderFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetFactory.java
index b9f85fc..8c00734 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetFactory.java
@@ -24,7 +24,6 @@ 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.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 
 public class GridFacetFactory extends FacetFactoryAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
index ee62d07..86327f8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java
index 09e9782..3f3a6f1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.mask.MaskFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
index 8f2433a..018558d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java
index a957129..f5cb292 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java
@@ -25,7 +25,7 @@ import java.lang.reflect.InvocationTargetException;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public abstract class MixinFacetAbstract extends MarkerFacetAbstract implements MixinFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForDomainObjectAnnotation.java
index cdd0c2a..aac7d79 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForDomainObjectAnnotation.java
@@ -25,7 +25,7 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class MixinFacetForDomainObjectAnnotation extends MixinFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForMixinAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForMixinAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForMixinAnnotation.java
index 7aedf55..a575ddf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForMixinAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForMixinAnnotation.java
@@ -24,7 +24,7 @@ import java.lang.reflect.Constructor;
 import org.apache.isis.applib.annotation.Mixin;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class MixinFacetForMixinAnnotation extends MixinFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForMixinAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForMixinAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForMixinAnnotationFactory.java
index 9abf95d..504ba5e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForMixinAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForMixinAnnotationFactory.java
@@ -23,8 +23,6 @@ import org.apache.isis.applib.annotation.Mixin;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 
 public class MixinFacetForMixinAnnotationFactory extends FacetFactoryAbstract  {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
index bb25afe..aaa7823 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
index 60ee4ac..c06ebfb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
index abdc804..9d354ef 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstra
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
index 8b1fc7e..492405d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetAbstract.java
index 59eb105..ce810f9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetAbstract.java
@@ -28,7 +28,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public abstract class ParseableFacetAbstract extends FacetAbstract implements ParseableFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
index 8257497..32f2163 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParserUtil;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class ParseableFacetAnnotation extends ParseableFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
index 5947f308..95aef7f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.parseable.annotcfg;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class ParseableFacetFromConfiguration extends ParseableFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
index 9045b2f..16b0ddf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.interactions.ParseValueContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 public class ParseableFacetUsingParser extends FacetAbstract implements ParseableFacet {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
index 67520db..6ff1850 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
index 481c044..e28706e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
index 63de997..1433695 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
@@ -22,14 +22,13 @@ package org.apache.isis.core.metamodel.facets.object.recreatable;
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.ViewModel;
-import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
 import org.apache.isis.core.commons.lang.MethodExtensions;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public abstract class RecreatableObjectFacetAbstract extends MarkerFacetAbstract implements ViewModelFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
index cac9fb5..bc15bec 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
index d8a98c1..2ca3f84 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
@@ -43,8 +43,6 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 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;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableDomainObjectInterface.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableDomainObjectInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableDomainObjectInterface.java
index bc638e6..7ccd086 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableDomainObjectInterface.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableDomainObjectInterface.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.recreatable;
 import org.apache.isis.applib.RecreatableDomainObject;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class RecreatableObjectFacetForRecreatableDomainObjectInterface extends RecreatableObjectFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectAnnotation.java
index 3d787dc..d3de9dc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.recreatable;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class RecreatableObjectFacetForRecreatableObjectAnnotation extends

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectInterface.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectInterface.java
index 3765f8c..fb402f2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectInterface.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectInterface.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.recreatable;
 import org.apache.isis.applib.ViewModel;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class RecreatableObjectFacetForRecreatableObjectInterface extends RecreatableObjectFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
index 9a9ddbf..1c95e8f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.recreatable;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class RecreatableObjectFacetForViewModelAnnotation extends

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
index 0d3d6ce..35992e5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class RecreatableObjectFacetForXmlRootElementAnnotation extends RecreatableObjectFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/regex/annotation/RegExFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/regex/annotation/RegExFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/regex/annotation/RegExFacetOnTypeAnnotationFactory.java
index 6e4406d..f666226 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/regex/annotation/RegExFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/regex/annotation/RegExFacetOnTypeAnnotationFactory.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.regex.RegExFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 


[02/30] isis git commit: ISIS-1382: adding in missing 'cancel' button for action prompt. NB: already present for property edits.

Posted by da...@apache.org.
ISIS-1382: adding in missing 'cancel' button for action prompt.  NB: already present for property edits.


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

Branch: refs/heads/ISIS-1408
Commit: ab2c2ca7e07a69436594e4fd430067426ab54313
Parents: ed3b9e7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu May 19 16:16:05 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu May 19 16:16:05 2016 +0100

----------------------------------------------------------------------
 .../wicket/ui/components/actions/ActionParametersFormPanel.java    | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/ab2c2ca7/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
index b6820cc..4fec53b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
@@ -202,8 +202,6 @@ public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
             // so can submit with invalid content (eg mandatory params missing)
             cancelButton.setDefaultFormProcessing(false);
             add(cancelButton);
-            
-            cancelButton.setVisible(false);
         }
 
         /**


[19/30] isis git commit: ISIS-1409: internal components of RuntimeContext subclasses are now internal domain services; RuntimeContext hierarchy collapsed into a single class.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
new file mode 100644
index 0000000..ac0f6f0
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
@@ -0,0 +1,2341 @@
+/*
+ *  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.system.persistence;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Modifier;
+import java.text.MessageFormat;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import javax.jdo.FetchGroup;
+import javax.jdo.FetchPlan;
+import javax.jdo.PersistenceManager;
+import javax.jdo.PersistenceManagerFactory;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+import org.datanucleus.enhancement.Persistable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.isis.applib.RecoverableException;
+import org.apache.isis.applib.profiles.Localization;
+import org.apache.isis.applib.query.Query;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService2;
+import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.eventbus.AbstractLifecycleEvent;
+import org.apache.isis.applib.services.eventbus.EventBusService;
+import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
+import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer2;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.components.SessionScopedComponent;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
+import org.apache.isis.core.commons.ensure.Assert;
+import org.apache.isis.core.commons.ensure.Ensure;
+import org.apache.isis.core.commons.ensure.IsisAssertException;
+import org.apache.isis.core.commons.exceptions.IsisException;
+import org.apache.isis.core.commons.factory.InstanceUtil;
+import org.apache.isis.core.commons.util.ToString;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+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;
+import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
+import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
+import org.apache.isis.core.metamodel.adapter.version.Version;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.ElementSpecificationProviderFromTypeOfFacet;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
+import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.LifecycleEventFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet;
+import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
+import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
+import org.apache.isis.core.metamodel.spec.FreeStandingList;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.Contributed;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
+import org.apache.isis.core.runtime.persistence.NotPersistableException;
+import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
+import org.apache.isis.core.runtime.persistence.PojoRecreationException;
+import org.apache.isis.core.runtime.persistence.PojoRefreshException;
+import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
+import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
+import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerResolve;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource;
+import org.apache.isis.core.runtime.persistence.query.PersistenceQueryFindAllInstances;
+import org.apache.isis.core.runtime.persistence.query.PersistenceQueryFindUsingApplibQueryDefault;
+import org.apache.isis.core.runtime.runner.opts.OptionHandlerFixtureAbstract;
+import org.apache.isis.core.runtime.services.changes.ChangedObjectsServiceInternal;
+import org.apache.isis.core.runtime.services.metrics.MetricsServiceDefault;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.persistence.adaptermanager.OidAdapterHashMap;
+import org.apache.isis.core.runtime.system.persistence.adaptermanager.PojoAdapterHashMap;
+import org.apache.isis.core.runtime.system.persistence.adaptermanager.RootAndCollectionAdapters;
+import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
+import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
+import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
+import org.apache.isis.core.runtime.system.transaction.TransactionalClosureWithReturn;
+import org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusCreateObjectCommand;
+import org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusDeleteObjectCommand;
+import org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindAllInstancesProcessor;
+import org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindUsingApplibQueryProcessor;
+import org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryProcessor;
+import org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryProcessorAbstract;
+import org.apache.isis.objectstore.jdo.datanucleus.persistence.spi.JdoObjectIdSerializer;
+
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatContext;
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.CoreMatchers.nullValue;
+
+/**
+ * A wrapper around the JDO {@link PersistenceManager}, which also manages concurrency
+ * and maintains an identity map of {@link ObjectAdapter adapter}s and {@link Oid
+ * identities} for each and every POJO that is being used by the framework.
+ */
+public class PersistenceSessionInternal implements
+        TransactionalResource,
+        SessionScopedComponent,
+        AdapterManager,
+        MessageBrokerServiceInternal,
+        PersistenceSessionServiceInternal,
+        IsisLifecycleListener2.PersistenceSessionLifecycleManagement,
+        IsisTransactionManager.PersistenceSessionTransactionManagement,
+        PersistenceQueryProcessorAbstract.PersistenceSessionQueryProcessorManagement {
+
+    //region > constants
+    private static final Logger LOG = LoggerFactory.getLogger(PersistenceSessionInternal.class);
+
+    /**
+     * @see #isFixturesInstalled()
+     */
+    public static final String INSTALL_FIXTURES_KEY = OptionHandlerFixtureAbstract.DATANUCLEUS_INSTALL_FIXTURES_KEY;
+    public static final boolean INSTALL_FIXTURES_DEFAULT = false;
+
+    private static final String ROOT_KEY = OptionHandlerFixtureAbstract.DATANUCLEUS_ROOT_KEY;
+
+    /**
+     * Append regular <a href="http://www.datanucleus.org/products/accessplatform/persistence_properties.html">datanucleus properties</a> to this key
+     */
+    public static final String DATANUCLEUS_PROPERTIES_ROOT = ROOT_KEY + "impl.";
+    //endregion
+
+    //region > constructor, fields, finalize()
+
+    private final FixturesInstalledFlag fixturesInstalledFlag;
+
+    private final PersistenceQueryFactory persistenceQueryFactory;
+    private final IsisConfigurationDefault configuration;
+    private final SpecificationLoader specificationLoader;
+    private final AuthenticationSession authenticationSession;
+
+    private final ServicesInjector servicesInjector;
+    /**
+     * Used to create the {@link #persistenceManager} when {@link #open()}ed.
+     */
+    private final PersistenceManagerFactory jdoPersistenceManagerFactory;
+
+    // not final only for testing purposes
+    private IsisTransactionManager transactionManager;
+
+    private final OidMarshaller oidMarshaller = new OidMarshaller();
+
+    /**
+     * populated only when {@link #open()}ed.
+     */
+    private PersistenceManager persistenceManager;
+
+    /**
+     * populated only when {@link #open()}ed.
+     */
+    private final Map<Class<?>, PersistenceQueryProcessor<?>> persistenceQueryProcessorByClass = Maps.newHashMap();
+
+    private final Map<ObjectSpecId, RootOid> registeredServices = Maps.newHashMap();
+
+    private final boolean concurrencyCheckingGloballyEnabled;
+
+
+    /**
+     * Initialize the object store so that calls to this object store access
+     * persisted objects and persist changes to the object that are saved.
+     */
+    public PersistenceSessionInternal(
+            final IsisConfigurationDefault configuration,
+            final ServicesInjector servicesInjector,
+            final SpecificationLoader specificationLoader,
+            final AuthenticationSession authenticationSession,
+            final PersistenceManagerFactory jdoPersistenceManagerFactory,
+            final FixturesInstalledFlag fixturesInstalledFlag) {
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("creating " + this);
+        }
+
+        // injected
+        this.configuration = configuration;
+        this.specificationLoader = specificationLoader;
+        this.authenticationSession = authenticationSession;
+        this.fixturesInstalledFlag = fixturesInstalledFlag;
+
+        this.servicesInjector = servicesInjector;
+        this.jdoPersistenceManagerFactory = jdoPersistenceManagerFactory;
+
+        // sub-components
+        final AdapterManager adapterManager = this;
+        this.persistenceQueryFactory = new PersistenceQueryFactory(adapterManager, specificationLoader);
+        final IsisTransactionManager.PersistenceSessionTransactionManagement psTranManagement = this;
+        this.transactionManager = new IsisTransactionManager(psTranManagement, servicesInjector);
+
+        setState(State.NOT_INITIALIZED);
+
+        final boolean concurrencyCheckingGloballyDisabled =
+                configuration.getBoolean("isis.persistor.disableConcurrencyChecking", false);
+        this.concurrencyCheckingGloballyEnabled = !concurrencyCheckingGloballyDisabled;
+
+    }
+
+    @Override
+    protected void finalize() throws Throwable {
+        super.finalize();
+        LOG.debug("finalizing persistence session");
+    }
+
+    //endregion
+
+
+    //region > open
+
+    /**
+     * Only populated once {@link #open()}'d
+     */
+    public PersistenceManager getPersistenceManager() {
+        return persistenceManager;
+    }
+
+    /**
+     * Injects components, calls open on subcomponents, and then creates service
+     * adapters.
+     */
+    public void open() {
+        ensureNotOpened();
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("opening " + this);
+        }
+
+        oidAdapterMap.open();
+        pojoAdapterMap.open();
+
+        persistenceManager = jdoPersistenceManagerFactory.getPersistenceManager();
+
+        final IsisLifecycleListener2.PersistenceSessionLifecycleManagement psLifecycleMgmt = this;
+        final IsisLifecycleListener2 isisLifecycleListener = new IsisLifecycleListener2(psLifecycleMgmt);
+        persistenceManager.addInstanceLifecycleListener(isisLifecycleListener, (Class[]) null);
+
+        final PersistenceQueryProcessorAbstract.PersistenceSessionQueryProcessorManagement psQueryProcessorMgmt = this;
+        persistenceQueryProcessorByClass.put(
+                PersistenceQueryFindAllInstances.class,
+                new PersistenceQueryFindAllInstancesProcessor(psQueryProcessorMgmt));
+        persistenceQueryProcessorByClass.put(
+                PersistenceQueryFindUsingApplibQueryDefault.class,
+                new PersistenceQueryFindUsingApplibQueryProcessor(psQueryProcessorMgmt));
+
+        initServices();
+
+        final MetricsServiceDefault metricsServiceDefault = servicesInjector.lookupService(MetricsServiceDefault.class);
+        persistenceManager.addInstanceLifecycleListener(metricsServiceDefault, (Class[])null);
+
+        setState(State.OPEN);
+    }
+
+
+    /**
+     * Creates {@link ObjectAdapter adapters} for the service list.
+     */
+    private void initServices() {
+        final List<Object> registeredServices = servicesInjector.getRegisteredServices();
+        for (final Object service : registeredServices) {
+            final ObjectSpecification serviceSpecification =
+                    specificationLoader.loadSpecification(service.getClass());
+            serviceSpecification.markAsService();
+            final RootOid existingOid = getOidForService(serviceSpecification);
+            final ObjectAdapter serviceAdapter =
+                    existingOid == null
+                            ? adapterFor(service)
+                            : mapRecreatedPojo(existingOid, service);
+            if (serviceAdapter.getOid().isTransient()) {
+                remapAsPersistent(serviceAdapter, null);
+            }
+
+            if (existingOid == null) {
+                final RootOid persistentOid = (RootOid) serviceAdapter.getOid();
+                this.registeredServices.put(persistentOid.getObjectSpecId(), persistentOid);
+            }
+        }
+    }
+
+    //endregion
+
+    //region > close
+
+    /**
+     * Closes the subcomponents.
+     *
+     * <p>
+     * Automatically {@link IsisTransactionManager#endTransaction() ends
+     * (commits)} the current (Isis) {@link IsisTransaction}. This in turn commits the underlying
+     * JDO transaction.
+     *
+     * <p>
+     * The corresponding DataNucleus entity is then closed.
+     */
+    public void close() {
+
+        if (getState() == State.CLOSED) {
+            // nothing to do
+            return;
+        }
+
+        try {
+            final IsisTransaction currentTransaction = transactionManager.getTransaction();
+            if (currentTransaction != null && !currentTransaction.getState().isComplete()) {
+                if(currentTransaction.getState().canCommit()) {
+                    transactionManager.endTransaction();
+                } else if(currentTransaction.getState().canAbort()) {
+                    transactionManager.abortTransaction();
+                }
+            }
+        } catch(final Throwable ex) {
+            // ignore
+            LOG.error("close: failed to end transaction; continuing to avoid memory leakage");
+        }
+
+        try {
+            persistenceManager.close();
+        } catch(final Throwable ex) {
+            // ignore
+            LOG.error(
+                "close: failed to close JDO persistenceManager; continuing to avoid memory leakage");
+        }
+        // TODO: REVIEW ... ??? this is a guess: don't set to null, because we need for -> transactionManager -> transaction -> messageBroker
+        // persistenceManager = null;
+
+        try {
+            oidAdapterMap.close();
+        } catch(final Throwable ex) {
+            // ignore
+            LOG.error("close: oidAdapterMap#close() failed; continuing to avoid memory leakage");
+        }
+
+        try {
+            pojoAdapterMap.close();
+        } catch(final Throwable ex) {
+            // ignore
+            LOG.error("close: pojoAdapterMap#close() failed; continuing to avoid memory leakage");
+        }
+
+        setState(State.CLOSED);
+    }
+
+    //endregion
+
+    //region > Injectable
+    @Override
+    public void injectInto(final Object candidate) {
+        if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
+            final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
+            cast.setAdapterManager(this);
+        }
+        if (MessageBrokerServiceAware.class.isAssignableFrom(candidate.getClass())) {
+            final MessageBrokerServiceAware cast = MessageBrokerServiceAware.class.cast(candidate);
+            cast.setMessageBrokerService(this);
+        }
+        if (PersistenceSessionServiceAware.class.isAssignableFrom(candidate.getClass())) {
+            final PersistenceSessionServiceAware cast = PersistenceSessionServiceAware.class.cast(candidate);
+            cast.setPersistenceSessionService(this);
+        }
+    }
+    //endregion
+
+    //region > QuerySubmitter impl, findInstancesInTransaction
+
+    @Override
+    public <T> List<ObjectAdapter> allMatchingQuery(final Query<T> query) {
+        final ObjectAdapter instances = findInstancesInTransaction(query, QueryCardinality.MULTIPLE);
+        return CollectionFacetUtils.convertToAdapterList(instances);
+    }
+
+    @Override
+    public <T> ObjectAdapter firstMatchingQuery(final Query<T> query) {
+        final ObjectAdapter instances = findInstancesInTransaction(query, QueryCardinality.SINGLE);
+        final List<ObjectAdapter> list = CollectionFacetUtils.convertToAdapterList(instances);
+        return list.size() > 0 ? list.get(0) : null;
+    }
+
+    /**
+     * Finds and returns instances that match the specified query.
+     *
+     * <p>
+     * The {@link QueryCardinality} determines whether all instances or just the
+     * first matching instance is returned.
+     *
+     * @throws org.apache.isis.core.runtime.persistence.UnsupportedFindException
+     *             if the criteria is not support by this persistor
+     */
+    private <T> ObjectAdapter findInstancesInTransaction(final Query<T> query, final QueryCardinality cardinality) {
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("findInstances using (applib) Query: " + query);
+        }
+
+        // TODO: unify PersistenceQuery and PersistenceQueryProcessor
+        final PersistenceQuery persistenceQuery = createPersistenceQueryFor(query, cardinality);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("maps to (core runtime) PersistenceQuery: " + persistenceQuery);
+        }
+
+        final PersistenceQueryProcessor<? extends PersistenceQuery> processor = lookupProcessorFor(persistenceQuery);
+
+        final List<ObjectAdapter> instances = transactionManager.executeWithinTransaction(
+                new TransactionalClosureWithReturn<List<ObjectAdapter>>() {
+                    @Override
+                    public List<ObjectAdapter> execute() {
+                        return processPersistenceQuery(processor, persistenceQuery);
+                    }
+                });
+        final ObjectSpecification specification = persistenceQuery.getSpecification();
+        final FreeStandingList results = new FreeStandingList(specification, instances);
+        return adapterFor(results);
+    }
+
+    /**
+     * Converts the {@link Query applib representation of a query} into the
+     * {@link PersistenceQuery NOF-internal representation}.
+     */
+    private final PersistenceQuery createPersistenceQueryFor(
+            final Query<?> query,
+            final QueryCardinality cardinality) {
+
+        final PersistenceQuery persistenceQuery =
+                persistenceQueryFactory.createPersistenceQueryFor(query, cardinality);
+        if (persistenceQuery == null) {
+            throw new IllegalArgumentException("Unknown Query type: " + query.getDescription());
+        }
+
+        return persistenceQuery;
+    }
+
+    private PersistenceQueryProcessor<? extends PersistenceQuery> lookupProcessorFor(final PersistenceQuery persistenceQuery) {
+        final Class<? extends PersistenceQuery> persistenceQueryClass = persistenceQuery.getClass();
+        final PersistenceQueryProcessor<? extends PersistenceQuery> processor =
+                persistenceQueryProcessorByClass.get(persistenceQueryClass);
+        if (processor == null) {
+            throw new UnsupportedFindException(MessageFormat.format(
+                    "Unsupported PersistenceQuery class: {0}", persistenceQueryClass.getName()));
+        }
+        return processor;
+    }
+    @SuppressWarnings("unchecked")
+    private <Q extends PersistenceQuery> List<ObjectAdapter> processPersistenceQuery(
+            final PersistenceQueryProcessor<Q> persistenceQueryProcessor,
+            final PersistenceQuery persistenceQuery) {
+        return persistenceQueryProcessor.process((Q) persistenceQuery);
+    }
+
+    public IsisConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    public OidMarshaller getOidMarshaller() {
+        return oidMarshaller;
+    }
+
+
+    //endregion
+
+    //region > State
+
+    private enum State {
+        NOT_INITIALIZED, OPEN, CLOSED
+    }
+
+    private State state;
+
+    private State getState() {
+        return state;
+    }
+    
+    private void setState(final State state) {
+        this.state = state;
+    }
+    
+    protected void ensureNotOpened() {
+        if (getState() != State.NOT_INITIALIZED) {
+            throw new IllegalStateException("Persistence session has already been initialized");
+        }
+    }
+
+    public void ensureOpened() {
+        ensureStateIs(State.OPEN);
+    }
+
+    private void ensureStateIs(final State stateRequired) {
+        if (state == stateRequired) {
+            return;
+        }
+        throw new IllegalStateException("State is: " + state + "; should be: " + stateRequired);
+    }
+
+
+
+    //endregion
+
+    //region > createTransientInstance, createViewModelInstance
+
+    /**
+     * Create a root or standalone {@link ObjectAdapter adapter}.
+     *
+     * <p>
+     * Creates a new instance of the specified type and returns it in an adapter.
+     *
+     * <p>
+     * The returned object will be initialised (had the relevant callback
+     * lifecycle methods invoked).
+     *
+     * <p>
+     * While creating the object it will be initialised with default values and
+     * its created lifecycle method (its logical constructor) will be invoked.
+     *
+     * <p>
+     * This method is ultimately delegated to by the
+     * {@link org.apache.isis.applib.DomainObjectContainer}.
+     */
+    public ObjectAdapter createTransientInstance(final ObjectSpecification objectSpec) {
+        return createInstance(objectSpec, Variant.TRANSIENT, null);
+    }
+
+    public ObjectAdapter createViewModelInstance(final ObjectSpecification objectSpec, final String memento) {
+        return createInstance(objectSpec, Variant.VIEW_MODEL, memento);
+    }
+
+    private enum Variant {
+        TRANSIENT,
+        VIEW_MODEL
+    }
+
+    private ObjectAdapter createInstance(
+            final ObjectSpecification spec,
+            final Variant variant,
+            final String memento) {
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("creating " + variant + " instance of " + spec);
+        }
+        final Object pojo;
+
+        if(variant == Variant.VIEW_MODEL) {
+            pojo = recreateViewModel(spec, memento);
+        } else {
+            pojo = instantiateAndInjectServices(spec);
+
+        }
+
+        final ObjectAdapter adapter = adapterFor(pojo);
+        return initializePropertiesAndDoCallback(adapter);
+    }
+
+    private Object recreateViewModel(final ObjectSpecification spec, final String memento) {
+        final ViewModelFacet facet = spec.getFacet(ViewModelFacet.class);
+        if(facet == null) {
+            throw new IllegalArgumentException("spec does not have ViewModelFacet; spec is " + spec.getFullIdentifier());
+        }
+
+        final Object viewModelPojo;
+        if(facet.getRecreationMechanism().isInitializes()) {
+            viewModelPojo = instantiateAndInjectServices(spec);
+            facet.initialize(viewModelPojo, memento);
+        } else {
+            viewModelPojo = facet.instantiate(spec.getCorrespondingClass(), memento);
+        }
+        return viewModelPojo;
+    }
+
+    public Object instantiateAndInjectServices(final ObjectSpecification objectSpec) {
+
+        final Class<?> correspondingClass = objectSpec.getCorrespondingClass();
+        if (correspondingClass.isArray()) {
+            return Array.newInstance(correspondingClass.getComponentType(), 0);
+        }
+
+        final Class<?> cls = correspondingClass;
+        if (Modifier.isAbstract(cls.getModifiers())) {
+            throw new IsisException("Cannot create an instance of an abstract class: " + cls);
+        }
+        final Object newInstance;
+        if (Modifier.isAbstract(cls.getModifiers())) {
+            throw new IsisException("Cannot create an instance of an abstract class: " + cls);
+        }
+
+        try {
+            newInstance = cls.newInstance();
+        } catch (final IllegalAccessException | InstantiationException e) {
+            throw new IsisException("Failed to create instance of type " + objectSpec.getFullIdentifier(), e);
+        }
+
+        servicesInjector.injectServicesInto(newInstance);
+        return newInstance;
+
+    }
+
+    private ObjectAdapter initializePropertiesAndDoCallback(final ObjectAdapter adapter) {
+
+        // initialize new object
+        final List<ObjectAssociation> fields = adapter.getSpecification().getAssociations(Contributed.EXCLUDED);
+        for (ObjectAssociation field : fields) {
+            field.toDefault(adapter);
+        }
+        final Object pojo = adapter.getObject();
+        servicesInjector.injectServicesInto(pojo);
+
+        CallbackFacet.Util.callCallback(adapter, CreatedCallbackFacet.class);
+
+        if (Command.class.isAssignableFrom(pojo.getClass())) {
+
+            // special case... the command object is created while the transaction is being started and before
+            // the event bus service is initialized (nb: we initialize services *within* a transaction).  To resolve
+            // this catch-22 situation, we simply suppress the posting of this event for this domain class.
+
+            // this seems the least unpleasant of the various options available:
+            // * we could have put a check in the EventBusService to ignore the post if not yet initialized;
+            //   however this might hide other genuine errors
+            // * we could have used the thread-local in JdoStateManagerForIsis and the "skip(...)" hook in EventBusServiceJdo
+            //   to have this event be skipped; but that seems like co-opting some other design
+            // * we could have the transaction initialize the EventBusService as a "special case" before creating the Command;
+            //   but then do we worry about it being re-init'd later by the ServicesInitializer?
+
+            // so, doing it this way is this simplest, least obscure.
+
+            if(LOG.isDebugEnabled()) {
+                LOG.debug("Skipping postEvent for creation of Command pojo");
+            }
+
+        } else {
+            postLifecycleEventIfRequired(adapter, CreatedLifecycleEventFacet.class);
+        }
+
+        return adapter;
+    }
+
+
+    //endregion
+
+    //region > getServices, getService
+
+    public List<ObjectAdapter> getServices() {
+        final List<Object> services = servicesInjector.getRegisteredServices();
+        final List<ObjectAdapter> serviceAdapters = Lists.newArrayList();
+        for (final Object servicePojo : services) {
+            serviceAdapters.add(getService(servicePojo));
+        }
+        return serviceAdapters;
+    }
+
+    private ObjectAdapter getService(final Object servicePojo) {
+        final ObjectSpecification serviceSpecification =
+                specificationLoader.loadSpecification(servicePojo.getClass());
+        final RootOid oid = getOidForService(serviceSpecification);
+        final ObjectAdapter serviceAdapter = mapRecreatedPojo(oid, servicePojo);
+
+        return serviceAdapter;
+    }
+
+    /**
+     * Returns the OID for the adapted service. This allows a service object to
+     * be given the same OID that it had when it was created in a different
+     * session.
+     */
+    private RootOid getOidForService(final ObjectSpecification serviceSpec) {
+        final ObjectSpecId serviceSpecId = serviceSpec.getSpecId();
+        final RootOid oid = this.registeredServices.get(serviceSpecId);
+        return oid;
+    }
+
+    //endregion
+
+    //region > helper: postEvent
+
+    void postLifecycleEventIfRequired(
+            final ObjectAdapter adapter,
+            final Class<? extends LifecycleEventFacet> lifecycleEventFacetClass) {
+        final LifecycleEventFacet facet = adapter.getSpecification().getFacet(lifecycleEventFacetClass);
+        if(facet != null) {
+            final Class<? extends AbstractLifecycleEvent<?>> eventType = facet.getEventType();
+            final Object instance = InstanceUtil.createInstance(eventType);
+            final Object pojo = adapter.getObject();
+            postEvent((AbstractLifecycleEvent) instance, pojo);
+        }
+    }
+
+    void postEvent(final AbstractLifecycleEvent<Object> event, final Object pojo) {
+        final EventBusService eventBusService = getServicesInjector().lookupService(EventBusService.class);
+        event.setSource(pojo);
+        eventBusService.post(event);
+    }
+    //endregion
+
+
+
+    //region > fixture installation
+
+    /**
+     * Determine if the object store has been initialized with its set of start
+     * up objects.
+     * 
+     * <p>
+     * This method is called only once after the init has been called. If this flag
+     * returns <code>false</code> the framework will run the fixtures to
+     * initialise the persistor.
+     * 
+     * <p>
+     * Returns the cached value of {@link #isFixturesInstalled()
+     * whether fixtures are installed} from the
+     * {@link PersistenceSessionFactory}.
+     * <p>
+     * This caching is important because if we've determined, for a given run,
+     * that fixtures are not installed, then we don't want to change our mind by
+     * asking the object store again in another session.
+     * 
+     * @see FixturesInstalledFlag
+     */
+    public boolean isFixturesInstalled() {
+        if (fixturesInstalledFlag.isFixturesInstalled() == null) {
+            fixturesInstalledFlag.setFixturesInstalled(objectStoreIsFixturesInstalled());
+        }
+        return fixturesInstalledFlag.isFixturesInstalled();
+    }
+
+
+    /**
+     * Determine if the object store has been initialized with its set of start
+     * up objects.
+     *
+     * <p>
+     * This method is called only once after the session is opened called. If it returns <code>false</code> then the
+     * framework will run the fixtures to initialise the object store.
+     *
+     * <p>
+     * Implementation looks for the {@link #INSTALL_FIXTURES_KEY} in the injected {@link #configuration configuration}.
+     *
+     * <p>
+     * By default this is not expected to be there, but utilities can add in on
+     * the fly during bootstrapping if required.
+     */
+    public boolean objectStoreIsFixturesInstalled() {
+        final boolean installFixtures = configuration.getBoolean(INSTALL_FIXTURES_KEY, INSTALL_FIXTURES_DEFAULT);
+        LOG.info("isFixturesInstalled: {} = {}", INSTALL_FIXTURES_KEY, installFixtures);
+        return !installFixtures;
+    }
+
+    //endregion
+
+    //region > loadObject
+
+    /**
+     * Loads the object identified by the specified {@link RootOid}.
+     *
+     * <p>
+     * That is, it retrieves the object identified by the specified {@link RootOid} from the object
+     * store, {@link AdapterManager#mapRecreatedPojo(org.apache.isis.core.metamodel.adapter.oid.Oid, Object) mapped by
+     * the adapter manager}.
+     *
+     * <p>The cache should be checked first and, if the object is cached,
+     * the cached version should be returned. It is important that if this
+     * method is called again, while the originally returned object is in
+     * working memory, then this method must return that same Java object.
+     *
+     * <p>
+     * Assuming that the object is not cached then the data for the object
+     * should be retrieved from the persistence mechanism and the object
+     * recreated (as describe previously). The specified OID should then be
+     * assigned to the recreated object by calling its <method>setOID </method>.
+     * Before returning the object its resolved flag should also be set by
+     * calling its <method>setResolved </method> method as well.
+     *
+     * <p>
+     * If the persistence mechanism does not known of an object with the
+     * specified {@link RootOid} then a {@link org.apache.isis.core.runtime.persistence.ObjectNotFoundException} should be
+     * thrown.
+     *
+     * <p>
+     * Note that the OID could be for an internal collection, and is
+     * therefore related to the parent object (using a {@link ParentedCollectionOid}).
+     * The elements for an internal collection are commonly stored as
+     * part of the parent object, so to get element the parent object needs to
+     * be retrieved first, and the internal collection can be got from that.
+     *
+     * <p>
+     * Returns the stored {@link ObjectAdapter} object.
+     *
+     *
+     * @return the requested {@link ObjectAdapter} that has the specified
+     *         {@link RootOid}.
+     *
+     * @throws org.apache.isis.core.runtime.persistence.ObjectNotFoundException
+     *             when no object corresponding to the oid can be found
+     */
+    public ObjectAdapter loadObjectInTransaction(final RootOid oid) {
+        
+        // REVIEW: 
+        // this method does not account for the oid possibly being a view model
+        // alternatively, can call #adapterFor(oid); this code
+        // delegates to the PojoRecreator which *does* take view models into account
+        //
+        // it's possible, therefore, that existing callers to this method (the Scimpi viewer)
+        // could be refactored to use #adapterFor(...)
+        ensureThatArg(oid, is(notNullValue()));
+
+        final ObjectAdapter adapter = getAdapterFor(oid);
+        if (adapter != null) {
+            return adapter;
+        }
+
+        return transactionManager.executeWithinTransaction(
+                new TransactionalClosureWithReturn<ObjectAdapter>() {
+                    @Override
+                    public ObjectAdapter execute() {
+                        if (LOG.isDebugEnabled()) {
+                            LOG.debug("getObject; oid=" + oid);
+                        }
+
+                        final Object pojo = loadPojo(oid);
+                        return mapRecreatedPojo(oid, pojo);
+                    }
+                });
+    }
+
+
+    //endregion
+
+    //region > loadPojo
+
+    public Object loadPojo(final RootOid rootOid) {
+
+        Object result;
+        try {
+            final Class<?> cls = clsOf(rootOid);
+            final Object jdoObjectId = JdoObjectIdSerializer.toJdoObjectId(rootOid);
+            FetchPlan fetchPlan = persistenceManager.getFetchPlan();
+            fetchPlan.addGroup(FetchGroup.DEFAULT);
+            result = persistenceManager.getObjectById(cls, jdoObjectId);
+        } catch (final RuntimeException e) {
+
+            final List<ExceptionRecognizer> exceptionRecognizers = getServicesInjector().lookupServices(ExceptionRecognizer.class);
+            for (ExceptionRecognizer exceptionRecognizer : exceptionRecognizers) {
+                if(exceptionRecognizer instanceof ExceptionRecognizer2) {
+                    final ExceptionRecognizer2 recognizer = (ExceptionRecognizer2) exceptionRecognizer;
+                    final ExceptionRecognizer2.Recognition recognition = recognizer.recognize2(e);
+                    if(recognition != null) {
+                        if(recognition.getCategory() == ExceptionRecognizer2.Category.NOT_FOUND) {
+                            throw new ObjectNotFoundException(rootOid, e);
+                        }
+                    }
+                }
+            }
+
+            throw e;
+        }
+
+        if (result == null) {
+            throw new ObjectNotFoundException(rootOid);
+        }
+        return result;
+    }
+
+    private Class<?> clsOf(final RootOid oid) {
+        final ObjectSpecification objectSpec = getSpecificationLoader().lookupBySpecId(oid.getObjectSpecId());
+        return objectSpec.getCorrespondingClass();
+    }
+
+    //endregion
+
+    //region > lazilyLoaded
+
+
+    public ObjectAdapter mapPersistent(final Persistable pojo) {
+        if (persistenceManager.getObjectId(pojo) == null) {
+            return null;
+        }
+        final RootOid oid = createPersistentOrViewModelOid(pojo);
+        final ObjectAdapter adapter = mapRecreatedPojo(oid, pojo);
+        return adapter;
+    }
+
+
+    //endregion
+
+    //region > refreshRootInTransaction, refreshRoot
+
+    /**
+     * Re-initialises the fields of an object. If the object is unresolved then
+     * the object's missing data should be retrieved from the persistence
+     * mechanism and be used to set up the value objects and associations.
+     */
+    public void refreshRootInTransaction(final ObjectAdapter adapter) {
+        Assert.assertTrue("only resolve object that is persistent", adapter, adapter.representsPersistent());
+        getTransactionManager().executeWithinTransaction(new TransactionalClosure() {
+
+            @Override
+            public void execute() {
+
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("resolveImmediately; oid=" + adapter.getOid().enString(oidMarshaller));
+                }
+
+                if (!adapter.representsPersistent()) {
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug("; not persistent - ignoring");
+                    }
+                    return;
+                }
+
+                refreshRoot(adapter);
+            }
+
+        });
+    }
+
+    /**
+     * Forces a reload (refresh in JDO terminology) of the domain object wrapped in the {@link ObjectAdapter}.
+     */
+    public void refreshRoot(final ObjectAdapter adapter) {
+
+        final Object domainObject = adapter.getObject();
+        if (domainObject == null) {
+            // REVIEW: is this possible?
+            throw new PojoRefreshException(adapter.getOid());
+        }
+
+        try {
+            persistenceManager.refresh(domainObject);
+        } catch (final RuntimeException e) {
+            throw new PojoRefreshException(adapter.getOid(), e);
+        }
+
+        // possibly redundant because also called in the post-load event
+        // listener, but (with JPA impl) found it was required if we were ever to
+        // get an eager left-outer-join as the result of a refresh (sounds possible).
+        initializeMapAndCheckConcurrency((Persistable) domainObject);
+    }
+    //endregion
+
+    //region > makePersistent
+
+    /**
+     * Makes an {@link ObjectAdapter} persistent. The specified object should be
+     * stored away via this object store's persistence mechanism, and have a
+     * new and unique OID assigned to it. The object, should also be added to
+     * the {@link PersistenceSessionInternal} as the object is implicitly 'in use'.
+     *
+     * <p>
+     * If the object has any associations then each of these, where they aren't
+     * already persistent, should also be made persistent by recursively calling
+     * this method.
+     *
+     * <p>
+     * If the object to be persisted is a collection, then each element of that
+     * collection, that is not already persistent, should be made persistent by
+     * recursively calling this method.
+     */
+    public void makePersistentInTransaction(final ObjectAdapter adapter) {
+        if (adapter.representsPersistent()) {
+            throw new NotPersistableException("Object already persistent: " + adapter);
+        }
+        if (!adapter.getSpecification().persistability().isPersistable()) {
+            throw new NotPersistableException("Object is not persistable: " + adapter);
+        }
+        final ObjectSpecification specification = adapter.getSpecification();
+        if (specification.isService()) {
+            throw new NotPersistableException("Cannot persist services: " + adapter);
+        }
+
+        getTransactionManager().executeWithinTransaction(new TransactionalClosure() {
+
+            @Override
+            public void execute() {
+                makePersistentTransactionAssumed(adapter);
+
+                // clear out the map of transient -> persistent
+                PersistenceSessionInternal.this.persistentByTransient.clear();
+            }
+
+        });
+    }
+
+    private void makePersistentTransactionAssumed(final ObjectAdapter adapter) {
+        if (alreadyPersistedOrNotPersistable(adapter)) {
+            return;
+        }
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("persist " + adapter);
+        }
+
+        // previously we called the PersistingCallback here.
+        // this is now done in the JDO framework synchronizer.
+        //
+        // the guard below used to be because (apparently)
+        // the callback might have caused the adapter to become persistent.
+        // leaving it in as think it does no harm...
+        if (alreadyPersistedOrNotPersistable(adapter)) {
+            return;
+        }
+        addCreateObjectCommand(adapter);
+    }
+
+    /**
+     * {@link #newCreateObjectCommand(ObjectAdapter) Create}s a {@link CreateObjectCommand}, and adds to the
+     * {@link IsisTransactionManager}.
+     */
+    private void addCreateObjectCommand(final ObjectAdapter object) {
+        final CreateObjectCommand createObjectCommand = newCreateObjectCommand(object);
+        transactionManager.addCommand(createObjectCommand);
+    }
+
+
+
+    private static boolean alreadyPersistedOrNotPersistable(final ObjectAdapter adapter) {
+        return adapter.representsPersistent() || objectSpecNotPersistable(adapter);
+    }
+
+
+    private static boolean objectSpecNotPersistable(final ObjectAdapter adapter) {
+        return !adapter.getSpecification().persistability().isPersistable() || adapter.isParentedCollection();
+    }
+
+
+    //endregion
+
+    //region > ObjectPersistor impl
+    @Override
+    public void makePersistent(final ObjectAdapter adapter) {
+        makePersistentInTransaction(adapter);
+    }
+
+    @Override
+    public void remove(final ObjectAdapter adapter) {
+        destroyObjectInTransaction(adapter);
+    }
+    //endregion
+
+
+    //region > destroyObjectInTransaction
+
+    /**
+     * Removes the specified object from the system. The specified object's data
+     * should be removed from the persistence mechanism.
+     */
+    public void destroyObjectInTransaction(final ObjectAdapter adapter) {
+        final ObjectSpecification spec = adapter.getSpecification();
+        if (spec.isParented()) {
+            return;
+        }
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("destroyObject " + adapter);
+        }
+        transactionManager.executeWithinTransaction(new TransactionalClosure() {
+            @Override
+            public void execute() {
+                final DestroyObjectCommand command = newDestroyObjectCommand(adapter);
+                transactionManager.addCommand(command);
+            }
+        });
+    }
+
+    //endregion
+
+    //region > newXxxCommand
+    /**
+     * Makes an {@link ObjectAdapter} persistent. The specified object should be
+     * stored away via this object store's persistence mechanism, and have an
+     * new and unique OID assigned to it (by calling the object's
+     * <code>setOid</code> method). The object, should also be added to the
+     * cache as the object is implicitly 'in use'.
+     *
+     * <p>
+     * If the object has any associations then each of these, where they aren't
+     * already persistent, should also be made persistent by recursively calling
+     * this method.
+     * </p>
+     *
+     * <p>
+     * If the object to be persisted is a collection, then each element of that
+     * collection, that is not already persistent, should be made persistent by
+     * recursively calling this method.
+     * </p>
+     *
+     */
+    private CreateObjectCommand newCreateObjectCommand(final ObjectAdapter adapter) {
+        ensureOpened();
+        ensureInSession();
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("create object - creating command for: " + adapter);
+        }
+        if (adapter.representsPersistent()) {
+            throw new IllegalArgumentException("Adapter is persistent; adapter: " + adapter);
+        }
+        return new DataNucleusCreateObjectCommand(adapter, persistenceManager);
+    }
+
+    private void ensureInSession() {
+        ensureThatContext(IsisContext.inSession(), is(true));
+    }
+
+    private DestroyObjectCommand newDestroyObjectCommand(final ObjectAdapter adapter) {
+        ensureOpened();
+        ensureInSession();
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("destroy object - creating command for: " + adapter);
+        }
+        if (!adapter.representsPersistent()) {
+            throw new IllegalArgumentException("Adapter is not persistent; adapter: " + adapter);
+        }
+        return new DataNucleusDeleteObjectCommand(adapter, persistenceManager);
+    }
+    //endregion
+
+    //region > execute
+    public void execute(final List<PersistenceCommand> commands) {
+
+        ensureOpened();
+        ensureInTransaction();
+
+        // previously we used to check that there were some commands, and skip processing otherwise.
+        // we no longer do that; it could be (is quite likely) that DataNucleus has some dirty objects anyway that
+        // don't have commands wrapped around them...
+
+        executeCommands(commands);
+    }
+
+    private void executeCommands(final List<PersistenceCommand> commands) {
+
+        for (final PersistenceCommand command : commands) {
+            command.execute(null);
+        }
+        persistenceManager.flush();
+    }
+    //endregion
+
+    //region > getAggregateRoot, remappedFrom
+
+    private Map<Oid, Oid> persistentByTransient = Maps.newHashMap();
+
+    public ObjectAdapter getAggregateRoot(final ParentedCollectionOid collectionOid) {
+        final Oid rootOid = collectionOid.getRootOid();
+        ObjectAdapter rootadapter = getAdapterFor(rootOid);
+        if(rootadapter == null) {
+            final Oid parentOidNowPersisted = remappedFrom(rootOid);
+            rootadapter = getAdapterFor(parentOidNowPersisted);
+        }
+        return rootadapter;
+    }
+
+    /**
+     * To support ISIS-234; keep track, for the duration of the transaction only,
+     * of the old transient {@link Oid}s and their corresponding persistent {@link Oid}s.
+     */
+    private Oid remappedFrom(final Oid transientOid) {
+        return persistentByTransient.get(transientOid);
+    }
+
+
+    //endregion
+
+    //region > transactions
+    public void startTransaction() {
+        final javax.jdo.Transaction transaction = persistenceManager.currentTransaction();
+        if (transaction.isActive()) {
+            throw new IllegalStateException("Transaction already active");
+        }
+        transaction.begin();
+    }
+
+    public void endTransaction() {
+        final javax.jdo.Transaction transaction = persistenceManager.currentTransaction();
+        if (transaction.isActive()) {
+            transaction.commit();
+        }
+    }
+
+    public void abortTransaction() {
+        final javax.jdo.Transaction transaction = persistenceManager.currentTransaction();
+        if (transaction.isActive()) {
+            transaction.rollback();
+        }
+    }
+
+    private void ensureInTransaction() {
+        ensureThatContext(IsisContext.inTransaction(), is(true));
+        javax.jdo.Transaction currentTransaction = persistenceManager.currentTransaction();
+        ensureThatState(currentTransaction, is(notNullValue()));
+        ensureThatState(currentTransaction.isActive(), is(true));
+    }
+
+    //endregion
+
+
+    //region > dependencies (from constructor)
+
+    protected SpecificationLoader getSpecificationLoader() {
+        return specificationLoader;
+    }
+    protected AuthenticationSession getAuthenticationSession() {
+        return authenticationSession;
+    }
+
+    /**
+     * The configured {@link ServicesInjector}.
+     */
+    public ServicesInjector getServicesInjector() {
+        return servicesInjector;
+    }
+
+
+    //endregion
+
+    //region > transactionManager
+
+
+    /**
+     * The configured {@link IsisTransactionManager}.
+     */
+    public IsisTransactionManager getTransactionManager() {
+        return transactionManager;
+    }
+
+    // for testing only
+    void setTransactionManager(final IsisTransactionManager transactionManager) {
+        this.transactionManager = transactionManager;
+    }
+
+
+    //endregion
+
+
+    //region > jdoPersistenceManager delegate methods
+    public javax.jdo.Query newJdoQuery(Class<?> cls) {
+        return persistenceManager.newQuery(cls);
+    }
+
+    public javax.jdo.Query newJdoNamedQuery (Class<?> cls, String queryName) {
+        return persistenceManager.newNamedQuery(cls, queryName);
+    }
+
+    public javax.jdo.Query newJdoQuery (Class<?> cls, String filter) {
+        return persistenceManager.newQuery(cls, filter);
+    }
+    // endregion
+
+    //region > AdapterManager implementation
+
+    private final PojoAdapterHashMap pojoAdapterMap = new PojoAdapterHashMap();
+    private final OidAdapterHashMap oidAdapterMap = new OidAdapterHashMap();
+
+    /**
+     * @deprecated
+     * @return - simply returns this {@link PersistenceSessionInternal}.
+     */
+    @Deprecated
+    public AdapterManager getAdapterManager() {
+        return this;
+    }
+
+    @Override
+    public ObjectAdapter getAdapterFor(final Object pojo) {
+        ensureThatArg(pojo, is(notNullValue()));
+
+        return pojoAdapterMap.getAdapter(pojo);
+    }
+
+    @Override
+    public ObjectAdapter getAdapterFor(final Oid oid) {
+        ensureThatArg(oid, is(notNullValue()));
+        ensureMapsConsistent(oid);
+
+        return oidAdapterMap.getAdapter(oid);
+    }
+
+
+    private ObjectAdapter existingOrValueAdapter(Object pojo) {
+
+        // attempt to locate adapter for the pojo
+        ObjectAdapter adapter = getAdapterFor(pojo);
+        if (adapter != null) {
+            return adapter;
+        }
+
+        // pojo may have been lazily loaded by object store, but we haven't yet seen it
+        if (pojo instanceof Persistable) {
+            adapter = mapPersistent((Persistable) pojo);
+
+            // TODO: could return null if the pojo passed in !dnIsPersistent() || !dnIsDetached()
+            // in which case, we would ought to map as a transient object, rather than fall through and treat as a value?
+        } else {
+            adapter = null;
+        }
+
+        if(adapter != null) {
+            return adapter;
+        }
+
+        // need to create (and possibly map) the adapter.
+        final ObjectSpecification objSpec = specificationLoader.loadSpecification(pojo.getClass());
+
+        // we create value facets as standalone (so not added to maps)
+        if (objSpec.containsFacet(ValueFacet.class)) {
+            adapter = createStandaloneAdapter(pojo);
+            return adapter;
+        }
+
+        return null;
+    }
+
+
+
+    /**
+     * Fail early if any problems.
+     */
+    private void ensureMapsConsistent(final ObjectAdapter adapter) {
+        if (adapter.isValue()) {
+            return;
+        }
+        if (adapter.isParentedCollection()) {
+            return;
+        }
+        ensurePojoAdapterMapConsistent(adapter);
+        ensureOidAdapterMapConsistent(adapter);
+    }
+
+    /**
+     * Fail early if any problems.
+     */
+    private void ensureMapsConsistent(final Oid oid) {
+        ensureThatArg(oid, is(notNullValue()));
+
+        final ObjectAdapter adapter = oidAdapterMap.getAdapter(oid);
+        if (adapter == null) {
+            return;
+        }
+        ensureOidAdapterMapConsistent(adapter);
+        ensurePojoAdapterMapConsistent(adapter);
+    }
+
+    private void ensurePojoAdapterMapConsistent(final ObjectAdapter adapter) {
+        final Object adapterPojo = adapter.getObject();
+        final ObjectAdapter adapterAccordingToMap = pojoAdapterMap.getAdapter(adapterPojo);
+
+        if(adapterPojo == null) {
+            // nothing to check
+            return;
+        }
+        ensureMapConsistent(adapter, adapterAccordingToMap, "PojoAdapterMap");
+    }
+
+    private void ensureOidAdapterMapConsistent(final ObjectAdapter adapter) {
+        final Oid adapterOid = adapter.getOid();
+        final ObjectAdapter adapterAccordingToMap = oidAdapterMap.getAdapter(adapterOid);
+
+        if(adapterOid == null) {
+            // nothing to check
+            return;
+        }
+        ensureMapConsistent(adapter, adapterAccordingToMap, "OidAdapterMap");
+    }
+
+    private void ensureMapConsistent(
+            final ObjectAdapter adapter,
+            final ObjectAdapter adapterAccordingToMap,
+            final String mapName) {
+
+        final Oid adapterOid = adapter.getOid();
+
+        // take care not to touch the pojo, since it might have been deleted.
+
+        if(adapterAccordingToMap == null) {
+            throw new IllegalStateException("mismatch in "
+                    + mapName
+                    + ": provided adapter's OID: " + adapterOid + "; but no adapter found in map");
+        }
+        ensureThatArg(
+                adapter, is(adapterAccordingToMap),
+                "mismatch in "
+                        + mapName
+                        + ": provided adapter's OID: " + adapterOid + ", \n"
+                        + "but map's adapter's OID was: " + adapterAccordingToMap.getOid());
+    }
+
+    public ObjectAdapter adapterForAny(RootOid rootOid) {
+
+        final ObjectSpecId specId = rootOid.getObjectSpecId();
+        final ObjectSpecification spec = getSpecificationLoader().lookupBySpecId(specId);
+        if(spec == null) {
+            // eg "NONEXISTENT:123"
+            return null;
+        }
+
+        if(spec.containsFacet(ViewModelFacet.class)) {
+
+            // this is a hack; the RO viewer when rendering the URL for the view model loses the "view model" indicator
+            // ("*") from the specId, meaning that the marshalling logic above in RootOidDefault.deString() creates an
+            // oid in the wrong state.  The code below checks for this and recreates the oid with the current state of 'view model'
+            if(!rootOid.isViewModel()) {
+                rootOid = new RootOid(rootOid.getObjectSpecId(), rootOid.getIdentifier(), Oid.State.VIEWMODEL);
+            }
+
+            try {
+                return adapterFor(rootOid);
+            } catch(final ObjectNotFoundException ex) {
+                return null;
+            } catch(final PojoRecreationException ex) {
+                return null;
+            }
+        } else {
+            try {
+                ObjectAdapter objectAdapter = loadObjectInTransaction(rootOid);
+                return objectAdapter.isTransient() ? null : objectAdapter;
+            } catch(final ObjectNotFoundException ex) {
+                return null;
+            }
+        }
+    }
+
+    /**
+     * As per {@link #adapterFor(RootOid, ConcurrencyChecking)}, with
+     * {@link ConcurrencyChecking#NO_CHECK no checking}.
+     *
+     * <p>
+     * This method  will <i>always</i> return an object, possibly indicating it is persistent; so make sure that you
+     * know that the oid does indeed represent an object you know exists.
+     * </p>
+     */
+    public ObjectAdapter adapterFor(final RootOid rootOid) {
+        return adapterFor(rootOid, ConcurrencyChecking.NO_CHECK);
+    }
+
+
+    /**
+     * Either returns an existing {@link ObjectAdapter adapter} (as per
+     * {@link #getAdapterFor(Oid)}), otherwise re-creates an adapter with the
+     * specified (persistent) {@link Oid}.
+     *
+     * <p>
+     * Typically called when the {@link Oid} is already known, that is, when
+     * resolving an already-persisted object. Is also available for
+     * <tt>Memento</tt> support however, so {@link Oid} could also represent a
+     * {@link Oid#isTransient() transient} object.
+     *
+     * <p>
+     * The pojo itself is recreated by delegating to a {@link AdapterManager}.
+     *
+     * <p>
+     * The {@link ConcurrencyChecking} parameter determines whether concurrency checking is performed.
+     * If it is requested, then a check is made to ensure that the {@link Oid#getVersion() version}
+     * of the {@link RootOid oid} of the recreated adapter is the same as that of the provided {@link RootOid oid}.
+     * If the version differs, then a {@link ConcurrencyException} is thrown.
+     *
+     * <p>
+     * ALSO, even if a {@link ConcurrencyException}, then the provided {@link RootOid oid}'s {@link Version version}
+     * will be {@link RootOid#setVersion(Version) set} to the current
+     * value.  This allows the client to retry if they wish.
+     *
+     * @throws {@link org.apache.isis.core.runtime.persistence.ObjectNotFoundException} if the object does not exist.
+     */
+    public ObjectAdapter adapterFor(
+            final RootOid rootOid,
+            final ConcurrencyChecking concurrencyChecking) {
+
+        // attempt to locate adapter for the Oid
+        ObjectAdapter adapter = getAdapterFor(rootOid);
+        if (adapter == null) {
+            // else recreate
+            try {
+                final Object pojo = recreatePojo(rootOid);
+                adapter = mapRecreatedPojo(rootOid, pojo);
+            } catch(ObjectNotFoundException ex) {
+                throw ex; // just rethrow
+            } catch(RuntimeException ex) {
+                throw new PojoRecreationException(rootOid, ex);
+            }
+        }
+
+        // sync versions of original, with concurrency checking if required
+        Oid adapterOid = adapter.getOid();
+        if(adapterOid instanceof RootOid) {
+            final RootOid recreatedOid = (RootOid) adapterOid;
+            final RootOid originalOid = rootOid;
+
+            try {
+                if(concurrencyChecking.isChecking()) {
+
+                    // check for exception, but don't throw if suppressed through thread-local
+                    final Version otherVersion = originalOid.getVersion();
+                    final Version thisVersion = recreatedOid.getVersion();
+                    if( thisVersion != null &&
+                        otherVersion != null &&
+                        thisVersion.different(otherVersion)) {
+
+                        if(concurrencyCheckingGloballyEnabled && ConcurrencyChecking.isCurrentlyEnabled()) {
+                            LOG.info("concurrency conflict detected on " + recreatedOid + " (" + otherVersion + ")");
+                            final String currentUser = authenticationSession.getUserName();
+                            throw new ConcurrencyException(currentUser, recreatedOid, thisVersion, otherVersion);
+                        } else {
+                            LOG.info("concurrency conflict detected but suppressed, on " + recreatedOid + " (" + otherVersion + ")");
+                        }
+                    }
+                }
+            } finally {
+                final Version originalVersion = originalOid.getVersion();
+                final Version recreatedVersion = recreatedOid.getVersion();
+                if(recreatedVersion != null && (
+                        originalVersion == null ||
+                                recreatedVersion.different(originalVersion))
+                        ) {
+                    if(LOG.isDebugEnabled()) {
+                        LOG.debug("updating version in oid, on " + originalOid + " (" + originalVersion + ") to (" + recreatedVersion +")");
+                    }
+                    originalOid.setVersion(recreatedVersion);
+                }
+            }
+        }
+
+        return adapter;
+    }
+
+
+    private Object recreatePojo(RootOid oid) {
+        if(oid.isTransient() || oid.isViewModel()) {
+            return recreatePojoDefault(oid);
+        } else {
+            return loadPojo(oid);
+        }
+    }
+
+    private Object recreatePojoDefault(final RootOid rootOid) {
+        final ObjectSpecification spec =
+                specificationLoader.lookupBySpecId(rootOid.getObjectSpecId());
+        final Object pojo;
+
+        if(rootOid.isViewModel()) {
+
+            final String memento = rootOid.getIdentifier();
+            pojo = recreateViewModel(spec, memento);
+
+        } else {
+            pojo = instantiateAndInjectServices(spec);
+
+        }
+        return pojo;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ObjectAdapter adapterFor(final Object pojo) {
+
+        if(pojo == null) {
+            return null;
+        }
+        final ObjectAdapter existingOrValueAdapter = existingOrValueAdapter(pojo);
+        if(existingOrValueAdapter != null) {
+            return existingOrValueAdapter;
+        }
+
+        final ObjectAdapter newAdapter = createTransientOrViewModelRootAdapter(pojo);
+
+        return mapAndInjectServices(newAdapter);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ObjectAdapter adapterFor(final Object pojo, final ObjectAdapter parentAdapter, final OneToManyAssociation collection) {
+
+        Ensure.ensureThatArg(parentAdapter, is(not(nullValue())));
+        Ensure.ensureThatArg(collection, is(not(nullValue())));
+
+        final ObjectAdapter existingOrValueAdapter = existingOrValueAdapter(pojo);
+        if(existingOrValueAdapter != null) {
+            return existingOrValueAdapter;
+        }
+
+        // the List, Set etc. instance gets wrapped in its own adapter
+        final ObjectAdapter newAdapter = createCollectionAdapter(pojo, parentAdapter, collection);
+
+        return mapAndInjectServices(newAdapter);
+    }
+
+    /**
+     * Creates an {@link ObjectAdapter adapter} to represent a collection
+     * of the parent.
+     *
+     * <p>
+     * The returned adapter will have a {@link ParentedCollectionOid}; its version
+     * and its persistence are the same as its owning parent.
+     *
+     * <p>
+     * Should only be called if the pojo is known not to be
+     * {@link #getAdapterFor(Object) mapped}.
+     */
+    private ObjectAdapter createCollectionAdapter(
+            final Object pojo,
+            final ObjectAdapter parentAdapter,
+            final OneToManyAssociation otma) {
+
+        ensureMapsConsistent(parentAdapter);
+        Assert.assertNotNull(pojo);
+
+        final Oid parentOid = parentAdapter.getOid();
+
+        // persistence of collection follows the parent
+        final ParentedCollectionOid collectionOid = new ParentedCollectionOid((RootOid) parentOid, otma);
+        final ObjectAdapter collectionAdapter = createCollectionAdapter(pojo, collectionOid);
+
+        // we copy over the type onto the adapter itself
+        // [not sure why this is really needed, surely we have enough info in
+        // the adapter
+        // to look this up on the fly?]
+        final TypeOfFacet facet = otma.getFacet(TypeOfFacet.class);
+        collectionAdapter.setElementSpecificationProvider(ElementSpecificationProviderFromTypeOfFacet.createFrom(facet));
+
+        return collectionAdapter;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     *
+     * <p>
+     * Note that there is no management of {@link Version}s here. That is
+     * because the {@link PersistenceSessionInternal} is expected to manage this.
+     *
+     * @param hintRootOid - allow a different persistent root oid to be provided.
+     */
+    public void remapAsPersistent(final ObjectAdapter adapter, RootOid hintRootOid) {
+
+        final ObjectAdapter rootAdapter = adapter.getAggregateRoot();  // TODO: REVIEW: think this is redundant; would seem this method is only ever called for roots anyway.
+        final RootOid transientRootOid = (RootOid) rootAdapter.getOid();
+
+        // no longer true, because isTransient now looks directly at the underlying pojo's state (for entities)
+        // and doesn't apply for services.
+        //        Ensure.ensureThatArg(rootAdapter.isTransient(), is(true), "root adapter should be transient; oid:" + transientRootOid);
+        //        Ensure.ensureThatArg(transientRootOid.isTransient(), is(true), "root adapter's OID should be transient; oid:" + transientRootOid);
+
+        final RootAndCollectionAdapters rootAndCollectionAdapters = new RootAndCollectionAdapters(adapter, this);
+
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("remapAsPersistent: " + transientRootOid);
+        }
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("removing root adapter from oid map");
+        }
+
+        boolean removed = oidAdapterMap.remove(transientRootOid);
+        if (!removed) {
+            LOG.warn("could not remove oid: " + transientRootOid);
+            // should we fail here with a more serious error?
+        }
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("removing collection adapter(s) from oid map");
+        }
+        for (final ObjectAdapter collectionAdapter : rootAndCollectionAdapters) {
+            final Oid collectionOid = collectionAdapter.getOid();
+            removed = oidAdapterMap.remove(collectionOid);
+            if (!removed) {
+                LOG.warn("could not remove collectionOid: " + collectionOid);
+                // should we fail here with a more serious error?
+            }
+        }
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("updating the Oid");
+        }
+
+        // intended for testing (bit nasty)
+        final RootOid persistedRootOid;
+        if(hintRootOid != null) {
+            if(hintRootOid.isTransient()) {
+                throw new IsisAssertException("hintRootOid must be persistent");
+            }
+            final ObjectSpecId hintRootOidObjectSpecId = hintRootOid.getObjectSpecId();
+            final ObjectSpecId adapterObjectSpecId = adapter.getSpecification().getSpecId();
+            if(!hintRootOidObjectSpecId.equals(adapterObjectSpecId)) {
+                throw new IsisAssertException("hintRootOid's objectType must be same as that of adapter " +
+                        "(was: '" + hintRootOidObjectSpecId + "'; adapter's is " + adapterObjectSpecId + "'");
+            }
+            // ok
+            persistedRootOid = hintRootOid;
+        } else {
+            // normal flow - delegate to OidGenerator to obtain a persistent root oid
+            persistedRootOid = createPersistentOrViewModelOid(adapter.getObject());
+        }
+
+        // associate root adapter with the new Oid, and remap
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("replacing Oid for root adapter and re-adding into maps; oid is now: " + persistedRootOid.enString(
+                    oidMarshaller) + " (was: " + transientRootOid.enString(oidMarshaller) + ")");
+        }
+        adapter.replaceOid(persistedRootOid);
+        oidAdapterMap.add(persistedRootOid, adapter);
+
+        // associate the collection adapters with new Oids, and re-map
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("replacing Oids for collection adapter(s) and re-adding into maps");
+        }
+        for (final ObjectAdapter collectionAdapter : rootAndCollectionAdapters) {
+            final ParentedCollectionOid previousCollectionOid = (ParentedCollectionOid) collectionAdapter.getOid();
+            final ParentedCollectionOid persistedCollectionOid = previousCollectionOid.asPersistent(persistedRootOid);
+            oidAdapterMap.add(persistedCollectionOid, collectionAdapter);
+        }
+
+
+        // some object store implementations may replace collection instances (eg ORM may replace with a cglib-enhanced
+        // proxy equivalent.  So, ensure that the collection adapters still wrap the correct pojos.
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("synchronizing collection pojos, remapping in pojo map if required");
+        }
+        for (final OneToManyAssociation otma : rootAndCollectionAdapters.getCollections()) {
+            final ObjectAdapter collectionAdapter = rootAndCollectionAdapters.getCollectionAdapter(otma);
+
+            final Object collectionPojoWrappedByAdapter = collectionAdapter.getObject();
+            final Object collectionPojoActuallyOnPojo = getCollectionPojo(otma, adapter);
+
+            if (collectionPojoActuallyOnPojo != collectionPojoWrappedByAdapter) {
+                pojoAdapterMap.remove(collectionAdapter);
+                collectionAdapter.replacePojo(collectionPojoActuallyOnPojo);
+                pojoAdapterMap.add(collectionPojoActuallyOnPojo, collectionAdapter);
+            }
+        }
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("made persistent " + adapter + "; was " + transientRootOid);
+        }
+    }
+
+    private static Object getCollectionPojo(final OneToManyAssociation association, final ObjectAdapter ownerAdapter) {
+        final PropertyOrCollectionAccessorFacet accessor = association.getFacet(PropertyOrCollectionAccessorFacet.class);
+        return accessor.getProperty(ownerAdapter, InteractionInitiatedBy.FRAMEWORK);
+    }
+
+
+
+    /**
+     * Either returns an existing {@link ObjectAdapter adapter} (as per
+     * {@link #getAdapterFor(Object)} or {@link #getAdapterFor(Oid)}), otherwise
+     * re-creates an adapter with the specified (persistent) {@link Oid}.
+     *
+     * <p>
+     * Typically called when the {@link Oid} is already known, that is, when
+     * resolving an already-persisted object. Is also available for
+     * <tt>Memento</tt> support however, so {@link Oid} could also represent a
+     * {@link Oid#isTransient() transient} object.
+     *
+     * @param oid
+     * @param recreatedPojo - already known to the object store impl, or a service
+     */
+    @Override
+    public ObjectAdapter mapRecreatedPojo(final Oid oid, final Object recreatedPojo) {
+
+        // attempt to locate adapter for the pojo
+        // REVIEW: this check is possibly redundant because the pojo will most likely
+        // have just been instantiated, so won't yet be in any maps
+        final ObjectAdapter adapterLookedUpByPojo = getAdapterFor(recreatedPojo);
+        if (adapterLookedUpByPojo != null) {
+            return adapterLookedUpByPojo;
+        }
+
+        // attempt to locate adapter for the Oid
+        final ObjectAdapter adapterLookedUpByOid = getAdapterFor(oid);
+        if (adapterLookedUpByOid != null) {
+            return adapterLookedUpByOid;
+        }
+
+        final ObjectAdapter createdAdapter = createRootOrAggregatedAdapter(oid, recreatedPojo);
+        return mapAndInjectServices(createdAdapter);
+    }
+
+    /**
+     * Removes the specified object from both the identity-adapter map, and the
+     * pojo-adapter map.
+     *
+     * <p>
+     * This indicates that the object is no longer in use, and therefore that no
+     * objects exists within the system.
+     *
+     * <p>
+     * If an {@link ObjectAdapter adapter} is removed while its pojo still is
+     * referenced then a subsequent interaction of that pojo will create a
+     * different {@link ObjectAdapter adapter}.
+     *
+     * <p>
+     * TODO: should do a cascade remove of any aggregated objects.
+     */
+    @Override
+    public void removeAdapter(final ObjectAdapter adapter) {
+        ensureMapsConsistent(adapter);
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("removing adapter: " + adapter);
+        }
+
+        unmap(adapter);
+    }
+
+    private void unmap(final ObjectAdapter adapter) {
+        ensureMapsConsistent(adapter);
+
+        final Oid oid = adapter.getOid();
+        if (oid != null) {
+            oidAdapterMap.remove(oid);
+        }
+        pojoAdapterMap.remove(adapter);
+    }
+
+
+    public void remapRecreatedPojo(ObjectAdapter adapter, final Object pojo) {
+        removeAdapter(adapter);
+        adapter.replacePojo(pojo);
+        mapAndInjectServices(adapter);
+    }
+
+
+    private ObjectAdapter createRootOrAggregatedAdapter(final Oid oid, final Object pojo) {
+        final ObjectAdapter createdAdapter;
+        if(oid instanceof RootOid) {
+            final RootOid rootOid = (RootOid) oid;
+            createdAdapter = createRootAdapter(pojo, rootOid);
+        } else /*if (oid instanceof CollectionOid)*/ {
+            final ParentedCollectionOid collectionOid = (ParentedCollectionOid) oid;
+            createdAdapter = createCollectionAdapter(pojo, collectionOid);
+        }
+        return createdAdapter;
+    }
+
+    /**
+     * Creates a new transient root {@link ObjectAdapter adapter} for the supplied domain
+     * object.
+     */
+    private ObjectAdapter createTransientOrViewModelRootAdapter(final Object pojo) {
+        final RootOid rootOid = createTransientOrViewModelOid(pojo);
+        return createRootAdapter(pojo, rootOid);
+    }
+
+    /**
+     * Creates a {@link ObjectAdapter adapter} with no {@link Oid}.
+     *
+     * <p>
+     * Standalone adapters are never {@link #mapAndInjectServices(ObjectAdapter) mapped}
+     * (they have no {@link Oid}, after all).
+     *
+     * <p>
+     * Should only be called if the pojo is known not to be
+     * {@link #getAdapterFor(Object) mapped}, and for immutable value types
+     * referenced.
+     */
+    private ObjectAdapter createStandaloneAdapter(final Object pojo) {
+        return createAdapter(pojo, null);
+    }
+
+    /**
+     * Creates (but does not {@link #mapAndInjectServices(ObjectAdapter) map}) a new
+     * root {@link ObjectAdapter adapter} for the supplied domain object.
+     *
+     * @see #createStandaloneAdapter(Object)
+     * @see #createCollectionAdapter(Object, ParentedCollectionOid)
+     */
+    private ObjectAdapter createRootAdapter(final Object pojo, RootOid rootOid) {
+        Ensure.ensureThatArg(rootOid, is(not(nullValue())));
+        return createAdapter(pojo, rootOid);
+    }
+
+    private ObjectAdapter createCollectionAdapter(
+            final Object pojo,
+            ParentedCollectionOid collectionOid) {
+        Ensure.ensureThatArg(collectionOid, is(not(nullValue())));
+        return createAdapter(pojo, collectionOid);
+    }
+
+    private PojoAdapter createAdapter(
+            final Object pojo,
+            final Oid oid) {
+        return new PojoAdapter(
+                pojo, oid,
+                authenticationSession, getLocalization(),
+                specificationLoader, this);
+    }
+
+
+    private ObjectAdapter mapAndInjectServices(final ObjectAdapter adapter) {
+        // since the whole point of this method is to map an adapter that's just been created.
+        // so we *don't* call ensureMapsConsistent(adapter);
+
+        Assert.assertNotNull(adapter);
+        final Object pojo = adapter.getObject();
+        Assert.assertFalse("POJO Map already contains object", pojo, pojoAdapterMap.containsPojo(pojo));
+
+        if (LOG.isDebugEnabled()) {
+            // don't interact with the underlying object because may be a ghost
+            // and would trigger a resolve
+            // don't call toString() on adapter because calls hashCode on
+            // underlying object, may also trigger a resolve.
+            LOG.debug("adding identity for adapter with oid=" + adapter.getOid());
+        }
+
+        // value adapters are not mapped (but all others - root and aggregated adapters - are)
+        if (adapter.isValue()) {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("not mapping value adapter");
+            }
+            servicesInjector.injectServicesInto(pojo);
+            return adapter;
+        }
+
+        // add all aggregated collections
+        final ObjectSpecification objSpec = adapter.getSpecification();
+        if (!adapter.isParentedCollection() || adapter.isParentedCollection() && !objSpec.isImmutable()) {
+            pojoAdapterMap.add(pojo, adapter);
+        }
+
+        // order is important - add to pojo map first, then identity map
+        oidAdapterMap.add(adapter.getOid(), adapter);
+
+        // must inject after mapping, otherwise infinite loop
+        servicesInjector.injectServicesInto(pojo);
+
+        return adapter;
+    }
+
+
+    //endregion
+
+    //region > dependencies (from context)
+    protected Localization getLocalization() {
+        return IsisContext.getLocalization();
+    }
+
+    //endregion
+
+
+    //region > TransactionManager delegate methods
+    protected IsisTransaction getCurrentTransaction() {
+        return transactionManager.getTransaction();
+    }
+    //endregion
+
+    //region > FrameworkSynchronizer delegate methods
+
+    public void enlistDeletingAndInvokeIsisRemovingCallbackFacet(final Persistable pojo) {
+        ObjectAdapter adapter = adapterFor(pojo);
+
+        final ChangedObjectsServiceInternal changedObjectsServiceInternal =
+                getServicesInjector().lookupService(ChangedObjectsServiceInternal.class);
+
+        changedObjectsServiceInternal.enlistDeleting(adapter);
+
+        CallbackFacet.Util.callCallback(adapter, RemovingCallbackFacet.class);
+        postLifecycleEventIfRequired(adapter, RemovingLifecycleEventFacet.class);
+    }
+
+
+    public void initializeMapAndCheckConcurrency(final Persistable pojo) {
+        final Persistable pc = pojo;
+
+        // need to do eagerly, because (if a viewModel then) a
+        // viewModel's #viewModelMemento might need to use services
+        servicesInjector.injectInto(pojo);
+
+        final Version datastoreVersion = getVersionIfAny(pc);
+
+        final RootOid originalOid;
+        ObjectAdapter adapter = getAdapterFor(pojo);
+        if (adapter != null) {
+            ensureRootObject(pojo);
+            originalOid = (RootOid) adapter.getOid();
+
+            final Version originalVersion = adapter.getVersion();
+
+            // sync the pojo held by the adapter with that just loaded
+            remapRecreatedPojo(adapter, pojo);
+
+            // since there was already an adapter, do concurrency check
+            // (but don't set abort cause if checking is suppressed through thread-local)
+            final RootOid thisOid = originalOid;
+            final Version thisVersion = originalVersion;
+            final Version otherVersion = datastoreVersion;
+
+            if (    thisVersion != null &&
+                    otherVersion != null &&
+                    thisVersion.different(otherVersion)) {
+
+                if (ConcurrencyChecking.isCurrentlyEnabled()) {
+                    LOG.info("concurrency conflict detected on " + thisOid + " (" + otherVersion + ")");
+                    final String currentUser = authenticationSession.getUserName();
+                    final ConcurrencyException abortCause = new ConcurrencyException(currentUser, thisOid,
+                            thisVersion, otherVersion);
+                    getCurrentTransaction().setAbortCause(abortCause);
+
+                } else {
+                    LOG.info("concurrency conflict detected but suppressed, on " + thisOid + " (" + otherVersion
+                            + ")");
+                }
+            }
+        } else {
+            originalOid = createPersistentOrViewModelOid(pojo);
+
+            // it appears to be possible that there is already an adapter for this Oid,
+            // ie from ObjectStore#resolveImmediately()
+            adapter = getAdapterFor(originalOid);
+            if (adapter != null) {
+                remapRecreatedPojo(adapter, pojo);
+            } else {
+                adapter = mapRecreatedPojo(originalOid, pojo);
+
+                CallbackFacet.Util.callCallback(adapter, LoadedCallbackFacet.class);
+                postLifecycleEventIfRequired(adapter, LoadedLifecycleEventFacet.class);
+            }
+        }
+
+        adapter.setVersion(datastoreVersion);
+    }
+
+    //region > create...Oid (main API)
+    /**
+     * Create a new {@link Oid#isTransient() transient} {@link Oid} for the
+     * supplied pojo, uniquely distinguishable from any other {@link Oid}.
+     */
+    public final RootOid createTransientOrViewModelOid(final Object pojo) {
+        return newIdentifier(pojo, Type.TRANSIENT);
+    }
+
+    /**
+     * Return an equivalent {@link RootOid}, but being persistent.
+     *
+     * <p>
+     * It is the responsibility of the implementation to determine the new unique identifier.
+     * For example, the generator may simply assign a new value from a sequence, or a GUID;
+     * or, the generator may use the oid to look up the object and inspect the object in order
+     * to obtain an application-defined value.
+     *
+     * @param pojo - being persisted
+     */
+    public final RootOid createPersistentOrViewModelOid(Object pojo) {
+        return newIdentifier(pojo, Type.PERSISTENT);
+    }
+
+    enum Type {
+        TRANSIENT,
+        PERSISTENT
+    }
+
+    private RootOid newIdentifier(final Object pojo, final Type type) {
+        final ObjectSpecification spec = objectSpecFor(pojo);
+        if(spec.isService()) {
+            return newRootId(spec, "1", type);
+        }
+
+        final ViewModelFacet recreatableObjectFacet = spec.getFacet(ViewModelFacet.class);
+        final String identifier =
+                recreatableObjectFacet != null
+                        ? recreatableObjectFacet.memento(pojo)
+                        : newIdentifierFor(pojo, type);
+
+        return newRootId(spec, identifier, type);
+    }
+
+    private String newIdentifierFor(final Object pojo, final Type type) {
+        return type == Type.TRANSIENT
+                ? UUID.randomUUID().toString()
+                : JdoObjectIdSerializer.toOidIdentifier(getPersistenceManager().getObjectId(pojo));
+    }
+
+    private RootOid newRootId(final ObjectSpecification spec, final String identifier, final Type type) {
+        final Oid.State state =
+                spec.containsDoOpFacet(ViewModelFacet.class)
+                        ? Oid.State.VIEWMODEL
+                        : type == Type.TRANSIENT
+                        ? Oid.State.TRANSIENT
+                        : Oid.State.PERSISTENT;
+        final ObjectSpecId objectSpecId = spec.getSpecId();
+        return new RootOid(objectSpecId, identifier, state);
+    }
+
+    private ObjectSpecification objectSpecFor(final Object pojo) {
+        final Class<?> pojoClass = pojo.getClass();
+        return getSpecificationLoader().loadSpecification(pojoClass);
+    }
+    //endregion
+
+
+    /**
+     * Called either when an entity is initially persisted, or when an entity is updated; fires the appropriate
+     * lifecycle callback.
+     *
+     * <p>
+     * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
+     * to determine which callback to fire.
+     */
+    public void invokeIsisPersistingCallback(final Persistable pojo) {
+        final ObjectAdapter adapter = getAdapterFor(pojo);
+        if (adapter == null) {
+            // not expected.
+            return;
+        }
+
+        final RootOid isisOid = (RootOid) adapter.getOid();
+        if (isisOid.isTransient()) {
+            // persisting
+            // previously this was performed in the DataNucleusSimplePersistAlgorithm.
+            CallbackFacet.Util.callCallback(adapter, PersistingCallbackFacet.class);
+            postLifecycleEventIfRequired(adapter, PersistingLifecycleEventFacet.class);
+
+        } else {
+            // updating
+
+            // don't call here, already called in preDirty.
+
+            // CallbackFacet.Util.callCallback(adapter, UpdatingCallbackFacet.class);
+        }
+    }
+
+    /**
+     * Called either when an entity is initially persisted, or when an entity is updated;
+     * fires the appropriate lifecycle callback
+     *
+     * <p>
+     * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
+     * to determine which callback to fire.
+     */
+    public void enlistCreatedAndRemapIfRequiredThenInvokeIsisInvokePersistingOrUpdatedCallback(final Persistable pojo) {
+        final ObjectAdapter adapter = adapterFor(pojo);
+
+        final RootOid rootOid = (RootOid) adapter.getOid(); // ok since this is for a Persistable
+
+        if (rootOid.isTransient()) {
+            // persisting
+            final RootOid persistentOid = createPersistentOrViewModelOid(pojo);
+
+            remapAsPersistent(adapter, persistentOid);
+
+            CallbackFacet.Util.callCallback(adapter, PersistedCallbackFacet.class);
+            postLifecycleEventIfRequired(adapter, PersistedLifecycleEventFacet.class);
+
+
+        

<TRUNCATED>

[22/30] isis git commit: ISIS-1409: internal components of RuntimeContext subclasses are now internal domain services; RuntimeContext hierarchy collapsed into a single class.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
index f8e7556..5403aa5 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
@@ -44,8 +44,8 @@ import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation.TitleComponent;
-import org.apache.isis.core.metamodel.runtimecontext.LocalizationDefault;
-import org.apache.isis.core.metamodel.runtimecontext.LocalizationProvider;
+import org.apache.isis.core.metamodel.services.l10n.LocalizationDefault;
+import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Allowing;
 
@@ -60,7 +60,7 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
     private ObjectAdapter mockObjectAdapter;
     @Allowing
     @Mock
-    private LocalizationProvider mockLocalizationProvider;
+    private LocalizationProviderInternal mockLocalizationProviderInternal;
     @Mock
     private AuthenticationSession mockAuthenticationSession;
 
@@ -80,7 +80,7 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
                 allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
                 will(returnValue(mockDeploymentCategoryProvider));
 
-                allowing(mockLocalizationProvider).getLocalization();
+                allowing(mockLocalizationProviderInternal).getLocalization();
                 will(returnValue(new LocalizationDefault()));
 
                 allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
@@ -181,7 +181,7 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
                 will(returnValue(customer));
             }
         });
-        final String title = titleFacetViaTitleAnnotation.title(mockObjectAdapter, mockLocalizationProvider.getLocalization());
+        final String title = titleFacetViaTitleAnnotation.title(mockObjectAdapter, mockLocalizationProviderInternal.getLocalization());
         assertThat(title, is("titleElement1. titleElement3,titleElement2"));
     }
 
@@ -257,7 +257,7 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
                 will(returnValue(customer));
             }
         });
-        final String title = titleFacetViaTitleAnnotation.title(mockObjectAdapter, mockLocalizationProvider.getLocalization());
+        final String title = titleFacetViaTitleAnnotation.title(mockObjectAdapter, mockLocalizationProviderInternal.getLocalization());
         assertThat(title, is("titleElement1 titleElement3 titleElement5 3 this needs to be trimmed"));
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
index 6c95e85..9ccd792 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation.TitleComponent;
-import org.apache.isis.core.metamodel.runtimecontext.LocalizationProvider;
+import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
@@ -59,7 +59,7 @@ public class TitleFacetViaTitleAnnotationTest {
     private AdapterManager mockAdapterManager;
     
     @Mock
-    private LocalizationProvider mockLocalizationProvider;
+    private LocalizationProviderInternal mockLocalizationProviderInternal;
 
     protected static class DomainObjectWithProblemInItsAnnotatedTitleMethod {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
index 591f9d1..9a92858 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.core.metamodel.specloader;
 
-import java.util.Collections;
-
 import com.google.common.collect.Lists;
 
 import org.jmock.Expectations;
@@ -33,7 +31,6 @@ import org.junit.rules.ExpectedException;
 
 import org.apache.isis.applib.services.grid.GridService;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
@@ -48,8 +45,11 @@ import org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFr
 import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
@@ -66,7 +66,7 @@ public abstract class SpecificationLoaderTestAbstract {
     private RuntimeContext runtimeContext;
 
     @Mock
-    private IsisConfiguration mockConfiguration;
+    private IsisConfigurationDefault mockConfiguration;
     @Mock
     private DeploymentCategoryProvider mockDeploymentCategoryProvider;
     @Mock
@@ -77,6 +77,14 @@ public abstract class SpecificationLoaderTestAbstract {
     private GridService mockGridService;
     @Mock
     private SpecificationLoader mockSpecificationLoader;
+    @Mock
+    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    @Mock
+    private TransactionStateProviderInternal mockTransactionStateProviderInternal;
+    @Mock
+    private MessageBrokerServiceInternal mockMessageBrokerServiceInternal;
+    @Mock
+    private LocalizationProviderInternal mockLocalizationProviderInternal;
 
     // is loaded by subclasses
     protected ObjectSpecification specification;
@@ -113,6 +121,12 @@ public abstract class SpecificationLoaderTestAbstract {
             ignoring(mockServicesInjector).isRegisteredService(with(any(Class.class)));
 
             ignoring(mockSpecificationLoader).allServiceClasses();
+
+            ignoring(mockPersistenceSessionServiceInternal);
+            ignoring(mockTransactionStateProviderInternal);
+            ignoring(mockMessageBrokerServiceInternal);
+            ignoring(mockLocalizationProviderInternal);
+
         }});
 
         final SpecificationLoader reflector =
@@ -122,9 +136,17 @@ public abstract class SpecificationLoaderTestAbstract {
                         new MetaModelValidatorDefault(),
                         Lists.<LayoutMetadataReader>newArrayList(
                                 new LayoutMetadataReaderFromJson()), mockServicesInjector);
-        runtimeContext =
-                new RuntimeContextNoRuntime(
-                        new ServicesInjector(Collections.emptyList()), reflector);
+        final ServicesInjector servicesInjector =
+                new ServicesInjector(Lists.newArrayList(
+                        mockPersistenceSessionServiceInternal,
+                        mockLocalizationProviderInternal,
+                        mockMessageBrokerServiceInternal,
+                        mockTransactionStateProviderInternal,
+                        mockGridService,
+                        mockConfiguration,
+                        mockSpecificationLoader,
+                        mockDeploymentCategoryProvider));
+        runtimeContext = new RuntimeContext(servicesInjector);
         reflector.init(runtimeContext);
         
         specification = loadSpecification(reflector);

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/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 7d15c76..ef42b18 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
@@ -43,7 +43,6 @@ import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
 import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -70,15 +69,14 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
     private Persistability persistable;
     private boolean isEncodeable;
 
-    private RuntimeContextNoRuntime runtimeContext;
+    private RuntimeContext runtimeContext;
 
     public ObjectSpecificationStub(final Class<?> type) {
         this(type.getName());
         ServicesInjector servicesInjector = new ServicesInjector(Collections.emptyList());
         servicesInjector.addFallbackIfRequired(
                 ConfigurationServiceInternal.class, new IsisConfigurationDefault(null));
-        runtimeContext = new RuntimeContextNoRuntime(
-                servicesInjector, null);
+        runtimeContext = new RuntimeContext(servicesInjector);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
index b7d4390..849443d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
@@ -47,7 +47,7 @@ import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 public class ObjectFixtureFilePersistor {
 
@@ -179,7 +179,7 @@ public class ObjectFixtureFilePersistor {
 
     
     
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 
@@ -216,7 +216,7 @@ class LoadedObjects {
     }
 
     
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java
index 8ec93fd..6484454 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java
@@ -48,7 +48,7 @@ import org.apache.isis.core.metamodel.spec.Persistability;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 public class ObjectFixtureService {
 
@@ -231,7 +231,7 @@ public class ObjectFixtureService {
     // from context
     // //////////////////////////////////////////////////////////////////
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
index c54a01b..cbcf47b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.commons.lang.ObjectExtensions;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 
 /**
@@ -53,7 +53,7 @@ public class FixturesInstallerDelegate {
     protected final List<Object> fixtures = new ArrayList<Object>();
     private final SwitchUserServiceImpl switchUserService = new SwitchUserServiceImpl();
 
-    private final PersistenceSession persistenceSession;
+    private final PersistenceSessionInternal persistenceSession;
 
     /**
      * The requested {@link LogonFixture}, if any.
@@ -70,7 +70,7 @@ public class FixturesInstallerDelegate {
     // /////////////////////////////////////////////////////////
 
     /**
-     * The {@link PersistenceSession} used will be that from
+     * The {@link PersistenceSessionInternal} used will be that from
      * {@link IsisContext#getPersistenceSession() IsisContext}.
      */
     public FixturesInstallerDelegate() {
@@ -78,12 +78,12 @@ public class FixturesInstallerDelegate {
     }
 
     /**
-     * For testing, supply own {@link PersistenceSession} rather than lookup
+     * For testing, supply own {@link PersistenceSessionInternal} rather than lookup
      * from context.
      * 
      * @param persistenceSession
      */
-    public FixturesInstallerDelegate(final PersistenceSession persistenceSession) {
+    public FixturesInstallerDelegate(final PersistenceSessionInternal persistenceSession) {
         this.persistenceSession = persistenceSession;
     }
     
@@ -148,7 +148,7 @@ public class FixturesInstallerDelegate {
     /**
      * Hook - default does nothing.
      */
-    protected void preInstallFixtures(final PersistenceSession persistenceSession) {
+    protected void preInstallFixtures(final PersistenceSessionInternal persistenceSession) {
     }
 
     // ///////////////////////////////////////
@@ -239,7 +239,7 @@ public class FixturesInstallerDelegate {
     /**
      * Hook - default does nothing.
      */
-    protected void postInstallFixtures(final PersistenceSession persistenceSession) {
+    protected void postInstallFixtures(final PersistenceSessionInternal persistenceSession) {
     }
 
     // /////////////////////////////////////////////////////////
@@ -265,11 +265,11 @@ public class FixturesInstallerDelegate {
      * persistor or the persistor specified in the constructor.
      * 
      * <p>
-     * Note: if a {@link PersistenceSession persistor} was specified via the
+     * Note: if a {@link PersistenceSessionInternal persistor} was specified via the
      * constructor, this is not cached (to do so would cause the usage of tests
      * that use the singleton to break).
      */
-    private PersistenceSession getPersistenceSession() {
+    private PersistenceSessionInternal getPersistenceSession() {
         return persistenceSession != null ? persistenceSession : IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
index 47ccb7a..1b18d43 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
@@ -22,11 +22,11 @@ package org.apache.isis.core.runtime.installerregistry.installerapi;
 import org.apache.isis.core.commons.components.Installer;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
 
 /**
- * Installs a {@link PersistenceSession} during system start up.
+ * Installs a {@link PersistenceSessionInternal} during system start up.
  */
 public interface PersistenceMechanismInstaller extends Installer {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
index 3ebbb98..a719c9a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
@@ -47,7 +47,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 /**
  * Holds the state for the specified object in serializable form.
@@ -403,7 +403,7 @@ public class Memento implements Serializable {
         return IsisContext.getSpecificationLoader();
     }
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/StandaloneData.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/StandaloneData.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/StandaloneData.java
index b93074a..037d9ad 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/StandaloneData.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/StandaloneData.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 public class StandaloneData extends Data {
 
@@ -127,7 +127,7 @@ public class StandaloneData extends Data {
         }
     }
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java
index 8eacc26..b4cc992 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java
@@ -19,11 +19,11 @@
 
 package org.apache.isis.core.runtime.persistence;
 
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 /**
  * For {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory} implementations that can cache the
- * {@link PersistenceSession#isFixturesInstalled()} so is only called once per
+ * {@link PersistenceSessionInternal#isFixturesInstalled()} so is only called once per
  * application scope.
  */
 public interface FixturesInstalledFlag {

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
index 89ab049..df03789c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.Specification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
@@ -57,7 +57,7 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
     private final AuthenticationSession authenticationSession;
     private final SpecificationLoader specificationLoader;
     private final Localization localization;
-    private final PersistenceSession persistenceSession;
+    private final PersistenceSessionInternal persistenceSession;
 
     /**
      * can be {@link #replacePojo(Object) replace}d.
@@ -79,7 +79,7 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
             final AuthenticationSession authenticationSession,
             final Localization localization,
             final SpecificationLoader specificationLoader,
-            final PersistenceSession persistenceSession) {
+            final PersistenceSessionInternal persistenceSession) {
 
         this.persistenceSession = persistenceSession;
 
@@ -428,7 +428,7 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
      *
      * <p>
      *     Specifically, if an action which has been annotated (is copied by {@link org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet action invocation facet}), and for a parented collection
-     *     (is copied by the {@link PersistenceSession} when {@link PersistenceSession#adapterFor(Object, ObjectAdapter, OneToManyAssociation) creating} an adapter for a collection.
+     *     (is copied by the {@link PersistenceSessionInternal} when {@link PersistenceSessionInternal#adapterFor(Object, ObjectAdapter, OneToManyAssociation) creating} an adapter for a collection.
      * </p>
      */
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
index 7e51973..59d2159 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 /**
  * Helper class that encapsulates the processing performed by domain object
@@ -38,10 +38,10 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
  * <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
+ * {@link PersistenceSessionInternal} 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,
- * we must always look the {@link PersistenceSession} from the {@link IsisContext}.
+ * {@link PersistenceSessionInternal} could change over the lifetime of the instance,
+ * we must always look the {@link PersistenceSessionInternal} from the {@link IsisContext}.
  * The same applies to the {@link ServicesInjector}.
  */
 public class DomainObjectContainerResolve {
@@ -107,7 +107,7 @@ public class DomainObjectContainerResolve {
     // Dependencies (looked up from context)
     // /////////////////////////////////////////////////////////////////
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/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
deleted file mode 100644
index 785279d..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
+++ /dev/null
@@ -1,263 +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.internal;
-
-import java.util.List;
-
-import org.apache.isis.applib.RecoverableException;
-import org.apache.isis.applib.profiles.Localization;
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService2;
-import org.apache.isis.core.commons.authentication.MessageBroker;
-import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.runtimecontext.LocalizationProviderAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerServiceAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-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.DomainObjectContainerResolve;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.session.IsisSession;
-import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-
-/**
- * Provides services to the metamodel based on the currently running
- * {@link IsisSession session} (primarily the {@link PersistenceSession}).
- */
-public class RuntimeContextFromSession extends RuntimeContextAbstract {
-
-    private final PersistenceSessionService persistenceSessionService;
-    private final MessageBrokerService messageBrokerService;
-    private final LocalizationProviderAbstract localizationProvider;
-
-    // //////////////////////////////////////////////////////////////////
-    // Constructor
-    // //////////////////////////////////////////////////////////////////
-
-    public RuntimeContextFromSession(
-            final DeploymentCategory deploymentCategory,
-            final IsisConfigurationDefault configuration,
-            final ServicesInjector servicesInjector,
-            final SpecificationLoader specificationLoader) {
-        super(servicesInjector, specificationLoader);
-
-        this.persistenceSessionService = new PersistenceSessionServiceAbstract() {
-
-
-            @Override
-            public ObjectAdapter getAdapterFor(Oid oid) {
-                return getPersistenceSession().getAdapterFor(oid);
-            }
-
-            @Override
-            public ObjectAdapter getAdapterFor(final Object pojo) {
-                return getPersistenceSession().getAdapterFor(pojo);
-            }
-
-            @Override
-            public ObjectAdapter adapterFor(final Object pojo) {
-                return getPersistenceSession().adapterFor(pojo);
-            }
-
-            @Override
-            public ObjectAdapter adapterFor(final Object pojo, final ObjectAdapter ownerAdapter, final OneToManyAssociation collection) {
-                return getPersistenceSession().adapterFor(pojo, ownerAdapter, collection);
-            }
-
-            @Override
-            public ObjectAdapter mapRecreatedPojo(Oid oid, Object recreatedPojo) {
-                return getPersistenceSession().mapRecreatedPojo(oid, recreatedPojo);
-            }
-
-            @Override
-            public void removeAdapter(ObjectAdapter adapter) {
-                getPersistenceSession().removeAdapter(adapter);
-            }
-
-            @Override
-            public void makePersistent(final ObjectAdapter adapter) {
-                getPersistenceSession().makePersistentInTransaction(adapter);
-            }
-
-            @Override
-            public void remove(final ObjectAdapter adapter) {
-                getPersistenceSession().destroyObjectInTransaction(adapter);
-            }
-
-            @Override
-            public ObjectAdapter createTransientInstance(final ObjectSpecification spec) {
-                return getPersistenceSession().createTransientInstance(spec);
-            }
-
-            @Override
-            public ObjectAdapter createViewModelInstance(ObjectSpecification spec, String memento) {
-                return getPersistenceSession().createViewModelInstance(spec, memento);
-            }
-
-            @Override
-            public Object lookup(
-                    final Bookmark bookmark,
-                    final BookmarkService2.FieldResetPolicy fieldResetPolicy) {
-                return new DomainObjectContainerResolve().lookup(bookmark, fieldResetPolicy);
-            }
-
-
-            @Override
-            public Bookmark bookmarkFor(Object domainObject) {
-                return new DomainObjectContainerResolve().bookmarkFor(domainObject);
-            }
-
-            @Override
-            public Bookmark bookmarkFor(Class<?> cls, String identifier) {
-                return new DomainObjectContainerResolve().bookmarkFor(cls, identifier);
-            }
-
-            @Override
-            public void resolve(final Object parent) {
-                new DomainObjectContainerResolve().resolve(parent);
-            }
-
-            @Override
-            public void resolve(final Object parent, final Object field) {
-                new DomainObjectContainerResolve().resolve(parent, field);
-            }
-
-            @Override
-            public void beginTran() {
-                getTransactionManager().startTransaction();
-            }
-
-            @Override
-            public boolean flush() {
-                return getTransactionManager().flushTransaction();
-            }
-
-            @Override
-            public void commit() {
-                getTransactionManager().endTransaction();
-            }
-
-            @Override
-            public <T> List<ObjectAdapter> allMatchingQuery(final Query<T> query) {
-                return getPersistenceSession().allMatchingQuery(query);
-            }
-
-            @Override
-            public <T> ObjectAdapter firstMatchingQuery(final Query<T> query) {
-                return getPersistenceSession().firstMatchingQuery(query);
-            }
-        };
-
-        this.messageBrokerService = new MessageBrokerServiceAbstract() {
-
-            @Override
-            public void informUser(final String message) {
-                getMessageBroker().addMessage(message);
-            }
-
-            @Override
-            public void warnUser(final String message) {
-                getMessageBroker().addWarning(message);
-            }
-
-            @Override
-            public void raiseError(final String message) {
-                throw new RecoverableException(message);
-            }
-
-
-        };
-        this.localizationProvider = new LocalizationProviderAbstract() {
-
-            @Override
-            public Localization getLocalization() {
-                return IsisContext.getLocalization();
-            }
-        };
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // Components
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    public LocalizationProviderAbstract getLocalizationProvider() {
-        return localizationProvider;
-    }
-
-    @Override
-    public PersistenceSessionService getPersistenceSessionService() {
-        return persistenceSessionService;
-    }
-
-    @Override
-    public MessageBrokerService getMessageBrokerService() {
-        return messageBrokerService;
-    }
-
-    // ///////////////////////////////////////////
-    // Dependencies (from context)
-    // ///////////////////////////////////////////
-
-
-    @Override
-    public TransactionStateProvider getTransactionStateProvider() {
-        return new TransactionStateProviderAbstract() {
-            @Override
-            public TransactionState getTransactionState() {
-                final IsisTransaction transaction = getTransactionManager().getTransaction();
-                if(transaction == null) {
-                    return TransactionState.NONE;
-                }
-                IsisTransaction.State state = transaction.getState();
-                return state.getRuntimeContextState();
-            }
-        };
-    }
-
-
-    private static PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
-    }
-
-    private static IsisTransactionManager getTransactionManager() {
-        return getPersistenceSession().getTransactionManager();
-    }
-
-    private static MessageBroker getMessageBroker() {
-        return IsisContext.getMessageBroker();
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
index 2b3c8cb..4ae9afd 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
@@ -44,7 +44,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.runtime.services.memento.MementoServiceDefault;
 import org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTemplate;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
 import org.apache.isis.schema.cmd.v1.ActionDto;
@@ -80,7 +80,7 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
     
     protected void doExecute(Object context) {
 
-        final PersistenceSession persistenceSession = getPersistenceSession();
+        final PersistenceSessionInternal persistenceSession = getPersistenceSession();
         final IsisTransactionManager transactionManager = getTransactionManager(persistenceSession);
         final List<Command> backgroundCommands = Lists.newArrayList();
         transactionManager.executeWithinTransaction(new TransactionalClosure() {

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/services/homepage/HomePageProviderServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/homepage/HomePageProviderServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/homepage/HomePageProviderServiceDefault.java
index f712a5b..9018e0e 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/homepage/HomePageProviderServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/homepage/HomePageProviderServiceDefault.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
@@ -105,7 +105,7 @@ public class HomePageProviderServiceDefault implements HomePageProviderService {
     // for any other value for Where
     protected static final Where WHERE_FOR_ACTION_INVOCATION = Where.ANYWHERE;
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/services/l10n/LocalizationProviderInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/l10n/LocalizationProviderInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/l10n/LocalizationProviderInternalDefault.java
new file mode 100644
index 0000000..077bc3d
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/l10n/LocalizationProviderInternalDefault.java
@@ -0,0 +1,37 @@
+/*
+ *  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.services.l10n;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.profiles.Localization;
+import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternalAbstract;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+
+@DomainService(
+        nature = NatureOfService.DOMAIN,
+        menuOrder = "" + (Integer.MAX_VALUE - 1)  // ie before the Noop impl in metamodel
+)
+public class LocalizationProviderInternalDefault extends LocalizationProviderInternalAbstract {
+
+    @Override
+    public Localization getLocalization() {
+        return IsisContext.getLocalization();
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/services/msgbroker/MessageBrokerServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/msgbroker/MessageBrokerServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/msgbroker/MessageBrokerServiceInternalDefault.java
new file mode 100644
index 0000000..4e4e4c7
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/msgbroker/MessageBrokerServiceInternalDefault.java
@@ -0,0 +1,53 @@
+/*
+ *  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.services.msgbroker;
+
+import org.apache.isis.applib.RecoverableException;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.core.commons.authentication.MessageBroker;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternalAbstract;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+
+@DomainService(
+        nature = NatureOfService.DOMAIN,
+        menuOrder = "" + (Integer.MAX_VALUE - 1)  // ie before the Noop impl in metamodel
+)
+public class MessageBrokerServiceInternalDefault extends MessageBrokerServiceInternalAbstract {
+
+    @Override
+    public void informUser(final String message) {
+        getMessageBroker().addMessage(message);
+    }
+
+    @Override
+    public void warnUser(final String message) {
+        getMessageBroker().addWarning(message);
+    }
+
+    @Override
+    public void raiseError(final String message) {
+        throw new RecoverableException(message);
+    }
+
+    private static MessageBroker getMessageBroker() {
+        return IsisContext.getMessageBroker();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
new file mode 100644
index 0000000..5605b73
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
@@ -0,0 +1,157 @@
+/*
+ *  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.services.persistsession;
+
+import java.util.List;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.query.Query;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService2;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternalAbstract;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+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.PersistenceSessionInternal;
+import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
+
+@DomainService(
+        nature = NatureOfService.DOMAIN,
+        menuOrder = "" + (Integer.MAX_VALUE - 1)  // ie before the Noop impl in metamodel
+)
+public class PersistenceSessionServiceInternalDefault extends PersistenceSessionServiceInternalAbstract {
+
+    @Override
+    public ObjectAdapter getAdapterFor(Oid oid) {
+        return getPersistenceSession().getAdapterFor(oid);
+    }
+
+    @Override
+    public ObjectAdapter getAdapterFor(final Object pojo) {
+        return getPersistenceSession().getAdapterFor(pojo);
+    }
+
+    @Override
+    public ObjectAdapter adapterFor(final Object pojo) {
+        return getPersistenceSession().adapterFor(pojo);
+    }
+
+    @Override
+    public ObjectAdapter adapterFor(
+            final Object pojo,
+            final ObjectAdapter ownerAdapter,
+            final OneToManyAssociation collection) {
+        return getPersistenceSession().adapterFor(pojo, ownerAdapter, collection);
+    }
+
+    @Override
+    public ObjectAdapter mapRecreatedPojo(Oid oid, Object recreatedPojo) {
+        return getPersistenceSession().mapRecreatedPojo(oid, recreatedPojo);
+    }
+
+    @Override
+    public void removeAdapter(ObjectAdapter adapter) {
+        getPersistenceSession().removeAdapter(adapter);
+    }
+
+    @Override
+    public void makePersistent(final ObjectAdapter adapter) {
+        getPersistenceSession().makePersistentInTransaction(adapter);
+    }
+
+    @Override
+    public void remove(final ObjectAdapter adapter) {
+        getPersistenceSession().destroyObjectInTransaction(adapter);
+    }
+
+    @Override
+    public ObjectAdapter createTransientInstance(final ObjectSpecification spec) {
+        return getPersistenceSession().createTransientInstance(spec);
+    }
+
+    @Override
+    public ObjectAdapter createViewModelInstance(ObjectSpecification spec, String memento) {
+        return getPersistenceSession().createViewModelInstance(spec, memento);
+    }
+
+    @Override
+    public Object lookup(
+            final Bookmark bookmark,
+            final BookmarkService2.FieldResetPolicy fieldResetPolicy) {
+        return new DomainObjectContainerResolve().lookup(bookmark, fieldResetPolicy);
+    }
+
+    @Override
+    public Bookmark bookmarkFor(Object domainObject) {
+        return new DomainObjectContainerResolve().bookmarkFor(domainObject);
+    }
+
+    @Override
+    public Bookmark bookmarkFor(Class<?> cls, String identifier) {
+        return new DomainObjectContainerResolve().bookmarkFor(cls, identifier);
+    }
+
+    @Override
+    public void resolve(final Object parent) {
+        new DomainObjectContainerResolve().resolve(parent);
+    }
+
+    @Override
+    public void resolve(final Object parent, final Object field) {
+        new DomainObjectContainerResolve().resolve(parent, field);
+    }
+
+    @Override
+    public void beginTran() {
+        getTransactionManager().startTransaction();
+    }
+
+    @Override
+    public boolean flush() {
+        return getTransactionManager().flushTransaction();
+    }
+
+    @Override
+    public void commit() {
+        getTransactionManager().endTransaction();
+    }
+
+    @Override
+    public <T> List<ObjectAdapter> allMatchingQuery(final Query<T> query) {
+        return getPersistenceSession().allMatchingQuery(query);
+    }
+
+    @Override
+    public <T> ObjectAdapter firstMatchingQuery(final Query<T> query) {
+        return getPersistenceSession().firstMatchingQuery(query);
+    }
+
+    public static PersistenceSessionInternal getPersistenceSession() {
+        return IsisContext.getPersistenceSession();
+    }
+
+    static IsisTransactionManager getTransactionManager() {
+        return getPersistenceSession().getTransactionManager();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publish/PublishingServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publish/PublishingServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publish/PublishingServiceInternalDefault.java
index dea1dc3..f84f6a3 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publish/PublishingServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publish/PublishingServiceInternalDefault.java
@@ -71,7 +71,7 @@ import org.apache.isis.core.metamodel.services.publishing.PublishingServiceInter
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.runtime.services.changes.ChangedObjectsServiceInternal;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 
 /**
@@ -98,7 +98,7 @@ public class PublishingServiceInternalDefault implements PublishingServiceIntern
             getPersistenceSession().remapRecreatedPojo(adapter, replacementObject);
             return adapter;
         }
-        protected PersistenceSession getPersistenceSession() {
+        protected PersistenceSessionInternal getPersistenceSession() {
             return IsisContext.getPersistenceSession();
         }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/services/transtate/TransactionStateProviderInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/transtate/TransactionStateProviderInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/transtate/TransactionStateProviderInternalDefault.java
new file mode 100644
index 0000000..5fbc4b9
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/transtate/TransactionStateProviderInternalDefault.java
@@ -0,0 +1,55 @@
+/*
+ *  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.services.transtate;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.core.metamodel.transactions.TransactionState;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternalAbstract;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
+import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
+import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
+
+
+@DomainService(
+        nature = NatureOfService.DOMAIN,
+        menuOrder = "" + (Integer.MAX_VALUE - 1)  // ie before the Noop impl in metamodel
+)
+public class TransactionStateProviderInternalDefault extends TransactionStateProviderInternalAbstract {
+
+    @Override
+    public TransactionState getTransactionState() {
+        final IsisTransaction transaction = getTransactionManager().getTransaction();
+        if (transaction == null) {
+            return TransactionState.NONE;
+        }
+        IsisTransaction.State state = transaction.getState();
+        return state.getRuntimeContextState();
+    }
+
+    private static IsisTransactionManager getTransactionManager() {
+        return getPersistenceSession().getTransactionManager();
+    }
+
+    private static PersistenceSessionInternal getPersistenceSession() {
+        return IsisContext.getPersistenceSession();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/services/xmlsnapshot/XmlSnapshotServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/xmlsnapshot/XmlSnapshotServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/xmlsnapshot/XmlSnapshotServiceDefault.java
index e31d155..a2ed146 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/xmlsnapshot/XmlSnapshotServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/xmlsnapshot/XmlSnapshotServiceDefault.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.runtime.snapshot.XmlSnapshot;
 import org.apache.isis.core.runtime.snapshot.XmlSnapshotBuilder;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 /**
  * This service allows an XML document to be generated capturing the data of a root entity and specified related
@@ -90,7 +90,7 @@ public class XmlSnapshotServiceDefault extends XmlSnapshotServiceAbstract {
     
     // //////////////////////////////////////
 
-    protected PersistenceSession gerPersistenceSession() {
+    protected PersistenceSessionInternal gerPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
index 324dd6c..8fa7749 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
@@ -22,7 +22,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.session.IsisSession;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
@@ -35,7 +35,7 @@ public abstract class AbstractIsisSessionTemplate {
     public void execute(final AuthenticationSession authSession, final Object context) {
         try {
             IsisContext.openSession(authSession);
-            PersistenceSession persistenceSession = getPersistenceSession();
+            PersistenceSessionInternal persistenceSession = getPersistenceSession();
             persistenceSession.getServicesInjector().injectServicesInto(this);
             doExecute(context);
         } finally {
@@ -58,7 +58,7 @@ public abstract class AbstractIsisSessionTemplate {
      * transaction handling.
      */
     protected void doExecute(final Object context) {
-        final PersistenceSession persistenceSession = getPersistenceSession();
+        final PersistenceSessionInternal persistenceSession = getPersistenceSession();
         final IsisTransactionManager transactionManager = getTransactionManager(persistenceSession);
         transactionManager.executeWithinTransaction(new TransactionalClosure() {
             @Override
@@ -90,11 +90,11 @@ public abstract class AbstractIsisSessionTemplate {
     
     // //////////////////////////////////////
     
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 
-    protected IsisTransactionManager getTransactionManager(PersistenceSession persistenceSession) {
+    protected IsisTransactionManager getTransactionManager(PersistenceSessionInternal persistenceSession) {
         return persistenceSession.getTransactionManager();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/snapshot/XmlSnapshotBuilder.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/snapshot/XmlSnapshotBuilder.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/snapshot/XmlSnapshotBuilder.java
index 6c50c59..2070ddb 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/snapshot/XmlSnapshotBuilder.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/snapshot/XmlSnapshotBuilder.java
@@ -25,7 +25,7 @@ import com.google.common.collect.Lists;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 /**
  * Builds an {@link XmlSnapshot} using a fluent use through a builder:
@@ -93,7 +93,7 @@ public class XmlSnapshotBuilder {
     // Dependencies (from context)
     // ///////////////////////////////////////////////////////
 
-    private static PersistenceSession getPersistenceSession() {
+    private static PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
index 6aef396..5b7fdc2 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
@@ -40,6 +40,7 @@ import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.lang.ListExtensions;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
+import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
@@ -49,14 +50,13 @@ import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.exploration.ExplorationSession;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
-import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.internal.InitialisationSession;
 import org.apache.isis.core.runtime.system.internal.IsisLocaleInitializer;
 import org.apache.isis.core.runtime.system.internal.IsisTimeZoneInitializer;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactoryMetamodelRefiner;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManagerException;
@@ -175,10 +175,7 @@ public class IsisSystem implements ApplicationScopedComponent {
             servicesInjector.addFallbackIfRequired(PersistenceSessionFactory.class, persistenceSessionFactory);
 
             // runtimeContext
-            final RuntimeContextFromSession runtimeContext =
-                    new RuntimeContextFromSession(
-                            deploymentType.getDeploymentCategory(), configuration,
-                            servicesInjector, specificationLoader);
+            final RuntimeContext runtimeContext = new RuntimeContext(servicesInjector);
 
             // wire up components and components into services...
             runtimeContext.injectInto(specificationLoader);
@@ -332,7 +329,7 @@ public class IsisSystem implements ApplicationScopedComponent {
         return getPersistenceSession().getServicesInjector();
     }
 
-    private PersistenceSession getPersistenceSession() {
+    private PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index 610df72..729f75c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -35,13 +35,13 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationException;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.runtimecontext.LocalizationDefault;
+import org.apache.isis.core.metamodel.services.l10n.LocalizationDefault;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.internal.InitialisationSession;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.session.IsisSession;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
@@ -475,7 +475,7 @@ public class IsisContext {
      * 
      * @see IsisSession#getPersistenceSession()
      */
-    public static PersistenceSession getPersistenceSession() {
+    public static PersistenceSessionInternal getPersistenceSession() {
         return getSession().getPersistenceSession();
     }
 
@@ -490,7 +490,7 @@ public class IsisContext {
      * Convenience methods
      * 
      * @see IsisSession#getPersistenceSession()
-     * @see PersistenceSession#getTransactionManager()
+     * @see PersistenceSessionInternal#getTransactionManager()
      */
     public static IsisTransactionManager getTransactionManager() {
         return getPersistenceSession().getTransactionManager();
@@ -514,10 +514,10 @@ public class IsisContext {
      * 
      * <p>
      * Transactions are managed using the {@link IsisTransactionManager}
-     * obtainable from the {@link IsisSession's} {@link PersistenceSession}.
+     * obtainable from the {@link IsisSession's} {@link PersistenceSessionInternal}.
      * 
      * @see IsisSession#getCurrentTransaction()
-     * @see PersistenceSession#getTransactionManager()
+     * @see PersistenceSessionInternal#getTransactionManager()
      */
     public static IsisTransaction getCurrentTransaction() {
         return getSession().getCurrentTransaction();

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
index cb16dec..13ac289 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectFactory.java
@@ -26,11 +26,11 @@ import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
 
 public class ObjectFactory {
 
-    private final PersistenceSession persistenceSession;
+    private final PersistenceSessionInternal persistenceSession;
     private final ServicesInjector servicesInjector;
 
     public ObjectFactory(
-            final PersistenceSession persistenceSession,
+            final PersistenceSessionInternal persistenceSession,
             final ServicesInjector servicesInjector) {
         this.persistenceSession = persistenceSession;
         this.servicesInjector = servicesInjector;


[11/30] isis git commit: ISIS-1407: removed SpecificationLoaderAware.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index 63da828..d0ed28a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -29,32 +29,36 @@ import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
-import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller;
 import org.apache.isis.objectstore.jdo.datanucleus.JDOStateManagerForIsis;
 import org.apache.isis.objectstore.jdo.service.RegisterEntities;
 
-public class PersistenceSessionFactory
-        implements ApplicationScopedComponent, FixturesInstalledFlag {
+/**
+ *
+ * Factory for {@link PersistenceSession}.
+ *
+ * <p>
+ * Implementing class is added to {@link ServicesInjector} as an (internal) domain service; all public methods
+ * must be annotated using {@link Programmatic}.
+ * </p>
+ */
+public class PersistenceSessionFactory implements ApplicationScopedComponent, FixturesInstalledFlag {
 
     private static final Logger LOG = LoggerFactory.getLogger(PersistenceSessionFactory.class);
 
     //region > constructor
 
-    private final DeploymentType deploymentType;
     private final IsisConfigurationDefault configuration;
 
-    public PersistenceSessionFactory(
-            final DeploymentType deploymentType,
-            final IsisConfigurationDefault isisConfiguration) {
-        this.deploymentType = deploymentType;
+    public PersistenceSessionFactory(final IsisConfigurationDefault isisConfiguration) {
         this.configuration = isisConfiguration;
     }
 
@@ -64,11 +68,11 @@ public class PersistenceSessionFactory
 
     private DataNucleusApplicationComponents applicationComponents;
 
-    public final void init() {
+    @Programmatic
+    public void init() {
         this.applicationComponents = createDataNucleusApplicationComponents(configuration);
     }
 
-
     private DataNucleusApplicationComponents createDataNucleusApplicationComponents(
             final IsisConfiguration configuration) {
 
@@ -161,8 +165,9 @@ public class PersistenceSessionFactory
     /**
      * Called by {@link org.apache.isis.core.runtime.system.session.IsisSessionFactory#openSession(AuthenticationSession)}.
      */
+    @Programmatic
     public PersistenceSession createPersistenceSession(
-            final ServicesInjectorSpi servicesInjector,
+            final ServicesInjector servicesInjector,
             final SpecificationLoader specificationLoader,
             final AuthenticationSession authenticationSession) {
 
@@ -184,11 +189,13 @@ public class PersistenceSessionFactory
 
     private Boolean fixturesInstalled;
 
+    @Programmatic
     @Override
     public Boolean isFixturesInstalled() {
         return fixturesInstalled;
     }
 
+    @Programmatic
     @Override
     public void setFixturesInstalled(final Boolean fixturesInstalled) {
         this.fixturesInstalled = fixturesInstalled;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
index 881bb98..9522be5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
@@ -29,8 +29,7 @@ import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
@@ -69,7 +68,7 @@ public class IsisSessionFactory implements ApplicationScopedComponent {
     private final DeploymentType deploymentType;
     private final IsisConfiguration configuration;
     private final SpecificationLoader specificationLoaderSpi;
-    private final ServicesInjectorSpi servicesInjector;
+    private final ServicesInjector servicesInjector;
     private final AuthenticationManager authenticationManager;
     private final AuthorizationManager authorizationManager;
     private final PersistenceSessionFactory persistenceSessionFactory;
@@ -78,7 +77,7 @@ public class IsisSessionFactory implements ApplicationScopedComponent {
     public IsisSessionFactory(
             final DeploymentType deploymentType,
             final IsisConfiguration configuration,
-            final ServicesInjectorSpi servicesInjector,
+            final ServicesInjector servicesInjector,
             final SpecificationLoader specificationLoader,
             final AuthenticationManager authenticationManager,
             final AuthorizationManager authorizationManager,

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
index 9a4cac4..516bcb6 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.commons.components.TransactionScopedComponent;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal;
 import org.apache.isis.core.metamodel.transactions.TransactionState;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 7655703..5182e33 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
@@ -42,7 +42,7 @@ import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerBase;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
 import org.apache.isis.core.runtime.services.RequestScopedService;
 import org.apache.isis.core.runtime.system.context.IsisContext;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
index 96698fb..79368a6 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
@@ -48,8 +48,8 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.lang.ClassUtil;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
@@ -266,8 +266,8 @@ public abstract class IsisComponentProvider {
         return authorizationManager;
     }
 
-    public ServicesInjectorDefault provideServiceInjector() {
-        return new ServicesInjectorDefault(services);
+    public ServicesInjector provideServiceInjector() {
+        return new ServicesInjector(services);
     }
 
     public FixturesInstaller provideFixturesInstaller()  {
@@ -276,7 +276,7 @@ public abstract class IsisComponentProvider {
 
     public SpecificationLoader provideSpecificationLoader(
             final DeploymentType deploymentType,
-            final ServicesInjectorSpi servicesInjector,
+            final ServicesInjector servicesInjector,
             final Collection<MetaModelRefiner> metaModelRefiners)  throws IsisSystemException {
 
         final SpecificationLoaderInstaller reflectorInstaller = new JavaReflectorInstaller(getConfiguration());
@@ -287,7 +287,7 @@ public abstract class IsisComponentProvider {
 
     public PersistenceSessionFactory providePersistenceSessionFactory(
             final DeploymentType deploymentType,
-            final ServicesInjectorSpi servicesInjector) {
+            final ServicesInjector servicesInjector) {
         final PersistenceMechanismInstaller persistenceMechanismInstaller =
                 new DataNucleusPersistenceMechanismInstaller(getConfiguration());
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
index ef7d119..bbe76bb 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson;
 import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
@@ -135,7 +135,7 @@ public class IsisComponentProviderDefault2 extends IsisComponentProvider  {
     @Override
     public SpecificationLoader provideSpecificationLoader(
             final DeploymentType deploymentType,
-            final ServicesInjectorSpi servicesInjector,
+            final ServicesInjector servicesInjector,
             final Collection<MetaModelRefiner> metaModelRefiners) throws IsisSystemException {
 
         final DeploymentCategory deploymentCategory = deploymentType.getDeploymentCategory();

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
index 6ff1c64..2b41de3 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
@@ -25,7 +25,7 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.isis.core.commons.components.InstallerAbstract;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
 import org.apache.isis.core.runtime.system.DeploymentType;
@@ -66,9 +66,9 @@ public class DataNucleusPersistenceMechanismInstaller extends InstallerAbstract
     @Override
     public PersistenceSessionFactory createPersistenceSessionFactory(
             final DeploymentType deploymentType,
-            final ServicesInjectorSpi servicesInjector) {
+            final ServicesInjector servicesInjector) {
 
-        return new PersistenceSessionFactory(deploymentType, getConfiguration());
+        return new PersistenceSessionFactory(getConfiguration());
     }
     //endregion
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/IsisConfigurationForJdoIntegTests.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/IsisConfigurationForJdoIntegTests.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/IsisConfigurationForJdoIntegTests.java
index 7e859fd..db9b05d 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/IsisConfigurationForJdoIntegTests.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/IsisConfigurationForJdoIntegTests.java
@@ -36,7 +36,7 @@ import org.apache.isis.objectstore.jdo.service.RegisterEntities;
 /**
  * If instantiated by the integration testing framework, this object will be registered as the implementation of
  * the {@link ConfigurationServiceInternal} (internal) domain service, using
- * {@link org.apache.isis.core.metamodel.services.ServicesInjectorDefault#addFallbackIfRequired(Class, Object)}.
+ * {@link org.apache.isis.core.metamodel.services.ServicesInjector#addFallbackIfRequired(Class, Object)}.
  */
 public class IsisConfigurationForJdoIntegTests extends IsisConfigurationDefault {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOStateManagerForIsis.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOStateManagerForIsis.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOStateManagerForIsis.java
index 32d0527..88e77af 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOStateManagerForIsis.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/JDOStateManagerForIsis.java
@@ -27,7 +27,7 @@ import org.datanucleus.state.ReferentialStateManagerImpl;
 import org.datanucleus.store.FieldValues;
 import org.datanucleus.store.fieldmanager.FieldManager;
 
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
 public class JDOStateManagerForIsis extends ReferentialStateManagerImpl {
@@ -214,7 +214,7 @@ public class JDOStateManagerForIsis extends ReferentialStateManagerImpl {
         getServicesInjector().injectServicesInto(pc);
     }
 
-    protected ServicesInjectorSpi getServicesInjector() {
+    protected ServicesInjector getServicesInjector() {
         return IsisContext.getPersistenceSession().getServicesInjector();
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
index 19fb80d..1ff10a5 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
@@ -45,7 +45,7 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -196,7 +196,7 @@ public class IsisJdoSupportImpl implements IsisJdoSupport {
         return IsisContext.getPersistenceSession();
     }
 
-    protected ServicesInjectorSpi getServicesInjector() {
+    protected ServicesInjector getServicesInjector() {
         return getPersistenceSession().getServicesInjector();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/test/java/org/apache/isis/core/runtime/services/ServiceInstantiatorTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/ServiceInstantiatorTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/ServiceInstantiatorTest.java
index ff16b30..3237b51 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/ServiceInstantiatorTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/ServiceInstantiatorTest.java
@@ -25,7 +25,7 @@ import org.junit.Rule;
 import org.junit.Test;
 
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import static org.hamcrest.CoreMatchers.is;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
index 3e1e4ab..1cb45ec 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
@@ -33,7 +33,7 @@ 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.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
index e9dab8f..4c3ae79 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
@@ -36,7 +36,7 @@ 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.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
index 0f11391..246067d 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.viewer.restfulobjects.rendering;
 
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
index 3267ab9..226ae18 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
index b259fdc..783dc6d 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
@@ -29,7 +29,7 @@ import javax.xml.bind.Marshaller;
 import org.jboss.resteasy.plugins.providers.jaxb.JAXBXmlRootElementProvider;
 
 import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.schema.utils.jaxbadapters.PersistentEntityAdapter;
@@ -58,7 +58,7 @@ public class RestfulObjectsJaxbWriterForXml extends JAXBXmlRootElementProvider {
             @Override
             protected BookmarkService getBookmarkService() {
                 final PersistenceSession persistenceSession = IsisContext.getPersistenceSession();
-                final ServicesInjectorSpi servicesInjector = persistenceSession.getServicesInjector();
+                final ServicesInjector servicesInjector = persistenceSession.getServicesInjector();
                 return servicesInjector.lookupService(BookmarkService.class);
             }
         });

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index 44a4d0b..916d500 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
index ad14fc4..fae5b0c 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
@@ -38,7 +38,7 @@ import org.apache.isis.core.commons.url.UrlEncodingUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/SwaggerSpecResource.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/SwaggerSpecResource.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/SwaggerSpecResource.java
index 4032013..d051294 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/SwaggerSpecResource.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/SwaggerSpecResource.java
@@ -29,7 +29,7 @@ import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.isis.applib.services.swagger.SwaggerService;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 
@@ -114,7 +114,7 @@ public class SwaggerSpecResource {
         @Inject
         SwaggerService swaggerService;
 
-        ServicesInjectorSpi getServicesInjector() {
+        ServicesInjector getServicesInjector() {
             return getPersistenceSession().getServicesInjector();
         }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/LocalizerForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/LocalizerForIsis.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/LocalizerForIsis.java
index c8d0340..66be00a 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/LocalizerForIsis.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/LocalizerForIsis.java
@@ -33,7 +33,7 @@ import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
@@ -148,7 +148,7 @@ public class LocalizerForIsis extends Localizer {
                 .lookupService(TranslationService.class);
     }
 
-    protected ServicesInjectorSpi getServicesInjector() {
+    protected ServicesInjector getServicesInjector() {
         return getPersistenceSession().getServicesInjector();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
index 6bcf74c..8e2c289 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
@@ -49,7 +49,7 @@ import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerForType;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSession;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index b569d86..dcd2626 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -60,7 +60,7 @@ import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -688,7 +688,7 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> {
         return new ActionModel(this);
     }
 
-    protected ServicesInjectorSpi getServicesInjector() {
+    protected ServicesInjector getServicesInjector() {
         return getPersistenceSession().getServicesInjector();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index d8daeac..58d9ce3 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -43,12 +43,12 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacet;
 import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
 import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
@@ -510,7 +510,7 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
         return getPersistenceSessionStatic();
     }
 
-    private static ServicesInjectorSpi getServicesInjector() {
+    private static ServicesInjector getServicesInjector() {
         return getPersistenceSessionStatic().getServicesInjector();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
index 284c3ee..eada635 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 87d142c..b7435ad 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -60,7 +60,7 @@ import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.MessageBroker;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -429,7 +429,7 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
     // System components
     // ///////////////////////////////////////////////////
 
-    protected ServicesInjectorSpi getServicesInjector() {
+    protected ServicesInjector getServicesInjector() {
         return getPersistenceSession().getServicesInjector();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
index f2e5b2f..a3c4235 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
@@ -28,7 +28,7 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.IsisSystem;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -150,7 +150,7 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel
         return IsisContext.getPersistenceSession();
     }
 
-    protected ServicesInjectorSpi getServicesInjector() {
+    protected ServicesInjector getServicesInjector() {
         return getPersistenceSession().getServicesInjector();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
index 52aa5e9..cc52a94 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
@@ -56,7 +56,6 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcher;
 import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcherTypeSafe;
 import org.apache.isis.core.wrapper.handlers.ProxyContextHandler;
@@ -75,14 +74,11 @@ import org.apache.isis.core.wrapper.proxy.ProxyCreator;
  */
 @DomainService(nature = NatureOfService.DOMAIN)
 public class WrapperFactoryDefault implements WrapperFactory,
-        SpecificationLoaderAware, AdapterManagerAware, PersistenceSessionServiceAware {
+        AdapterManagerAware, PersistenceSessionServiceAware {
 
     private final List<InteractionListener> listeners = new ArrayList<InteractionListener>();
     private final Map<Class<? extends InteractionEvent>, InteractionEventDispatcher> dispatchersByEventClass = new HashMap<Class<? extends InteractionEvent>, InteractionEventDispatcher>();
 
-    private SpecificationLoader specificationLoader;
-    private AdapterManager adapterManager;
-    private PersistenceSessionService persistenceSessionService;
 
     private final ProxyContextHandler proxyContextHandler;
 
@@ -257,7 +253,8 @@ public class WrapperFactoryDefault implements WrapperFactory,
     }
 
     protected <T> T createProxy(final T domainObject, final ExecutionMode mode) {
-        return proxyContextHandler.proxy(domainObject, this, mode, authenticationSessionProvider, getSpecificationLoader(), getAdapterManager(), getPersistenceSessionService());
+        return proxyContextHandler.proxy(domainObject, this, mode, authenticationSessionProvider, specificationLoader,
+                getAdapterManager(), getPersistenceSessionService());
     }
 
     @Override
@@ -304,11 +301,11 @@ public class WrapperFactoryDefault implements WrapperFactory,
         dispatcher.dispatch(interactionEvent);
     }
 
-    // /////////////////////////////////////////////////////////////
-    // Listeners
-    // /////////////////////////////////////////////////////////////
 
 
+    private AdapterManager adapterManager;
+    private PersistenceSessionService persistenceSessionService;
+
     protected AdapterManager getAdapterManager() {
         return adapterManager;
     }
@@ -319,14 +316,6 @@ public class WrapperFactoryDefault implements WrapperFactory,
     }
 
 
-    protected SpecificationLoader getSpecificationLoader() {
-        return specificationLoader;
-    }
-    @Programmatic
-    @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLookup) {
-        this.specificationLoader = specificationLookup;
-    }
 
     protected PersistenceSessionService getPersistenceSessionService() {
         return persistenceSessionService;
@@ -341,5 +330,7 @@ public class WrapperFactoryDefault implements WrapperFactory,
     @Inject
     AuthenticationSessionProvider authenticationSessionProvider;
 
+    @Inject
+    SpecificationLoader specificationLoader;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
index 945a274..2b38ef5 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
@@ -43,8 +43,15 @@ public class ProxyContextHandler {
     public ProxyContextHandler(final ProxyCreator proxyCreator) {
         this.proxyCreator = proxyCreator;
     }
-    
-    public <T> T proxy(final T domainObject, final WrapperFactory wrapperFactory, final ExecutionMode mode, final AuthenticationSessionProvider authenticationSessionProvider, final SpecificationLoader specificationLookup, final AdapterManager adapterManager, final PersistenceSessionService persistenceSessionService) {
+
+    public <T> T proxy(
+            final T domainObject,
+            final WrapperFactory wrapperFactory,
+            final ExecutionMode mode,
+            final AuthenticationSessionProvider authenticationSessionProvider,
+            final SpecificationLoader specificationLookup,
+            final AdapterManager adapterManager,
+            final PersistenceSessionService persistenceSessionService) {
 
         Ensure.ensureThatArg(wrapperFactory, is(not(nullValue())));
         Ensure.ensureThatArg(authenticationSessionProvider, is(not(nullValue())));

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 55342aa..7cd2c9f 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -29,6 +29,8 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
+import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.applib.services.wrapper.DisabledException;
 import org.apache.isis.applib.services.wrapper.HiddenException;
 import org.apache.isis.applib.services.wrapper.InvalidException;
@@ -36,6 +38,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -50,13 +53,16 @@ import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySe
 import org.apache.isis.core.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethod;
 import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
 import org.apache.isis.core.runtime.authentication.standard.SimpleSession;
+import org.apache.isis.core.runtime.services.command.CommandDtoServiceInternalDefault;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.progmodel.wrapper.dom.employees.Employee;
@@ -86,6 +92,12 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Mock
     private ServicesInjector mockServicesInjector;
     @Mock
+    private CommandContext mockCommandContext;
+    @Mock
+    private Command mockCommand;
+    @Mock
+    private CommandDtoServiceInternal mockCommandDtoServiceInternal;
+    @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
     private DeploymentCategoryProvider mockDeploymentCategoryProvider;
@@ -122,49 +134,52 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Before
     public void setUp() {
 
+
         objectMemberDependencies = new ObjectMemberDependencies(
                 mockSpecificationLoader, mockServicesInjector,
                 mockPersistenceSessionService);
-        
+
         employeeRepository = new EmployeeRepositoryImpl();
 
         employeeDO = new Employee();
         employeeDO.setName("Smith");
-        employeeDO.setEmployeeRepository(employeeRepository); 
-
-        wrapperFactory = createWrapperFactory();
-        wrapperFactory.setAdapterManager(mockAdapterManager);
-        wrapperFactory.setPersistenceSessionService(mockPersistenceSessionService);
-        wrapperFactory.setSpecificationLoader(mockSpecificationLoader);
+        employeeDO.setEmployeeRepository(employeeRepository);
 
         context.checking(new Expectations() {
             {
+                allowing(mockEmployeeAdapter).getOid();
+                will(returnValue(RootOid.create(ObjectSpecId.of("EMP"), "1")));
+
+                allowing(mockEmployeeSpec).getCorrespondingClass();
+                will(returnValue(Employee.class));
+
+                allowing(mockStringSpec).getCorrespondingClass();
+                will(returnValue(String.class));
+
+                allowing(mockServicesInjector).lookupService(CommandContext.class);
+                will(returnValue(mockCommandContext));
+
+                allowing(mockCommandContext).getCommand();
+                will(returnValue(mockCommand));
+
+                allowing(mockServicesInjector).lookupService(CommandDtoServiceInternal.class);
+                will(returnValue(new CommandDtoServiceInternalDefault()));
+
                 allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
                 will(returnValue(mockAuthenticationSessionProvider));
 
+                allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
+                will(returnValue(DeploymentCategory.PRODUCTION));
+
+                allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+                will(returnValue(mockSpecificationLoader));
+
                 allowing(mockSpecificationLoader).loadSpecification(String.class);
                 will(returnValue(mockStringSpec));
 
                 allowing(mockStringSpec).getShortIdentifier();
                 will(returnValue(String.class.getName()));
-            }
-        });
-        
-        
-        final Method employeeGetNameMethod = methodOf(Employee.class, "getName");
-        final Method employeeSetNameMethod = methodOf(Employee.class, "setName", String.class);
-        final Method employeeModifyNameMethod = methodOf(Employee.class, "modifyName", String.class);
-        final Method employeeHideNameMethod = methodOf(Employee.class, "hideName");
-        final Method employeeDisableNameMethod = methodOf(Employee.class, "disableName");
-        final Method employeeValidateNameMethod = methodOf(Employee.class, "validateName", String.class);
-        final Method employeeClearNameMethod = methodOf(Employee.class, "clearName");
-        employeeNameMember = new OneToOneAssociationDefault(
-                facetedMethodForProperty(
-                        employeeSetNameMethod, employeeGetNameMethod, employeeModifyNameMethod, employeeClearNameMethod, employeeHideNameMethod, employeeDisableNameMethod, employeeValidateNameMethod),
-                objectMemberDependencies);
-        
-        context.checking(new Expectations() {
-            {
+
                 allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
                 will(returnValue(DeploymentCategory.PRODUCTION));
 
@@ -174,6 +189,9 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockAdapterManager).getAdapterFor(employeeDO);
                 will(returnValue(mockEmployeeAdapter));
 
+                allowing(mockAdapterManager).adapterFor(employeeDO);
+                will(returnValue(mockEmployeeAdapter));
+
                 allowing(mockEmployeeAdapter).getSpecification();
                 will(returnValue(mockEmployeeSpec));
 
@@ -182,7 +200,30 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
                 allowing(mockEmployeeSpec).getMember(methodOf(Employee.class, "getEmployeeRepository"));
                 will(returnValue(null));
+            }
+        });
 
+
+        wrapperFactory = createWrapperFactory();
+        wrapperFactory.setAdapterManager(mockAdapterManager);
+        wrapperFactory.setPersistenceSessionService(mockPersistenceSessionService);
+        wrapperFactory.specificationLoader = mockSpecificationLoader;
+        wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
+
+        final Method employeeGetNameMethod = methodOf(Employee.class, "getName");
+        final Method employeeSetNameMethod = methodOf(Employee.class, "setName", String.class);
+        final Method employeeModifyNameMethod = methodOf(Employee.class, "modifyName", String.class);
+        final Method employeeHideNameMethod = methodOf(Employee.class, "hideName");
+        final Method employeeDisableNameMethod = methodOf(Employee.class, "disableName");
+        final Method employeeValidateNameMethod = methodOf(Employee.class, "validateName", String.class);
+        final Method employeeClearNameMethod = methodOf(Employee.class, "clearName");
+        employeeNameMember = new OneToOneAssociationDefault(
+                facetedMethodForProperty(
+                        employeeSetNameMethod, employeeGetNameMethod, employeeModifyNameMethod, employeeClearNameMethod, employeeHideNameMethod, employeeDisableNameMethod, employeeValidateNameMethod),
+                objectMemberDependencies);
+
+        context.checking(new Expectations() {
+            {
                 allowing(mockEmployeeSpec).getMember(employeeGetNameMethod);
                 will(returnValue(employeeNameMember));
 
@@ -191,13 +232,13 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
                 allowing(mockEmployeeSpec).getMember(employeeModifyNameMethod);
                 will(returnValue(employeeNameMember));
-                
+
                 allowing(mockEmployeeSpec).getMember(employeeClearNameMethod);
                 will(returnValue(employeeNameMember));
-                
+
                 allowing(mockEmployeeAdapter).getObject();
                 will(returnValue(employeeDO));
-                
+
                 allowing(mockEmployeeAdapter).representsPersistent();
                 will(returnValue(true));
             }
@@ -236,7 +277,22 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     public void shouldBeAbleToReadVisibleProperty() {
 
         allowingEmployeeHasSmithAdapter();
-        
+
+        context.checking(new Expectations() {{
+            oneOf(mockConfiguration).getBoolean("isis.reflector.facet.filterVisibility", true);
+            will(returnValue(true));
+
+            allowing(mockAdapterForStringSmith).getSpecification();
+            will(returnValue(mockStringSpec));
+
+            ignoring(mockStringSpec);
+
+            allowing(mockAdapterForStringSmith).isDestroyed();
+            will(returnValue(false));
+
+            allowing(mockPersistenceSessionService).adapterFor("Smith");
+            will(returnValue(mockAdapterForStringSmith));
+        }});
 
         // then
         assertThat(employeeWO.getName(), is(employeeDO.getName()));
@@ -263,9 +319,23 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         context.checking(new Expectations() {
             {
+                allowing(mockAdapterForStringJones).titleString(null);
+
+                ignoring(mockCommand);
+
+                oneOf(mockConfiguration).getBoolean("isis.reflector.facet.filterVisibility", true);
+                will(returnValue(true));
 
-                oneOf(mockAdapterManager).adapterFor("Jones");
+                allowing(mockAdapterForStringJones).isDestroyed();
+                will(returnValue(false));
+
+                allowing(mockAdapterForStringJones).getSpecification();
+                will(returnValue(mockStringSpec));
+
+                allowing(mockPersistenceSessionService).adapterFor("Jones");
                 will(returnValue(mockAdapterForStringJones));
+
+                ignoring(mockStringSpec);
             }
         });
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index 225162c..dd05e8a 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -55,6 +55,7 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstr
 import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
@@ -97,6 +98,8 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     @Mock
     private Identifier mockPasswordIdentifier;
 
+    @Mock
+    private ServicesInjector mockServicesInjector;
 
     @Mock
     protected ObjectAdapter mockPasswordAdapter;
@@ -125,16 +128,22 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
         wrapperFactory.setAdapterManager(mockAdapterManager);
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
         wrapperFactory.setPersistenceSessionService(mockPersistenceSessionService);
-        wrapperFactory.setSpecificationLoader(mockSpecificationLoader);
-        
+        wrapperFactory.specificationLoader = mockSpecificationLoader;
+
         context.checking(new Expectations() {
             {
+                allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+                will(returnValue(mockSpecificationLoader));
+
                 allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
                 will(returnValue(DeploymentCategory.PRODUCTION));
 
                 allowing(mockAdapterManager).getAdapterFor(employeeDO);
                 will(returnValue(mockEmployeeAdapter));
 
+                allowing(mockAdapterManager).adapterFor(employeeDO);
+                will(returnValue(mockEmployeeAdapter));
+
                 allowing(mockAdapterManager).adapterFor(passwordValue);
                 will(returnValue(mockPasswordAdapter));
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/mothballed/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/legacy/IsisTestRunner.java
----------------------------------------------------------------------
diff --git a/mothballed/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/legacy/IsisTestRunner.java b/mothballed/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/legacy/IsisTestRunner.java
index cdd1170..aabf5a2 100644
--- a/mothballed/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/legacy/IsisTestRunner.java
+++ b/mothballed/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/legacy/IsisTestRunner.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilderDefault;
 import org.apache.isis.core.integtestsupport.legacy.components.IsisSystemUsingInstallersWithinJunit;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 import org.apache.isis.core.runtime.authentication.exploration.AuthenticationRequestExploration;
 import org.apache.isis.core.runtime.fixtures.authentication.AuthenticationRequestLogonFixture;
@@ -204,7 +204,7 @@ public class IsisTestRunner extends JUnit4ClassRunner {
         return IsisContext.getPersistenceSession();
     }
 
-    private static ServicesInjectorSpi getServicesInjector() {
+    private static ServicesInjector getServicesInjector() {
         return getPersistenceSession().getServicesInjector();
     }
 


[17/30] isis git commit: ISIS-1407: removed SpecificationLoaderAware.

Posted by da...@apache.org.
ISIS-1407: removed SpecificationLoaderAware.

Also:
- minor extension to ServiceRegistry2
- collapsed ServicesInjector, ServicesInjectorSpi and ServicesInjectorDefault to just ServicesInjector.


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

Branch: refs/heads/ISIS-1408
Commit: 6e3495f41f457d190c340ce91200a7c1572b8cfc
Parents: b6dc190
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu May 19 23:05:49 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu May 19 23:05:49 2016 +0100

----------------------------------------------------------------------
 .../guides/_rgsvc_api_ServiceRegistry.adoc      |   8 +-
 .../services/registry/ServiceRegistry.java      |   1 -
 .../services/registry/ServiceRegistry2.java     |  30 ++
 .../integtestsupport/IsisSystemForTest.java     |   6 +-
 .../config/IsisConfigurationDefault.java        |   2 +-
 .../facetapi/MetaModelValidatorRefiner.java     |   4 +-
 .../metamodel/facets/DomainEventHelper.java     |   2 +-
 .../metamodel/facets/FacetFactoryAbstract.java  |  36 +-
 ...llectionIdentifyingFacetFactoryAbstract.java |   3 -
 .../action/ActionAnnotationFacetFactory.java    |   2 +-
 .../ActionDomainEventFacetAbstract.java         |   2 +-
 .../ActionDomainEventFacetDefault.java          |   2 +-
 ...tionDomainEventFacetForActionAnnotation.java |   2 +-
 ...ventFacetForActionInteractionAnnotation.java |   2 +-
 ...cetForPostsActionInvokedEventAnnotation.java |   2 +-
 ...onInvocationFacetForDomainEventAbstract.java |   2 +-
 ...FacetForDomainEventFromActionAnnotation.java |   2 +-
 ...ainEventFromActionInteractionAnnotation.java |   2 +-
 ...nvocationFacetForDomainEventFromDefault.java |   2 +-
 ...cetForPostsActionInvokedEventAnnotation.java |   2 +-
 ...MaxLengthFacetOnActionAnnotationFactory.java |   2 +-
 .../paged/PagedFacetOnActionFactory.java        |   2 +-
 .../annotation/DebugFacetAnnotationFactory.java |   2 +-
 .../ExplorationFacetAnnotationFactory.java      |   2 +-
 ...ActionNamedDebugExplorationFacetFactory.java |   2 +-
 .../NotContributedFacetAnnotationFactory.java   |   2 +-
 .../NotInServiceMenuFacetAnnotationFactory.java |   2 +-
 .../NotInServiceMenuFacetViaMethodFactory.java  |   2 +-
 .../ActionValidationFacetViaMethodFactory.java  |   2 -
 .../all/i18n/TranslationFacetFactory.java       |   3 +-
 .../CollectionAnnotationFacetFactory.java       |   2 +-
 ...ionAddToFacetForDomainEventFromAbstract.java |   2 +-
 ...tForDomainEventFromCollectionAnnotation.java |   2 +-
 ...ventFromCollectionInteractionAnnotation.java |   2 +-
 ...tionAddToFacetForDomainEventFromDefault.java |   2 +-
 ...orPostsCollectionAddedToEventAnnotation.java |   2 +-
 .../CollectionDomainEventFacetAbstract.java     |   2 +-
 .../CollectionDomainEventFacetDefault.java      |   2 +-
 ...DomainEventFacetForCollectionAnnotation.java |   2 +-
 ...FacetForCollectionInteractionAnnotation.java |   2 +-
 ...orPostsCollectionAddedToEventAnnotation.java |   2 +-
 ...stsCollectionRemovedFromEventAnnotation.java |   2 +-
 ...moveFromFacetForDomainEventFromAbstract.java |   2 +-
 ...tForDomainEventFromCollectionAnnotation.java |   2 +-
 ...ventFromCollectionInteractionAnnotation.java |   2 +-
 ...emoveFromFacetForDomainEventFromDefault.java |   2 +-
 ...stsCollectionRemovedFromEventAnnotation.java |   2 +-
 .../paged/PagedFacetOnCollectionFactory.java    |   2 +-
 .../SortedByFacetAnnotationFactory.java         |   2 +-
 .../annotprop/CssClassFacetOnMemberFactory.java |   2 +-
 .../CssClassFaFacetOnMemberFactory.java         |   2 +-
 .../DescribedAsFacetOnMemberFactory.java        |   2 +-
 .../DescribedAsFacetStaticMethodFactory.java    |   2 +-
 .../DisabledFacetStaticMethodFacetFactory.java  |   2 +-
 .../HiddenFacetStaticMethodFactory.java         |   2 +-
 .../annotprop/NamedFacetOnMemberFactory.java    |   2 +-
 .../NamedFacetStaticMethodFactory.java          |   2 +-
 .../annotprop/MemberOrderFacetFactory.java      |   2 -
 .../annotprop/RenderFacetOrResolveFactory.java  |   2 +-
 .../ActionOrderFacetAnnotationFactory.java      |   2 +-
 .../autocomplete/AutoCompleteFacetAbstract.java |   2 +-
 ...cyFacetViaBookmarkableAnnotationFactory.java |   2 +-
 .../CssClassFacetOnTypeAnnotationFactory.java   |   2 +-
 .../object/defaults/DefaultedFacetAbstract.java |   2 +-
 .../DefaultedFacetUsingDefaultsProvider.java    |   2 +-
 .../annotcfg/DefaultedFacetAnnotation.java      |   2 +-
 .../DefaultedFacetFromConfiguration.java        |   2 +-
 ...DescribedAsFacetOnTypeAnnotationFactory.java |   2 +-
 .../DomainObjectAnnotationFacetFactory.java     |   5 +-
 ...oCompleteFacetForAutoCompleteAnnotation.java |   2 +-
 ...oCompleteFacetForDomainObjectAnnotation.java |   2 +-
 ...bleObjectFacetForDomainObjectAnnotation.java |   2 +-
 ...ectLayoutAnnotationUsingCssClassUiEvent.java |   2 +-
 ...nObjectLayoutAnnotationUsingIconUiEvent.java |   2 +-
 ...ObjectLayoutAnnotationUsingTitleUiEvent.java |   2 +-
 .../encodeable/EncodableFacetAbstract.java      |   2 +-
 .../annotcfg/EncodableFacetAnnotation.java      |   2 +-
 .../EncodableFacetFromConfiguration.java        |   2 +-
 .../EncodableFacetUsingEncoderDecoder.java      |   2 +-
 .../FieldOrderFacetAnnotationFactory.java       |   2 +-
 .../facets/object/grid/GridFacetFactory.java    |   1 -
 .../HiddenFacetOnTypeAnnotationFactory.java     |   2 +-
 .../MaskFacetOnTypeAnnotationFactory.java       |   2 +-
 .../MaxLengthFacetOnTypeAnnotationFactory.java  |   2 +-
 .../facets/object/mixin/MixinFacetAbstract.java |   2 +-
 .../MixinFacetForDomainObjectAnnotation.java    |   2 +-
 .../mixin/MixinFacetForMixinAnnotation.java     |   2 +-
 .../MixinFacetForMixinAnnotationFactory.java    |   2 -
 .../MultiLineFacetOnTypeAnnotationFactory.java  |   2 +-
 .../NamedFacetOnTypeAnnotationFactory.java      |   2 +-
 .../NamedFacetStaticMethodFactory.java          |   2 +-
 .../PagedFacetOnTypeAnnotationFactory.java      |   2 +-
 .../parseable/ParseableFacetAbstract.java       |   2 +-
 .../annotcfg/ParseableFacetAnnotation.java      |   2 +-
 .../ParseableFacetFromConfiguration.java        |   2 +-
 .../parser/ParseableFacetUsingParser.java       |   2 +-
 .../PluralAnnotationFacetFactory.java           |   2 +-
 .../PluralFacetStaticMethodFactory.java         |   2 +-
 .../RecreatableObjectFacetAbstract.java         |   3 +-
 ...ectFacetDeclarativeInitializingAbstract.java |   2 +-
 .../RecreatableObjectFacetFactory.java          |   2 -
 ...acetForRecreatableDomainObjectInterface.java |   2 +-
 ...jectFacetForRecreatableObjectAnnotation.java |   2 +-
 ...bjectFacetForRecreatableObjectInterface.java |   2 +-
 ...atableObjectFacetForViewModelAnnotation.java |   2 +-
 ...eObjectFacetForXmlRootElementAnnotation.java |   2 +-
 .../RegExFacetOnTypeAnnotationFactory.java      |   2 +-
 .../methods/TitleFacetViaMethodsFactory.java    |   2 -
 .../title/parser/TitleFacetUsingParser.java     |   2 +-
 ...picalLengthFacetOnTypeAnnotationFactory.java |   2 +-
 ...ionFromMustSatisfyAnnotationOnTypeFacet.java |   2 +-
 ...MustSatisfyAnnotationOnTypeFacetFactory.java |   2 +-
 .../ValidateObjectFacetMethodFactory.java       |   2 -
 .../value/MaxLengthFacetUsingParser2.java       |   2 +-
 .../value/TypicalLengthFacetUsingParser.java    |   2 +-
 .../facets/object/value/ValueFacetAbstract.java |   2 +-
 ...ValueFacetUsingSemanticsProviderFactory.java |   6 +-
 .../ValueSemanticsProviderAndFacetAbstract.java |   2 +-
 .../vsp/ValueSemanticsProviderContext.java      |   2 +-
 .../MustSatisfySpecificationFacetAbstract.java  |   2 +-
 ...tiLineFacetOnParameterAnnotationFactory.java |   2 +-
 .../NamedFacetOnParameterAnnotationFactory.java |   2 +-
 .../ParameterAnnotationFacetFactory.java        |   2 +-
 ...acetForMustSatisfyAnnotationOnParameter.java |   2 +-
 ...pecificationFacetForParameterAnnotation.java |   2 +-
 ...BeforeFacetOnParameterAnnotationFactory.java |   2 +-
 ...LengthFacetOnParameterAnnotationFactory.java |   2 +-
 .../MaskFacetOnParameterAnnotationFactory.java  |   2 +-
 ...atoryFacetOnPropertyStaticMethodFactory.java |   2 +-
 .../MultiLineFacetOnPropertyFactory.java        |   2 +-
 .../PropertyAnnotationFacetFactory.java         |   2 +-
 ...ertyClearFacetForDomainEventFromDefault.java |   2 +-
 ...cetForDomainEventFromPropertyAnnotation.java |   2 +-
 ...nEventFromPropertyInteractionAnnotation.java |   2 +-
 ...tForPostsPropertyChangedEventAnnotation.java |   2 +-
 .../PropertyDomainEventFacetAbstract.java       |   2 +-
 .../modify/PropertyDomainEventFacetDefault.java |   2 +-
 ...tForPostsPropertyChangedEventAnnotation.java |   2 +-
 ...tyDomainEventFacetForPropertyAnnotation.java |   2 +-
 ...ntFacetForPropertyInteractionAnnotation.java |   2 +-
 ...rtySetterFacetForDomainEventFromDefault.java |   2 +-
 ...cetForDomainEventFromPropertyAnnotation.java |   2 +-
 ...nEventFromPropertyInteractionAnnotation.java |   2 +-
 ...tForPostsPropertyChangedEventAnnotation.java |   2 +-
 ...etterOrClearFacetForDomainEventAbstract.java |   2 +-
 ...FacetForMustSatisfyAnnotationOnProperty.java |   2 +-
 ...SpecificationFacetForPropertyAnnotation.java |   2 +-
 ...yBeforeAnnotationOnPropertyFacetFactory.java |   2 +-
 .../TypicalLengthOnPropertyFacetFactory.java    |   2 +-
 .../MaskFacetOnPropertyAnnotationFactory.java   |   2 +-
 .../json/LayoutMetadataReaderFromJson.java      |   4 +-
 .../runtimecontext/RuntimeContext.java          |   1 +
 .../runtimecontext/RuntimeContextAbstract.java  |   1 +
 .../runtimecontext/ServicesInjector.java        |  74 ---
 .../runtimecontext/ServicesInjectorAware.java   |  26 -
 .../noruntime/RuntimeContextNoRuntime.java      |   2 +-
 .../metamodel/services/ServicesInjector.java    | 514 +++++++++++++++++++
 .../services/ServicesInjectorAware.java         |  29 ++
 .../services/ServicesInjectorDefault.java       | 467 -----------------
 .../metamodel/services/ServicesInjectorSpi.java |  50 --
 .../ApplicationFeatureRepositoryDefault.java    |  33 +-
 .../container/DomainObjectContainerDefault.java |  40 +-
 .../services/factory/FactoryServiceDefault.java |  18 +-
 .../grid/GridSystemServiceAbstract.java         |  17 +-
 .../grid/bootstrap3/GridSystemServiceBS3.java   |   4 +-
 .../services/layout/LayoutServiceDefault.java   |  19 +-
 .../metamodel/MetaModelServiceDefault.java      |  14 +-
 .../registry/ServiceRegistryDefault.java        |  18 +-
 .../services/swagger/SwaggerServiceDefault.java |  14 +-
 .../spec/ObjectSpecificationDependencies.java   |   2 +-
 .../spec/feature/ObjectMemberDependencies.java  |   2 +-
 .../specloader/SpecificationLoader.java         |  58 ++-
 .../specloader/SpecificationLoaderAware.java    |  29 --
 .../SpecificationLoaderInstaller.java           |   7 +-
 .../specimpl/ObjectMemberAbstract.java          |   2 +-
 .../specimpl/ObjectSpecificationAbstract.java   |   2 +-
 .../validator/MetaModelValidator.java           |  11 +-
 .../validator/MetaModelValidatorAbstract.java   |  30 +-
 .../validator/MetaModelValidatorComposite.java  |  22 +-
 .../validator/MetaModelValidatorVisiting.java   |  10 +-
 .../authentication/AuthenticationManager.java   |  18 +-
 .../standard/AuthenticationManagerStandard.java |  12 +-
 .../authorization/AuthorizationManager.java     |  14 +-
 .../AuthorizationManagerAbstract.java           |   2 +
 .../standard/AuthorizationManagerStandard.java  |   1 +
 ...itableAnnotationInJdoApplibFacetFactory.java |   2 +-
 .../progmodels/dflt/JavaReflectorHelper.java    |   4 +-
 .../progmodels/dflt/JavaReflectorInstaller.java |   6 +-
 .../AbstractFacetFactoryJUnit4TestCase.java     |   6 +-
 .../facets/AbstractFacetFactoryTest.java        |   5 +-
 .../actions/ActionMethodsFacetFactoryTest.java  |  70 ++-
 .../ActionAnnotationFacetFactoryTest.java       |   1 -
 ...tationFacetFactoryTest_actionInvocation.java |  37 +-
 ...nLayoutAnnotationFacetFactoryJunit4Test.java |   2 +-
 ...youtXmlLayoutAnnotationFacetFactoryTest.java |   2 +-
 ...erivedFromDomainServiceFacetFactoryTest.java |   2 +-
 ...erivedFromDomainServiceFacetFactoryTest.java |   2 +-
 .../CollectionFieldMethodsFacetFactoryTest.java |  72 ++-
 .../CollectionAnnotationFacetFactoryTest.java   |   2 +-
 ...ectionAnnotationFacetFactoryTest_typeOf.java |   1 +
 ...ClassAnnotationOnMemberFacetFactoryTest.java |   1 -
 .../named/NamedAnnotationFacetFactoryTest.java  |   5 -
 ...ewModelSemanticCheckingFacetFactoryTest.java |   2 +-
 ...ssClassFacetOnTypeAnnotationFactoryTest.java |   1 -
 .../defaults/DefaultedFacetFactoryTest.java     |   4 +-
 .../ObjectDisabledMethodFacetFactoryTest.java   |   2 +-
 .../encodable/EncodableFacetFactoryTest.java    |   4 +-
 .../title/TitleFacetViaMethodsFactoryTest.java  |   2 +-
 .../TitleAnnotationFacetFactoryTest.java        |  14 +-
 ...cIdFacetDerivedFromClassNameFactoryTest.java |   1 -
 .../ParseableFacetUsingParserTest.java          |   2 +-
 .../ObjectValidMethodFacetFactoryTest.java      |   2 +-
 .../MemberOrderAnnotationFacetFactoryTest.java  |   2 +-
 ...icationFacetFactoryProcessParameterTest.java |   2 +-
 .../ParameterAnnotationFacetFactoryTest.java    |   5 +-
 .../PropertyMethodsFacetFactoryTest.java        | 124 ++---
 ...ficationFacetFactoryProcessPropertyTest.java |   2 +-
 .../PropertyAnnotationFacetFactoryTest.java     |   1 -
 ...cificationValidatingInteractionMoreTest.java |   2 +-
 ...ySpecificationValidatingInteractionTest.java |   2 +-
 .../mask/MaskAnnotationFacetFactoryTest.java    |  12 +-
 .../ValueSemanticsProviderAbstractTestCase.java |   2 +-
 .../LayoutMetadataReaderFromJsonTest_read.java  |   2 +-
 ...MetadataReaderFromJsonTest_readMetadata.java |   2 +-
 .../services/ServicesInjectorDefaultTest.java   |   4 +-
 ...ServicesInjectorDefaultTest_usingFields.java |   7 +-
 ...cesInjectorDefaultTest_validateServices.java |   6 +-
 ...ApplicationFeatureRepositoryDefaultTest.java |   8 +-
 .../ObjectReflectorDefaultTest_object.java      |   1 -
 .../SpecificationLoaderTestAbstract.java        |  16 +-
 .../testspec/ObjectSpecificationStub.java       |   4 +-
 .../fixtures/FixturesInstallerDelegate.java     |   6 +-
 .../PersistenceMechanismInstaller.java          |   4 +-
 .../container/DomainObjectContainerResolve.java |   4 +-
 .../internal/RuntimeContextFromSession.java     |   2 +-
 .../core/runtime/persistence/package-info.java  |   2 +-
 .../runtime/services/RequestScopedService.java  |   6 +-
 .../runtime/services/ServiceInstantiator.java   |   2 +-
 .../isis/core/runtime/system/IsisSystem.java    |  42 +-
 .../system/persistence/ObjectFactory.java       |   6 +-
 .../system/persistence/PersistenceSession.java  |  12 +-
 .../persistence/PersistenceSessionFactory.java  |  31 +-
 .../system/session/IsisSessionFactory.java      |   7 +-
 .../system/transaction/IsisTransaction.java     |   2 +-
 .../transaction/IsisTransactionManager.java     |   2 +-
 .../IsisComponentProvider.java                  |  12 +-
 .../IsisComponentProviderDefault2.java          |   4 +-
 ...ataNucleusPersistenceMechanismInstaller.java |   6 +-
 .../IsisConfigurationForJdoIntegTests.java      |   2 +-
 .../jdo/datanucleus/JDOStateManagerForIsis.java |   4 +-
 .../service/support/IsisJdoSupportImpl.java     |   4 +-
 .../services/ServiceInstantiatorTest.java       |   2 +-
 .../ObjectActionLayoutXmlDefaultTest.java       |   2 +-
 .../system/OneToManyAssociationDefaultTest.java |   2 +-
 .../rendering/RendererContext5.java             |   2 +-
 .../restfulobjects/server/ResourceContext.java  |   2 +-
 .../conneg/RestfulObjectsJaxbWriterForXml.java  |   4 +-
 .../server/resources/DomainResourceHelper.java  |   2 +-
 .../server/resources/ResourceAbstract.java      |   2 +-
 .../server/resources/SwaggerSpecResource.java   |   4 +-
 .../integration/wicket/LocalizerForIsis.java    |   4 +-
 .../wicket/WebRequestCycleForIsis.java          |   2 +-
 .../viewer/wicket/model/models/ActionModel.java |   4 +-
 .../model/models/EntityCollectionModel.java     |   6 +-
 .../collection/bulk/BulkActionsLinkFactory.java |   2 +-
 .../viewer/wicket/ui/pages/PageAbstract.java    |   4 +-
 .../viewer/wicket/ui/panels/PanelAbstract.java  |   4 +-
 .../core/wrapper/WrapperFactoryDefault.java     |  25 +-
 .../wrapper/handlers/ProxyContextHandler.java   |  11 +-
 ...WrapperFactoryDefaultTest_wrappedObject.java | 134 +++--
 ...toryDefaultTest_wrappedObject_transient.java |  13 +-
 .../integtestsupport/legacy/IsisTestRunner.java |   4 +-
 272 files changed, 1366 insertions(+), 1436 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ServiceRegistry.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ServiceRegistry.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ServiceRegistry.adoc
index 92db5b2..7553252 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ServiceRegistry.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ServiceRegistry.adoc
@@ -1,11 +1,11 @@
 [[_rgsvc_api_ServiceRegistry]]
-= `ServiceRegistry`
+= `ServiceRegistry2`
 :Notice: 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.
 :_basedir: ../
 :_imagesdir: images/
 
 
-The `ServiceRegistry` service collects together methods for accessing other domain services.
+The `ServiceRegistry2` service collects together methods for accessing other domain services.  (The `ServiceRegistry2` extension to the original `ServiceRegistry` API has been introduced in `1.13.0-SNAPSHOT`).
 
 [NOTE]
 ====
@@ -19,15 +19,17 @@ The API of `ServiceRegistry` is:
 
 [source,java]
 ----
-public interface ServiceRegistry {
+public interface ServiceRegistry2 {
     <T> T injectServicesInto(final T domainObject);     // <1>
     <T> T lookupService(Class<T> service);              // <2>
     <T> Iterable<T> lookupServices(Class<T> service);   // <3>
+    List<Object> getRegisteredServices();               // <4>
 }
 ----
 <1> injects services into domain object; used extensively internally by the framework (eg to inject to other services, or to entities, or integration test instances, or fixture scripts).
 <2> returns the first registered service that implements the specified class
 <3> returns an `Iterable` in order to iterate over all registered services that implement the specified class
+<4> (`1.13.0-SNAPSHOT`) returns the list of all domain services that constitute the running application (including internal domain services).
 
 Service injection is done automatically if objects are created using the .adoc#_rgsvc_api_FactoryService[`FactoryService`]
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java b/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
index 3571008..882c92d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
@@ -32,5 +32,4 @@ public interface ServiceRegistry {
     @Programmatic
     <T> Iterable<T> lookupServices(Class<T> service);
 
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry2.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry2.java b/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry2.java
new file mode 100644
index 0000000..74bf0d2
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry2.java
@@ -0,0 +1,30 @@
+/*
+ *  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.applib.services.registry;
+
+import java.util.List;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+public interface ServiceRegistry2 extends ServiceRegistry {
+
+    @Programmatic
+    List<Object> getRegisteredServices();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
----------------------------------------------------------------------
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
index c4ac9fd..4c81c29 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
@@ -44,7 +44,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
@@ -801,7 +801,7 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
         if(serviceClass == DomainObjectContainer.class) {
             return (T) getContainer();
         }
-        final ServicesInjectorSpi servicesInjector = getPersistenceSession().getServicesInjector();
+        final ServicesInjector servicesInjector = getPersistenceSession().getServicesInjector();
         final T service = servicesInjector.lookupService(serviceClass);
         if(service == null) {
             throw new RuntimeException("Could not find a service of type: " + serviceClass.getName());
@@ -811,7 +811,7 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
 
     @Override
     public <T> void replaceService(final T originalService, final T replacementService) {
-        final ServicesInjectorSpi servicesInjector = getPersistenceSession().getServicesInjector();
+        final ServicesInjector servicesInjector = getPersistenceSession().getServicesInjector();
         servicesInjector.replaceService(originalService, replacementService);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java
index 5fc04a3..f984309 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInterna
 /**
  * This object will typically be registered as the implementation of the {@link ConfigurationServiceInternal}
  * (internal) domain service, using
- * {@link org.apache.isis.core.metamodel.services.ServicesInjectorDefault#addFallbackIfRequired(Class, Object)}.
+ * {@link org.apache.isis.core.metamodel.services.ServicesInjector#addFallbackIfRequired(Class, Object)}.
  *
  * <p>
  *     If an integration test is running, then the <code>IsisConfigurationForJdoIntegTests</code> will be used instead.

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/MetaModelValidatorRefiner.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/MetaModelValidatorRefiner.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/MetaModelValidatorRefiner.java
index 0af38c3..6ed2837 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/MetaModelValidatorRefiner.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/MetaModelValidatorRefiner.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.metamodel.facetapi;
 
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
@@ -31,7 +32,8 @@ import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorCom
  * @see MetaModelRefiner
  */
 public interface MetaModelValidatorRefiner {
-    
+
+    @Programmatic
     void refineMetaModelValidator(MetaModelValidatorComposite metaModelValidator, IsisConfiguration configuration);
     
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
index 0e3a566..772844c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
@@ -42,7 +42,7 @@ import org.apache.isis.applib.services.eventbus.EventBusService;
 import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
index a0783f5..0795ae3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
@@ -30,12 +30,11 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjectorAware;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 
-public abstract class FacetFactoryAbstract implements FacetFactory, SpecificationLoaderAware, ServicesInjectorAware {
+public abstract class FacetFactoryAbstract implements FacetFactory, ServicesInjectorAware {
 
     private final List<FeatureType> featureTypes;
 
@@ -60,24 +59,21 @@ public abstract class FacetFactoryAbstract implements FacetFactory, Specificatio
     public void processParams(final ProcessParameterContext processParameterContext) {
     }
 
-    // ////////////////////////////////////////////////////////////////
-    // Dependencies (injected)
-    // ////////////////////////////////////////////////////////////////
+    //region > dependencies (injected)
 
-    private SpecificationLoader specificationLoader;
-
-    protected SpecificationLoader getSpecificationLoader() {
-        return specificationLoader;
-    }
+    protected ServicesInjector servicesInjector;
 
-    /**
-     * Injected
-     */
     @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLookup) {
-        this.specificationLoader = specificationLookup;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        this.servicesInjector = servicesInjector;
     }
+    //endregion
+
+    //region > dependencies (looked up from services injector)
 
+    protected SpecificationLoader getSpecificationLoader() {
+        return servicesInjector.lookupService(SpecificationLoader.class);
+    }
 
     protected AuthenticationSessionProvider getAuthenticationSessionProvider() {
         return servicesInjector.lookupService(AuthenticationSessionProvider.class);
@@ -93,11 +89,7 @@ public abstract class FacetFactoryAbstract implements FacetFactory, Specificatio
         return (IsisConfigurationDefault)configurationServiceInternal;
     }
 
-    protected ServicesInjector servicesInjector;
+    //endregion
 
-    @Override
-    public void setServicesInjector(final ServicesInjector servicesInjector) {
-        this.servicesInjector = servicesInjector;
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
index ed5580e..4bccaf1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
@@ -21,12 +21,9 @@ package org.apache.isis.core.metamodel.facets;
 
 import java.util.List;
 
-import org.apache.isis.core.commons.config.IsisConfiguration;
 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.FeatureType;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 
 public abstract class PropertyOrCollectionIdentifyingFacetFactoryAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 6f322da..0b37bb5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -88,7 +88,7 @@ import org.apache.isis.core.metamodel.facets.actions.publish.PublishedActionFace
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
index b9690a1..4399084 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.interactions.InteractionContext;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetDefault.java
index 62bb9b0..341b8af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetDefault.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.actions.action.invocation;
 
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ActionDomainEventFacetDefault extends ActionDomainEventFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionAnnotation.java
index 1c2a735..3fc57ca 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionAnnotation.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.actions.action.invocation;
 
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ActionDomainEventFacetForActionAnnotation extends ActionDomainEventFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionInteractionAnnotation.java
index 213943f..a3b3f27 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionInteractionAnnotation.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.actions.action.invocation;
 
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 @Deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForPostsActionInvokedEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForPostsActionInvokedEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForPostsActionInvokedEventAnnotation.java
index 4082067..611e2b7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForPostsActionInvokedEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForPostsActionInvokedEventAnnotation.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.actions.action.invocation;
 
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 @Deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index a7b38b6..985a23a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -71,7 +71,7 @@ import org.apache.isis.core.metamodel.facets.actions.publish.PublishedActionFace
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal;
 import org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionAnnotation.java
index a8685f5..9aa7b6c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionAnnotation.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionInteractionAnnotation.java
index 7fcec42..8b6ea18 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionInteractionAnnotation.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromDefault.java
index 5632337..04c3262 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromDefault.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForPostsActionInvokedEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForPostsActionInvokedEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForPostsActionInvokedEventAnnotation.java
index a4143cc..5f04a10 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForPostsActionInvokedEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForPostsActionInvokedEventAnnotation.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/contributing/maxlenannot/MaxLengthFacetOnActionAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/contributing/maxlenannot/MaxLengthFacetOnActionAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/contributing/maxlenannot/MaxLengthFacetOnActionAnnotationFactory.java
index b3463b6..4faee97 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/contributing/maxlenannot/MaxLengthFacetOnActionAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/contributing/maxlenannot/MaxLengthFacetOnActionAnnotationFactory.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/contributing/paged/PagedFacetOnActionFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/contributing/paged/PagedFacetOnActionFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/contributing/paged/PagedFacetOnActionFactory.java
index 96a3d7d..21bf96f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/contributing/paged/PagedFacetOnActionFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/contributing/paged/PagedFacetOnActionFactory.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/debug/annotation/DebugFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/debug/annotation/DebugFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/debug/annotation/DebugFacetAnnotationFactory.java
index 3ce11c4..9f54aa2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/debug/annotation/DebugFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/debug/annotation/DebugFacetAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.actions.debug.DebugFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/ExplorationFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/ExplorationFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/ExplorationFacetAnnotationFactory.java
index 7f82d0c..21ffb9d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/ExplorationFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/ExplorationFacetAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.actions.exploration.ExplorationFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionNamedDebugExplorationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionNamedDebugExplorationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionNamedDebugExplorationFacetFactory.java
index a0f9d1f..c3871ee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionNamedDebugExplorationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionNamedDebugExplorationFacetFactory.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.facets.actions.exploration.ExplorationFace
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/annotation/NotContributedFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/annotation/NotContributedFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/annotation/NotContributedFacetAnnotationFactory.java
index 3b8e27a..743ea25 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/annotation/NotContributedFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/annotation/NotContributedFacetAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/annotation/NotInServiceMenuFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/annotation/NotInServiceMenuFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/annotation/NotInServiceMenuFacetAnnotationFactory.java
index 261f9f3..e3013ff 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/annotation/NotInServiceMenuFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/annotation/NotInServiceMenuFacetAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.actions.notinservicemenu.NotInServiceMenuFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/method/NotInServiceMenuFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/method/NotInServiceMenuFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/method/NotInServiceMenuFacetViaMethodFactory.java
index be122a2..2275295 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/method/NotInServiceMenuFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/method/NotInServiceMenuFacetViaMethodFactory.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
index 05acafe..4bd931c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
@@ -32,8 +32,6 @@ import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstra
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.facets.actions.validate.ActionValidationFacet;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 
 /**
  * Sets up {@link ActionValidationFacet}.

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i18n/TranslationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i18n/TranslationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i18n/TranslationFacetFactory.java
index bbd88d1..4d641f1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i18n/TranslationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i18n/TranslationFacetFactory.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class TranslationFacetFactory extends FacetFactoryAbstract implements ContributeeMemberFacetFactory {
 
@@ -121,7 +122,7 @@ public class TranslationFacetFactory extends FacetFactoryAbstract implements Con
     // //////////////////////////////////////
 
     /**
-     * Looks up from {@link org.apache.isis.core.metamodel.runtimecontext.ServicesInjector}.
+     * Looks up from {@link ServicesInjector}.
      *
      * <p>
      *     There is guaranteed to be an instance because <code>TranslationServicePo</code> (in runtime) is annotated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
index ab31a47..da91149 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
@@ -72,7 +72,7 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemove
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
index a5f4625..fd5c79e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.facets.DomainEventHelper;
 import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 
 public abstract class CollectionAddToFacetForDomainEventFromAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromCollectionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromCollectionAnnotation.java
index 3781043..6769eb0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromCollectionAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class CollectionAddToFacetForDomainEventFromCollectionAnnotation
         extends CollectionAddToFacetForDomainEventFromAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromCollectionInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromCollectionInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromCollectionInteractionAnnotation.java
index a4f33d4..9be55ef 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromCollectionInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromCollectionInteractionAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromDefault.java
index c9669ee..2487aa0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromDefault.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class CollectionAddToFacetForDomainEventFromDefault
         extends CollectionAddToFacetForDomainEventFromAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForPostsCollectionAddedToEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForPostsCollectionAddedToEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForPostsCollectionAddedToEventAnnotation.java
index e67b7a0..4602940 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForPostsCollectionAddedToEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForPostsCollectionAddedToEventAnnotation.java
@@ -24,7 +24,7 @@ import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
index a469514..75c227a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.interactions.ProposedHolder;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class CollectionDomainEventFacetAbstract extends SingleClassValueFacetAbstract implements CollectionDomainEventFacet {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetDefault.java
index 0fc9dce..7c6df23 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetDefault.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.collection.modify;
 
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class CollectionDomainEventFacetDefault extends CollectionDomainEventFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionAnnotation.java
index a075987..dddb0d9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.collections.collection.modify;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class CollectionDomainEventFacetForCollectionAnnotation extends CollectionDomainEventFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionInteractionAnnotation.java
index 421e815..52f2647 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionInteractionAnnotation.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.collection.modify;
 
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionAddedToEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionAddedToEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionAddedToEventAnnotation.java
index 44c30d1..4bf7844 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionAddedToEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionAddedToEventAnnotation.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.collection.modify;
 
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionRemovedFromEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionRemovedFromEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionRemovedFromEventAnnotation.java
index 0794a6e..7d7f74b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionRemovedFromEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionRemovedFromEventAnnotation.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.collection.modify;
 
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
index 500beaa..dc9a106 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.facets.DomainEventHelper;
 import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 
 public abstract class CollectionRemoveFromFacetForDomainEventFromAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromCollectionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromCollectionAnnotation.java
index 996edac..fa3725d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromCollectionAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class CollectionRemoveFromFacetForDomainEventFromCollectionAnnotation extends
         CollectionRemoveFromFacetForDomainEventFromAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromCollectionInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromCollectionInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromCollectionInteractionAnnotation.java
index 1da7199..102f40d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromCollectionInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromCollectionInteractionAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromDefault.java
index 5025dd3..c222078 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromDefault.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class CollectionRemoveFromFacetForDomainEventFromDefault extends
         CollectionRemoveFromFacetForDomainEventFromAbstract {


[30/30] isis git commit: ISIS-1408: removing RuntimeContext, ObjectSpecificationDependencies, ObjectMemberDependencies (WIP)

Posted by da...@apache.org.
ISIS-1408: removing RuntimeContext, ObjectSpecificationDependencies, ObjectMemberDependencies (WIP)

Also adding some micro-caching/helper methods in ServicesInjector (not sure if significant).

WIP - runs up ok, but unit tests failing.


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

Branch: refs/heads/ISIS-1408
Commit: 03a1bd1cfacd131bb44c6d1e3aa10f07855ff125
Parents: ce7d41d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri May 20 01:44:12 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri May 20 01:44:12 2016 +0100

----------------------------------------------------------------------
 .../metamodel/facets/FacetFactoryAbstract.java  |  4 +-
 ...llectionIdentifyingFacetFactoryAbstract.java |  2 +-
 .../action/ActionAnnotationFacetFactory.java    |  2 +-
 .../annotation/DebugFacetAnnotationFactory.java |  3 +-
 .../ExplorationFacetAnnotationFactory.java      |  3 +-
 ...ActionNamedDebugExplorationFacetFactory.java |  3 +-
 .../NotContributedFacetAnnotationFactory.java   |  3 +-
 .../NotInServiceMenuFacetAnnotationFactory.java |  3 +-
 .../NotInServiceMenuFacetViaMethodFactory.java  |  3 +-
 ...llectionAccessorFacetViaAccessorFactory.java |  2 +-
 .../clear/CollectionClearFacetFactory.java      |  2 +-
 .../CollectionFacetFactory.java                 |  2 +-
 .../DescribedAsFacetOnMemberFactory.java        |  3 +-
 .../DescribedAsFacetStaticMethodFactory.java    |  4 +-
 .../DisabledFacetStaticMethodFacetFactory.java  |  4 +-
 .../HiddenFacetStaticMethodFactory.java         |  5 +-
 .../annotprop/NamedFacetOnMemberFactory.java    |  4 +-
 .../NamedFacetStaticMethodFactory.java          |  4 +-
 .../annotprop/RenderFacetOrResolveFactory.java  |  4 +-
 .../ActionOrderFacetAnnotationFactory.java      |  4 +-
 ...cyFacetViaBookmarkableAnnotationFactory.java |  4 +-
 ...sFacetFromBoundedMarkerInterfaceFactory.java |  2 +-
 .../CssClassFacetOnTypeAnnotationFactory.java   |  4 +-
 ...DescribedAsFacetOnTypeAnnotationFactory.java |  4 +-
 .../DomainObjectAnnotationFacetFactory.java     |  3 +-
 ...FacetAnnotationElseConfigurationFactory.java |  2 +-
 .../FieldOrderFacetAnnotationFactory.java       |  4 +-
 .../HiddenFacetOnTypeAnnotationFactory.java     |  4 +-
 .../MaxLengthFacetOnTypeAnnotationFactory.java  |  4 +-
 .../MultiLineFacetOnTypeAnnotationFactory.java  |  4 +-
 .../NamedFacetOnTypeAnnotationFactory.java      |  4 +-
 .../NamedFacetStaticMethodFactory.java          |  4 +-
 .../PagedFacetOnTypeAnnotationFactory.java      |  4 +-
 ...FacetAnnotationElseConfigurationFactory.java |  2 +-
 .../PluralAnnotationFacetFactory.java           |  4 +-
 .../PluralFacetStaticMethodFactory.java         |  4 +-
 .../RecreatableObjectFacetFactory.java          |  2 +-
 .../annotation/TitleAnnotationFacetFactory.java |  2 +-
 ...picalLengthFacetOnTypeAnnotationFactory.java |  4 +-
 ...MustSatisfyAnnotationOnTypeFacetFactory.java |  4 +-
 ...ueFacetAnnotationOrConfigurationFactory.java |  2 +-
 ...ValueFacetUsingSemanticsProviderFactory.java |  2 +-
 ...ameterAutoCompleteFacetViaMethodFactory.java |  2 +-
 ...icesFacetDerivedFromChoicesFacetFactory.java |  2 +-
 .../ActionChoicesFacetViaMethodFactory.java     |  2 +-
 ...onParameterChoicesFacetViaMethodFactory.java |  2 +-
 ...nParameterDefaultsFacetViaMethodFactory.java |  2 +-
 .../ParameterAnnotationFacetFactory.java        |  4 +-
 ...BeforeFacetOnParameterAnnotationFactory.java |  5 +-
 ...LengthFacetOnParameterAnnotationFactory.java |  4 +-
 .../MaskFacetOnParameterAnnotationFactory.java  |  4 +-
 ...PropertyAccessorFacetViaAccessorFactory.java |  2 +-
 .../PropertyAutoCompleteFacetMethodFactory.java |  2 +-
 ...icesFacetDerivedFromChoicesFacetFactory.java |  2 +-
 .../PropertyChoicesFacetViaMethodFactory.java   |  2 +-
 ...pertyDefaultFacetDerivedFromTypeFactory.java |  2 +-
 .../PropertyDefaultFacetViaMethodFactory.java   |  2 +-
 ...atoryFacetOnPropertyStaticMethodFactory.java |  4 +-
 .../MultiLineFacetOnPropertyFactory.java        |  4 +-
 .../PropertyAnnotationFacetFactory.java         |  4 +-
 ...yBeforeAnnotationOnPropertyFacetFactory.java |  4 +-
 .../TypicalLengthOnPropertyFacetFactory.java    |  4 +-
 .../MaskFacetOnPropertyAnnotationFactory.java   |  4 +-
 .../runtimecontext/RuntimeContext.java          | 56 -------------------
 .../runtimecontext/RuntimeContextAware.java     | 26 ---------
 .../metamodel/services/ServicesInjector.java    | 33 +++++++++++
 .../spec/ObjectSpecificationDependencies.java   | 58 --------------------
 .../spec/feature/ObjectMemberDependencies.java  | 51 -----------------
 .../specloader/SpecificationLoader.java         | 41 ++------------
 .../specimpl/ObjectActionContributee.java       |  6 +-
 .../specimpl/ObjectActionDefault.java           |  6 +-
 .../specimpl/ObjectActionMixedIn.java           |  4 +-
 .../specimpl/ObjectAssociationAbstract.java     |  6 +-
 .../specimpl/ObjectMemberAbstract.java          | 10 ++--
 .../specimpl/ObjectSpecificationAbstract.java   | 43 +++++++--------
 .../OneToManyAssociationContributee.java        | 15 +++--
 .../specimpl/OneToManyAssociationDefault.java   | 13 +++--
 .../specimpl/OneToManyAssociationMixedIn.java   | 12 ++--
 .../OneToOneAssociationContributee.java         |  6 +-
 .../specimpl/OneToOneAssociationDefault.java    | 13 +++--
 .../specimpl/OneToOneAssociationMixedIn.java    |  6 +-
 .../dflt/ObjectSpecificationDefault.java        | 44 +++------------
 .../ObjectSpecificationOnStandaloneList.java    | 11 ++--
 ...itableAnnotationInJdoApplibFacetFactory.java |  4 +-
 .../AbstractFacetFactoryJUnit4TestCase.java     | 16 ++++--
 .../facets/AbstractFacetFactoryTest.java        | 28 +++++++++-
 .../actions/ActionMethodsFacetFactoryTest.java  | 13 +++--
 .../ActionAnnotationFacetFactoryTest.java       |  3 +-
 ...tationFacetFactoryTest_actionInvocation.java | 20 -------
 .../CollectionFieldMethodsFacetFactoryTest.java | 42 --------------
 .../CollectionAnnotationFacetFactoryTest.java   |  2 +-
 ...ewModelSemanticCheckingFacetFactoryTest.java |  3 +-
 .../TitleAnnotationFacetFactoryTest.java        |  8 +--
 ...icationFacetFactoryProcessParameterTest.java |  3 +-
 ...ficationFacetFactoryProcessPropertyTest.java |  3 +-
 .../PropertyAnnotationFacetFactoryTest.java     |  2 +-
 .../SpecificationLoaderTestAbstract.java        | 26 ++++-----
 .../specimpl/ObjectAssociationAbstractTest.java | 17 ++++--
 ...ectAssociationAbstractTest_alwaysHidden.java | 18 +++++-
 .../testspec/ObjectSpecificationStub.java       | 14 +----
 .../services/email/EmailServiceDefault.java     | 11 ++--
 .../isis/core/runtime/system/IsisSystem.java    |  8 +--
 .../ObjectActionLayoutXmlDefaultTest.java       |  9 +--
 .../system/ObjectMemberAbstractTest.java        |  7 ++-
 .../system/OneToManyAssociationDefaultTest.java | 11 ++--
 ...WrapperFactoryDefaultTest_wrappedObject.java | 16 ++----
 ...toryDefaultTest_wrappedObject_transient.java |  2 +-
 107 files changed, 306 insertions(+), 640 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
index 0795ae3..bc3d0e2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
@@ -72,7 +72,7 @@ public abstract class FacetFactoryAbstract implements FacetFactory, ServicesInje
     //region > dependencies (looked up from services injector)
 
     protected SpecificationLoader getSpecificationLoader() {
-        return servicesInjector.lookupService(SpecificationLoader.class);
+        return servicesInjector.getSpecificationLoader();
     }
 
     protected AuthenticationSessionProvider getAuthenticationSessionProvider() {
@@ -85,7 +85,7 @@ public abstract class FacetFactoryAbstract implements FacetFactory, ServicesInje
 
     protected IsisConfiguration getConfiguration() {
         final ConfigurationServiceInternal configurationServiceInternal = servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+                .getConfigurationServiceInternal();
         return (IsisConfigurationDefault)configurationServiceInternal;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
index c2bbf2c..089f5dc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
@@ -55,7 +55,7 @@ public abstract class PropertyOrCollectionIdentifyingFacetFactoryAbstract
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 1ef18b9..85f9130 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -560,7 +560,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
         this.transactionStateProviderInternal =
                 servicesInjector.lookupService(TransactionStateProviderInternal.class);
 
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/debug/annotation/DebugFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/debug/annotation/DebugFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/debug/annotation/DebugFacetAnnotationFactory.java
index 9f54aa2..2c2f9b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/debug/annotation/DebugFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/debug/annotation/DebugFacetAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.actions.debug.DebugFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -68,7 +67,7 @@ public class DebugFacetAnnotationFactory extends FacetFactoryAbstract implements
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
         IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+                .getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/ExplorationFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/ExplorationFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/ExplorationFacetAnnotationFactory.java
index 21ffb9d..bf6ec37 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/ExplorationFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/ExplorationFacetAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.actions.exploration.ExplorationFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -67,7 +66,7 @@ public class ExplorationFacetAnnotationFactory extends FacetFactoryAbstract impl
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        validator.setConfiguration((IsisConfiguration)servicesInjector.lookupService(ConfigurationServiceInternal.class));
+        validator.setConfiguration((IsisConfiguration)servicesInjector.getConfigurationServiceInternal());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionNamedDebugExplorationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionNamedDebugExplorationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionNamedDebugExplorationFacetFactory.java
index c3871ee..8525755 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionNamedDebugExplorationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionNamedDebugExplorationFacetFactory.java
@@ -33,7 +33,6 @@ import org.apache.isis.core.metamodel.facets.actions.debug.DebugFacet;
 import org.apache.isis.core.metamodel.facets.actions.exploration.ExplorationFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
@@ -133,7 +132,7 @@ public class ActionNamedDebugExplorationFacetFactory extends MethodPrefixBasedFa
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
         IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+                .getConfigurationServiceInternal();
         explorationValidator.setConfiguration(configuration);
         debugValidator.setConfiguration(configuration);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/annotation/NotContributedFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/annotation/NotContributedFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/annotation/NotContributedFacetAnnotationFactory.java
index 743ea25..91c14db 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/annotation/NotContributedFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/annotation/NotContributedFacetAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.actions.notcontributed.NotContributedFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -65,7 +64,7 @@ public class NotContributedFacetAnnotationFactory extends FacetFactoryAbstract i
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
         IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+                .getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/annotation/NotInServiceMenuFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/annotation/NotInServiceMenuFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/annotation/NotInServiceMenuFacetAnnotationFactory.java
index e3013ff..b6e6c70 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/annotation/NotInServiceMenuFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/annotation/NotInServiceMenuFacetAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.actions.notinservicemenu.NotInServiceMenuFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -65,7 +64,7 @@ public class NotInServiceMenuFacetAnnotationFactory extends FacetFactoryAbstract
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
         IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+                .getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/method/NotInServiceMenuFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/method/NotInServiceMenuFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/method/NotInServiceMenuFacetViaMethodFactory.java
index 2275295..fdcbdc9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/method/NotInServiceMenuFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/method/NotInServiceMenuFacetViaMethodFactory.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
@@ -77,7 +76,7 @@ public class NotInServiceMenuFacetViaMethodFactory extends MethodPrefixBasedFace
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
         IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+                .getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
index f4f98e5..182045e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
@@ -105,7 +105,7 @@ public class CollectionAccessorFacetViaAccessorFactory
 
     @Override public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/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 408ff9e..7e1c3e0 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
@@ -77,7 +77,7 @@ public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAb
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
index 1cdfe41..d3b073a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
@@ -94,7 +94,7 @@ public class CollectionFacetFactory extends FacetFactoryAbstract {
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/annotprop/DescribedAsFacetOnMemberFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/annotprop/DescribedAsFacetOnMemberFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/annotprop/DescribedAsFacetOnMemberFactory.java
index e671c73..7eb5d8a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/annotprop/DescribedAsFacetOnMemberFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/annotprop/DescribedAsFacetOnMemberFactory.java
@@ -31,7 +31,6 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
@@ -105,7 +104,7 @@ public class DescribedAsFacetOnMemberFactory extends FacetFactoryAbstract implem
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
         IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+                .getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/staticmethod/DescribedAsFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/staticmethod/DescribedAsFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/staticmethod/DescribedAsFacetStaticMethodFactory.java
index a3669a1..0c310e1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/staticmethod/DescribedAsFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/describedas/staticmethod/DescribedAsFacetStaticMethodFactory.java
@@ -35,7 +35,6 @@ import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstra
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
@@ -112,8 +111,7 @@ public class DescribedAsFacetStaticMethodFactory extends MethodPrefixBasedFacetF
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
index 6f567a7..363b573 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
@@ -34,7 +34,6 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
@@ -114,8 +113,7 @@ public class DisabledFacetStaticMethodFacetFactory extends MethodPrefixBasedFace
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
index b2f0348..abe6386 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.facets.members.hidden.staticmethod;
 
 import java.lang.reflect.Method;
+
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.lang.MethodExtensions;
 import org.apache.isis.core.commons.lang.StringExtensions;
@@ -33,7 +34,6 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
@@ -113,8 +113,7 @@ public class HiddenFacetStaticMethodFactory extends MethodPrefixBasedFacetFactor
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
index 753a482..1bb2205 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
@@ -31,7 +31,6 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -85,8 +84,7 @@ public class NamedFacetOnMemberFactory extends FacetFactoryAbstract implements C
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
index 81711b6..c44f90a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
@@ -35,7 +35,6 @@ import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstra
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
@@ -114,8 +113,7 @@ public class NamedFacetStaticMethodFactory extends MethodPrefixBasedFacetFactory
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
index 00bc4e7..e1f3afa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
@@ -32,7 +32,6 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.members.render.RenderFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -102,8 +101,7 @@ public class RenderFacetOrResolveFactory extends FacetFactoryAbstract
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         renderValidator.setConfiguration(configuration);
         resolveValidator.setConfiguration(configuration);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
index f316150..f5637ed 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.actionorder.ActionOrderFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -64,8 +63,7 @@ public class ActionOrderFacetAnnotationFactory extends FacetFactoryAbstract impl
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
index b4b7539..60ef854 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
@@ -33,7 +33,6 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
@@ -107,8 +106,7 @@ public class BookmarkPolicyFacetViaBookmarkableAnnotationFactory extends FacetFa
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
index 2e46eb3..756dbf8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
@@ -60,7 +60,7 @@ public class ChoicesFacetFromBoundedMarkerInterfaceFactory extends FacetFactoryA
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        this.persistenceSessionServiceInternal = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        this.persistenceSessionServiceInternal = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
index 1a33afe..db0b239 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.members.cssclass.CssClassFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -64,8 +63,7 @@ public class CssClassFacetOnTypeAnnotationFactory extends FacetFactoryAbstract i
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
index 8ca4ce2..a50b030 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.all.describedas.DescribedAsFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -64,8 +63,7 @@ public class DescribedAsFacetOnTypeAnnotationFactory extends FacetFactoryAbstrac
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 0da24ce..fb63715 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -495,8 +495,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         immutableValidator.setConfiguration(configuration);
         objectTypeValidator.setConfiguration(configuration);
 
-        this.persistenceSessionServiceInternal =
-                servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        this.persistenceSessionServiceInternal = servicesInjector.getPersistenceSessionServiceInternal();
 
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
index 591c708..7e9db8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
@@ -78,7 +78,7 @@ public class EncodableFacetAnnotationElseConfigurationFactory extends FacetFacto
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
index dea0b43..476fb99 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.fieldorder.FieldOrderFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -64,8 +63,7 @@ public class FieldOrderFacetAnnotationFactory extends FacetFactoryAbstract imple
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
index 86327f8..09c5ca6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.all.hide.HiddenFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -64,8 +63,7 @@ public class HiddenFacetOnTypeAnnotationFactory extends FacetFactoryAbstract imp
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
index 018558d..ed9ac59 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.objectvalue.maxlen.MaxLengthFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -67,8 +66,7 @@ public class MaxLengthFacetOnTypeAnnotationFactory extends FacetFactoryAbstract
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
index aaa7823..26f2b25 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.objectvalue.multiline.MultiLineFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -68,8 +67,7 @@ public class MultiLineFacetOnTypeAnnotationFactory extends FacetFactoryAbstract
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
index c06ebfb..af420ea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.all.named.NamedFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -66,8 +65,7 @@ public class NamedFacetOnTypeAnnotationFactory extends FacetFactoryAbstract impl
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
index 9d354ef..d7d7046 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
@@ -31,7 +31,6 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
@@ -73,8 +72,7 @@ public class NamedFacetStaticMethodFactory extends MethodPrefixBasedFacetFactory
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
index 492405d..1637789 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.paged.PagedFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -70,8 +69,7 @@ public class PagedFacetOnTypeAnnotationFactory extends FacetFactoryAbstract impl
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
index 4ce7dbd..d663152 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
@@ -74,7 +74,7 @@ public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFacto
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
index 6ff1850..5ef1408 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
@@ -28,7 +28,6 @@ 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.plural.PluralFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -65,8 +64,7 @@ public class PluralAnnotationFacetFactory extends FacetFactoryAbstract implement
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
index e28706e..dd863a9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
@@ -74,8 +73,7 @@ public class PluralFacetStaticMethodFactory extends MethodPrefixBasedFacetFactor
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
index ce318a0..99f491c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
@@ -135,7 +135,7 @@ public class RecreatableObjectFacetFactory extends FacetFactoryAbstract
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
index 0123551..b1be9f2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
@@ -193,7 +193,7 @@ public class TitleAnnotationFacetFactory extends FacetFactoryAbstract implements
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java
index be4790a..92b625e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java
@@ -28,7 +28,6 @@ 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.objectvalue.typicallen.TypicalLengthFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -65,8 +64,7 @@ public class TypicalLengthFacetOnTypeAnnotationFactory extends FacetFactoryAbstr
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory.java
index 1cad584..c78dd20 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory.java
@@ -32,7 +32,6 @@ 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.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -98,8 +97,7 @@ public class MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
index b0a12fd..d12407c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
@@ -117,7 +117,7 @@ public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbst
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
index 1a00b7c..302b7e1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
@@ -58,7 +58,7 @@ public abstract class ValueFacetUsingSemanticsProviderFactory<T> extends FacetFa
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index 7bd95fc..9e0af5b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -110,7 +110,7 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
index 26ea9a9..4e0faaa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
@@ -62,7 +62,7 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacetFactory extends F
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
index a127796..274adc6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
@@ -108,7 +108,7 @@ public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFa
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
index eec779d..701dd9a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
@@ -151,7 +151,7 @@ public class ActionParameterChoicesFacetViaMethodFactory extends MethodPrefixBas
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;


[26/30] isis git commit: ISIS-1409: removing the *Aware interfaces for the internal components of RuntimeContext (PersistenceSession, Localization, MessageBroker, TranState), also removing AdapterManagerAware.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/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 f7de429..f6ab040 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
@@ -22,21 +22,14 @@ package org.apache.isis.core.metamodel.runtimecontext;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
-import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 
 public class RuntimeContext implements ApplicationScopedComponent {
 
-
     //region > constructor, fields
 
     private final ServicesInjector servicesInjector;
     private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
-    private final MessageBrokerServiceInternal messageBrokerServiceInternal;
-    private final LocalizationProviderInternal localizationProvider;
-    private final TransactionStateProviderInternal transactionStateProvider;
 
     public RuntimeContext(
             final ServicesInjector servicesInjector) {
@@ -44,61 +37,20 @@ public class RuntimeContext implements ApplicationScopedComponent {
 
         this.persistenceSessionServiceInternal =
                 servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
-        this.messageBrokerServiceInternal =
-                servicesInjector.lookupService(MessageBrokerServiceInternal.class);
-        this.localizationProvider =
-                servicesInjector.lookupService(LocalizationProviderInternal.class);
-        this.transactionStateProvider =
-                servicesInjector.lookupService(TransactionStateProviderInternal.class);
 
     }
 
     //endregion
 
     @Programmatic
-    public LocalizationProviderInternal getLocalizationProvider() {
-        return localizationProvider;
-    }
-
-    @Programmatic
     public PersistenceSessionServiceInternal getPersistenceSessionService() {
         return persistenceSessionServiceInternal;
     }
 
     @Programmatic
-    public MessageBrokerServiceInternal getMessageBrokerService() {
-        return messageBrokerServiceInternal;
-    }
-
-
-    @Programmatic
-    public TransactionStateProviderInternal getTransactionStateProvider() {
-        return transactionStateProvider;
-    }
-
-
-    @Programmatic
     public ServicesInjector getServicesInjector() {
         return servicesInjector;
     }
 
 
-    @Programmatic
-    public void injectInto(final Object candidate) {
-        if (RuntimeContextAware.class.isAssignableFrom(candidate.getClass())) {
-            final RuntimeContextAware cast = RuntimeContextAware.class.cast(candidate);
-            cast.setRuntimeContext(this);
-        }
-        injectSubcomponentsInto(candidate);
-    }
-
-    protected void injectSubcomponentsInto(final Object candidate) {
-        getTransactionStateProvider().injectInto(candidate);
-        getServicesInjector().injectInto(candidate);
-        getLocalizationProvider().injectInto(candidate);
-        getPersistenceSessionService().injectInto(candidate);
-        getMessageBrokerService().injectInto(candidate);
-    }
-
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/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 c00ab71..bfa2120 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
@@ -54,8 +54,6 @@ import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-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.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
@@ -68,7 +66,7 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 @DomainService(nature = NatureOfService.DOMAIN)
 public class DomainObjectContainerDefault
-        implements DomainObjectContainer, AdapterManagerAware, ExceptionRecognizer {
+        implements DomainObjectContainer, ExceptionRecognizer {
 
 
     //region > titleOf
@@ -110,7 +108,7 @@ public class DomainObjectContainerDefault
         if (!spec.containsFacet(ViewModelFacet.class)) {
             throw new IsisException("Type must be a ViewModel: " + ofClass);
         }
-        final ObjectAdapter adapter = getPersistenceSessionService().createViewModelInstance(spec, memento);
+        final ObjectAdapter adapter = persistenceSessionServiceInternal.createViewModelInstance(spec, memento);
         if(adapter.getOid().isViewModel()) {
             return (T)adapter.getObject();
         } else {
@@ -173,12 +171,12 @@ public class DomainObjectContainerDefault
         if (persistentObject == null) {
             throw new IllegalArgumentException("Must specify a reference for disposing an object");
         }
-        final ObjectAdapter adapter = getAdapterManager().adapterFor(unwrapped(persistentObject));
+        final ObjectAdapter adapter = persistenceSessionServiceInternal.adapterFor(unwrapped(persistentObject));
         if (!isPersistent(persistentObject)) {
             throw new RepositoryException("Object not persistent: " + adapter);
         }
 
-        getPersistenceSessionService().remove(adapter);
+        persistenceSessionServiceInternal.remove(adapter);
     }
 
     @Programmatic
@@ -240,7 +238,7 @@ public class DomainObjectContainerDefault
     @Deprecated
     @Override
     public void resolve(final Object parent) {
-        getPersistenceSessionService().resolve(unwrapped(parent));
+        persistenceSessionServiceInternal.resolve(unwrapped(parent));
     }
 
     /**
@@ -258,7 +256,7 @@ public class DomainObjectContainerDefault
     @Deprecated
     @Override
     public void resolve(final Object parent, final Object field) {
-        getPersistenceSessionService().resolve(unwrapped(parent), field);
+        persistenceSessionServiceInternal.resolve(unwrapped(parent), field);
     }
 
     /**
@@ -292,7 +290,7 @@ public class DomainObjectContainerDefault
     @Programmatic
     @Override
     public void commit() {
-        getPersistenceSessionService().commit();
+        persistenceSessionServiceInternal.commit();
     }
 
     //endregion
@@ -308,7 +306,7 @@ public class DomainObjectContainerDefault
     @Programmatic
     @Override
     public String validate(final Object domainObject) {
-        final ObjectAdapter adapter = getAdapterManager().adapterFor(unwrapped(domainObject));
+        final ObjectAdapter adapter = persistenceSessionServiceInternal.adapterFor(unwrapped(domainObject));
         final InteractionResult validityResult =
                 adapter.getSpecification().isValidResult(adapter, InteractionInitiatedBy.FRAMEWORK);
         return validityResult.getReason();
@@ -322,7 +320,7 @@ public class DomainObjectContainerDefault
     @Programmatic
     @Override
     public boolean isViewModel(final Object domainObject) {
-        final ObjectAdapter adapter = getAdapterManager().adapterFor(unwrapped(domainObject));
+        final ObjectAdapter adapter = persistenceSessionServiceInternal.adapterFor(unwrapped(domainObject));
         return adapter.getSpecification().isViewModel();
     }
     //endregion
@@ -333,7 +331,7 @@ public class DomainObjectContainerDefault
     @Programmatic
     @Override
     public boolean isPersistent(final Object domainObject) {
-        final ObjectAdapter adapter = getAdapterManager().adapterFor(unwrapped(domainObject));
+        final ObjectAdapter adapter = persistenceSessionServiceInternal.adapterFor(unwrapped(domainObject));
         return adapter.representsPersistent();
     }
 
@@ -343,7 +341,7 @@ public class DomainObjectContainerDefault
     @Programmatic
     @Override
     public void persist(final Object domainObject) {
-        final ObjectAdapter adapter = getAdapterManager().adapterFor(unwrapped(domainObject));
+        final ObjectAdapter adapter = persistenceSessionServiceInternal.adapterFor(unwrapped(domainObject));
 
         if(adapter == null) {
             throw new PersistFailedException("Object not known to framework; instantiate using newTransientInstance(...) rather than simply new'ing up.");
@@ -355,7 +353,7 @@ public class DomainObjectContainerDefault
         if (isPersistent(domainObject)) {
             throw new PersistFailedException("Object already persistent; OID=" + adapter.getOid());
         }
-        getPersistenceSessionService().makePersistent(adapter);
+        persistenceSessionServiceInternal.makePersistent(adapter);
     }
 
     /**
@@ -531,7 +529,7 @@ public class DomainObjectContainerDefault
         // NB: this impl does NOT delegate to RepositoryService, because this implementation incorrectly always performs a flush
         // irrespective of the autoflush setting.  (The RepositoryService corrects that error).
         flush(); // auto-flush any pending changes
-        final ObjectAdapter firstMatching = getPersistenceSessionService().firstMatchingQuery(query);
+        final ObjectAdapter firstMatching = persistenceSessionServiceInternal.firstMatchingQuery(query);
         return (T) ObjectAdapter.Util.unwrap(firstMatching);
     }
 
@@ -646,29 +644,6 @@ public class DomainObjectContainerDefault
     }
     //endregion
 
-    //region > framework dependencies
-
-    private AdapterManager adapterManager;
-
-
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
-
-    @Programmatic
-    @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
-    }
-
-    protected PersistenceSessionServiceInternal getPersistenceSessionService() {
-        return persistenceSessionServiceInternal;
-    }
-
-
-
-
-    //endregion
 
     //region > service dependencies
 

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderAware.java
deleted file mode 100644
index 1282f1f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderAware.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.services.l10n;
-
-public interface LocalizationProviderAware {
-
-    void setLocalizationProvider(LocalizationProviderInternal localizationProviderInternal);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternal.java
index d841bd5..f35632e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternal.java
@@ -25,9 +25,6 @@ import org.apache.isis.applib.profiles.Localization;
 public interface LocalizationProviderInternal {
 
     @Programmatic
-    void injectInto(final Object candidate);
-
-    @Programmatic
     Localization getLocalization();
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalAbstract.java
deleted file mode 100644
index 470e13f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalAbstract.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.services.l10n;
-
-public abstract class LocalizationProviderInternalAbstract implements LocalizationProviderInternal {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (LocalizationProviderAware.class.isAssignableFrom(candidate.getClass())) {
-            final LocalizationProviderAware cast = LocalizationProviderAware.class.cast(candidate);
-            cast.setLocalizationProvider(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalNoop.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalNoop.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalNoop.java
index bc5b0a4..39e5c69 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalNoop.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalNoop.java
@@ -5,7 +5,7 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.profiles.Localization;
 
 @DomainService(nature = NatureOfService.DOMAIN)
-public class LocalizationProviderInternalNoop extends LocalizationProviderInternalAbstract {
+public class LocalizationProviderInternalNoop implements LocalizationProviderInternal {
 
     private final Localization defaultLocalization = new LocalizationDefault();
 

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceDefault.java
deleted file mode 100644
index 7b14c3d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceDefault.java
+++ /dev/null
@@ -1,87 +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.services.message;
-
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.services.i18n.TranslatableString;
-import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
-import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceAware;
-
-@DomainService(
-        nature = NatureOfService.DOMAIN
-)
-public class MessageServiceDefault implements MessageService, MessageBrokerServiceAware{
-
-    @Programmatic
-    @Override
-    public void informUser(final String message) {
-        messageBrokerServiceInternal.informUser(message);
-    }
-
-    @Override
-    public String informUser(final TranslatableString message, final Class<?> contextClass, final String contextMethod) {
-        return message.translate(translationService, context(contextClass, contextMethod));
-    }
-
-    @Programmatic
-    @Override
-    public void warnUser(final String message) {
-        messageBrokerServiceInternal.warnUser(message);
-    }
-
-    @Override
-    public String warnUser(final TranslatableString message, final Class<?> contextClass, final String contextMethod) {
-        return message.translate(translationService, context(contextClass, contextMethod));
-    }
-
-    @Programmatic
-    @Override
-    public void raiseError(final String message) {
-        messageBrokerServiceInternal.raiseError(message);
-    }
-
-    @Override
-    public String raiseError(final TranslatableString message, final Class<?> contextClass, final String contextMethod) {
-        final String translatedMessage = message.translate(translationService, context(contextClass, contextMethod));
-        messageBrokerServiceInternal.raiseError(translatedMessage);
-        return translatedMessage;
-    }
-
-    private static String context(final Class<?> contextClass, final String contextMethod) {
-        return contextClass.getName()+"#"+contextMethod;
-    }
-
-
-
-    private MessageBrokerServiceInternal messageBrokerServiceInternal;
-
-    @Override
-    public void setMessageBrokerService(final MessageBrokerServiceInternal messageBrokerServiceInternal) {
-        this.messageBrokerServiceInternal = messageBrokerServiceInternal;
-    }
-
-    @javax.inject.Inject
-    TranslationService translationService;
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceInternalDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceInternalDefault.java
new file mode 100644
index 0000000..9ffbecf
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceInternalDefault.java
@@ -0,0 +1,82 @@
+/*
+ *  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.services.message;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.services.i18n.TranslatableString;
+import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
+
+@DomainService(
+        nature = NatureOfService.DOMAIN
+)
+public class MessageServiceInternalDefault implements MessageService {
+
+    @Programmatic
+    @Override
+    public void informUser(final String message) {
+        messageBrokerServiceInternal.informUser(message);
+    }
+
+    @Override
+    public String informUser(final TranslatableString message, final Class<?> contextClass, final String contextMethod) {
+        return message.translate(translationService, context(contextClass, contextMethod));
+    }
+
+    @Programmatic
+    @Override
+    public void warnUser(final String message) {
+        messageBrokerServiceInternal.warnUser(message);
+    }
+
+    @Override
+    public String warnUser(final TranslatableString message, final Class<?> contextClass, final String contextMethod) {
+        return message.translate(translationService, context(contextClass, contextMethod));
+    }
+
+    @Programmatic
+    @Override
+    public void raiseError(final String message) {
+        messageBrokerServiceInternal.raiseError(message);
+    }
+
+    @Override
+    public String raiseError(final TranslatableString message, final Class<?> contextClass, final String contextMethod) {
+        final String translatedMessage = message.translate(translationService, context(contextClass, contextMethod));
+        messageBrokerServiceInternal.raiseError(translatedMessage);
+        return translatedMessage;
+    }
+
+    private static String context(final Class<?> contextClass, final String contextMethod) {
+        return contextClass.getName()+"#"+contextMethod;
+    }
+
+
+
+    @javax.inject.Inject
+    MessageBrokerServiceInternal messageBrokerServiceInternal;
+
+    @javax.inject.Inject
+    TranslationService translationService;
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceAware.java
deleted file mode 100644
index 2443150..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceAware.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.services.msgbroker;
-
-public interface MessageBrokerServiceAware {
-
-    public void setMessageBrokerService(final MessageBrokerServiceInternal messageBrokerServiceInternal);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternal.java
index c7d2751..ab04107 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternal.java
@@ -20,9 +20,6 @@ import org.apache.isis.applib.annotation.Programmatic;
 
 public interface MessageBrokerServiceInternal {
 
-    @Programmatic
-    void injectInto(final Object candidate);
-
     /**
      * Provided by <tt>MessageBroker</tt> when used by framework.
      *

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalAbstract.java
deleted file mode 100644
index 1f81bfa..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalAbstract.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.services.msgbroker;
-
-public abstract class MessageBrokerServiceInternalAbstract implements MessageBrokerServiceInternal {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (MessageBrokerServiceAware.class.isAssignableFrom(candidate.getClass())) {
-            final MessageBrokerServiceAware cast = MessageBrokerServiceAware.class.cast(candidate);
-            cast.setMessageBrokerService(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalNoop.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalNoop.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalNoop.java
index 093e0f3..8b1b902 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalNoop.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalNoop.java
@@ -4,7 +4,7 @@ import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 
 @DomainService(nature = NatureOfService.DOMAIN)
-public class MessageBrokerServiceInternalNoop extends MessageBrokerServiceInternalAbstract {
+public class MessageBrokerServiceInternalNoop implements MessageBrokerServiceInternal {
 
     @Override
     public void informUser(final String message) {

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
index a00d2ee..763e7b1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
@@ -28,9 +28,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 public interface PersistenceSessionServiceInternal extends AdapterManager {
 
-    @Programmatic
-    void injectInto(final Object candidate);
-
     //region > instantiate
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java
deleted file mode 100644
index f10cc90..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java
+++ /dev/null
@@ -1,31 +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.services.persistsession;
-
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-
-public abstract class PersistenceSessionServiceInternalAbstract implements PersistenceSessionServiceInternal {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
-            final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
-            cast.setAdapterManager(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java
index 63792ba..d5ac62e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java
@@ -8,21 +8,13 @@ import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService2;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 
 @DomainService(nature = NatureOfService.DOMAIN)
-public class PersistenceSessionServiceInternalNoop extends PersistenceSessionServiceInternalAbstract {
+public class PersistenceSessionServiceInternalNoop implements PersistenceSessionServiceInternal {
 
-    @Override
-    public void injectInto(final Object candidate) {
-        if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
-            final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
-            cast.setAdapterManager(this);
-        }
-    }
 
     @Override
     public ObjectAdapter getAdapterFor(final Object pojo) {

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
index d8d6521..6313b50 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
@@ -39,16 +39,12 @@ import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
 )
-public class RepositoryServiceInternalDefault
-        implements RepositoryService,
-        AdapterManagerAware {
+public class RepositoryServiceInternalDefault implements RepositoryService {
 
 
 
@@ -75,7 +71,7 @@ public class RepositoryServiceInternalDefault
     @Programmatic
     @Override
     public boolean isPersistent(final Object domainObject) {
-        final ObjectAdapter adapter = adapterManager.adapterFor(unwrapped(domainObject));
+        final ObjectAdapter adapter = persistenceSessionServiceInternal.adapterFor(unwrapped(domainObject));
         return adapter.representsPersistent();
     }
 
@@ -85,7 +81,7 @@ public class RepositoryServiceInternalDefault
         if (isPersistent(object)) {
             return;
         }
-        final ObjectAdapter adapter = adapterManager.adapterFor(unwrapped(object));
+        final ObjectAdapter adapter = persistenceSessionServiceInternal.adapterFor(unwrapped(object));
 
         if(adapter == null) {
             throw new PersistFailedException("Object not known to framework; instantiate using newTransientInstance(...) rather than simply new'ing up.");
@@ -120,7 +116,7 @@ public class RepositoryServiceInternalDefault
         if (object == null) {
             throw new IllegalArgumentException("Must specify a reference for disposing an object");
         }
-        final ObjectAdapter adapter = adapterManager.adapterFor(unwrapped(object));
+        final ObjectAdapter adapter = persistenceSessionServiceInternal.adapterFor(unwrapped(object));
         if (!isPersistent(object)) {
             throw new RepositoryException("Object not persistent: " + adapter);
         }
@@ -253,12 +249,6 @@ public class RepositoryServiceInternalDefault
     @javax.inject.Inject
     TransactionService transactionService;
 
-    private AdapterManager adapterManager;
-    @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
-    }
-
     @javax.inject.Inject
     PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
index bb61ca1..95b58af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
@@ -19,22 +19,21 @@
 
 package org.apache.isis.core.metamodel.services.title;
 
+import javax.inject.Inject;
+
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.title.TitleService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
-import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
 )
-public class TitleServiceDefault
-        implements TitleService, AdapterManagerAware, LocalizationProviderAware {
+public class TitleServiceDefault implements TitleService {
 
     @Programmatic
     @Override
@@ -66,24 +65,11 @@ public class TitleServiceDefault
 
     // //////////////////////////////////////
 
-    private AdapterManager adapterManager;
-
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
-
-    @Programmatic
-    @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
-    }
-
-    private LocalizationProviderInternal localizationProviderInternal;
-    @Override
-    public void setLocalizationProvider(final LocalizationProviderInternal localizationProviderInternal) {
-        this.localizationProviderInternal = localizationProviderInternal;
-    }
+    @Inject
+    PersistenceSessionServiceInternal adapterManager;
 
+    @javax.inject.Inject
+    LocalizationProviderInternal localizationProviderInternal;
 
     @javax.inject.Inject
     WrapperFactory wrapperFactory;

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternal.java
index a3f88d6..9c6a4a9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternal.java
@@ -24,9 +24,6 @@ import org.apache.isis.core.metamodel.transactions.TransactionState;
 
 public interface TransactionStateProviderInternal {
 
-    @Programmatic
-    void injectInto(final Object candidate);
-
     @Programmatic TransactionState getTransactionState();
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalAbstract.java
deleted file mode 100644
index bd95173..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalAbstract.java
+++ /dev/null
@@ -1,31 +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.services.transtate;
-
-import org.apache.isis.core.metamodel.transactions.TransactionStateProviderAware;
-
-public abstract class TransactionStateProviderInternalAbstract implements TransactionStateProviderInternal {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (TransactionStateProviderAware.class.isAssignableFrom(candidate.getClass())) {
-            final TransactionStateProviderAware cast = TransactionStateProviderAware.class.cast(candidate);
-            cast.setTransactionStateProvider(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalNoop.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalNoop.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalNoop.java
index dd09e5e..cc10b0b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalNoop.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalNoop.java
@@ -5,7 +5,8 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.core.metamodel.transactions.TransactionState;
 
 @DomainService(nature = NatureOfService.DOMAIN)
-public class TransactionStateProviderInternalNoop extends TransactionStateProviderInternalAbstract {
+public class TransactionStateProviderInternalNoop implements TransactionStateProviderInternal {
+
     @Override
     public TransactionState getTransactionState() {
         throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index 683f041..b3b38d0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -132,7 +132,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
         this.metaModelValidator = metaModelValidator;
 
-        this.facetProcessor = new FacetProcessor(configuration, programmingModel);
+        this.facetProcessor = new FacetProcessor(programmingModel);
         this.layoutMetadataReaders = layoutMetadataReaders;
     }
 
@@ -169,9 +169,9 @@ public class SpecificationLoader implements ApplicationScopedComponent {
         }
 
         // wire subcomponents into each other
-        this.runtimeContext.injectInto(facetProcessor);
+        facetProcessor.setServicesInjector(servicesInjector);
         for (final LayoutMetadataReader layoutMetadataReader : layoutMetadataReaders) {
-            this.runtimeContext.injectInto(layoutMetadataReader);
+            servicesInjector.injectInto(layoutMetadataReader);
         }
 
         // initialize subcomponents
@@ -424,7 +424,8 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     private ObjectSpecification createSpecification(final Class<?> cls) {
 
         final ServicesInjector servicesInjector = getRuntimeContext().getServicesInjector();
-        final PersistenceSessionServiceInternal persistenceSessionServiceInternal = getRuntimeContext().getPersistenceSessionService();
+        final PersistenceSessionServiceInternal persistenceSessionServiceInternal =
+                servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
 
         final ObjectSpecificationDependencies specContext =
                 new ObjectSpecificationDependencies(deploymentCategory, servicesInjector, this, facetProcessor);

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
index 4556ffb..394065e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
@@ -20,34 +20,43 @@
 package org.apache.isis.core.metamodel.specloader.facetprocessor;
 
 import java.lang.reflect.Method;
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-import org.apache.isis.core.commons.config.IsisConfiguration;
+
 import org.apache.isis.core.commons.lang.ListExtensions;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
-import org.apache.isis.core.metamodel.facets.*;
+import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
+import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessParameterContext;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.MethodFilteringFacetFactory;
+import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactory;
+import org.apache.isis.core.metamodel.facets.MethodRemoverConstants;
+import org.apache.isis.core.metamodel.facets.PropertyOrCollectionIdentifyingFacetFactory;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAware;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjectorAware;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 
 import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
 
-public class FacetProcessor implements RuntimeContextAware {
+public class FacetProcessor implements ServicesInjectorAware {
 
-    private final IsisConfiguration configuration;
     private final ProgrammingModel programmingModel;
 
-    private RuntimeContext runtimeContext;
-
     /**
      * Class<FacetFactory> => FacetFactory
      */
@@ -113,13 +122,9 @@ public class FacetProcessor implements RuntimeContextAware {
      */
     private Map<FeatureType, List<FacetFactory>> factoryListByFeatureType = null;
 
-    public FacetProcessor(
-            final IsisConfiguration configuration,
-            final ProgrammingModel programmingModel) {
-        ensureThatState(configuration, is(notNullValue()));
+    public FacetProcessor(final ProgrammingModel programmingModel) {
         ensureThatState(programmingModel, is(notNullValue()));
 
-        this.configuration = configuration;
         this.programmingModel = programmingModel;
     }
 
@@ -128,7 +133,6 @@ public class FacetProcessor implements RuntimeContextAware {
     // //////////////////////////////////////////////////
 
     public void init() {
-        ensureThatState(runtimeContext, is(notNullValue()));
         final List<FacetFactory> facetFactoryList = programmingModel.getList();
         for (final FacetFactory facetFactory : facetFactoryList) {
             registerFactory(facetFactory);
@@ -151,13 +155,7 @@ public class FacetProcessor implements RuntimeContextAware {
      * processing.
      */
     public void injectDependenciesInto(final FacetFactory factory) {
-
-        // cascades all the subcomponents also
-        getRuntimeContext().injectInto(factory);
-    }
-
-    public FacetFactory getFactoryByFactoryType(final Class<? extends FacetFactory> factoryType) {
-        return factoryByFactoryType.get(factoryType);
+        servicesInjector.injectInto(factory);
     }
 
     /**
@@ -467,18 +465,11 @@ public class FacetProcessor implements RuntimeContextAware {
 
     //region > dependencies
 
-    private RuntimeContext getRuntimeContext() {
-        return runtimeContext;
-    }
+    private ServicesInjector servicesInjector;
 
-    /**
-     * Injected so can propogate to any {@link #registerFactory(FacetFactory)
-     * registered} {@link FacetFactory} s that are also
-     * {@link RuntimeContextAware}.
-     */
     @Override
-    public void setRuntimeContext(final RuntimeContext runtimeContext) {
-        this.runtimeContext = runtimeContext;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        this.servicesInjector = servicesInjector;
     }
 
     //endregion

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAware.java
deleted file mode 100644
index 61580d7..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAware.java
+++ /dev/null
@@ -1,30 +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.transactions;
-
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
-
-public interface TransactionStateProviderAware {
-
-    @Programmatic
-    public void setTransactionStateProvider(TransactionStateProviderInternal transactionStateProviderInternal);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index c9b1e92..cf53416 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -32,7 +32,6 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -42,11 +41,12 @@ import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
@@ -58,7 +58,7 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
     @Mock
     protected SpecificationLoader mockSpecificationLoader;
     @Mock
-    protected AdapterManager mockAdapterManager;
+    protected PersistenceSessionServiceInternal mockAdapterManager;
     @Mock
     protected MethodRemover mockMethodRemover;
     @Mock

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
index 5403aa5..418262e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
@@ -46,6 +46,7 @@ import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetV
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation.TitleComponent;
 import org.apache.isis.core.metamodel.services.l10n.LocalizationDefault;
 import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Allowing;
 
@@ -70,7 +71,7 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
         context.allowing(mockSpecificationLoader);
 
         facetFactory = new TitleAnnotationFacetFactory();
-        facetFactory.setAdapterManager(mockAdapterManager);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         context.checking(new Expectations() {
             {
@@ -91,6 +92,9 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
 
                 allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
                 will(returnValue(mockSpecificationLoader));
+
+                allowing(mockServicesInjector).lookupService(PersistenceSessionServiceInternal.class);
+                will(returnValue(mockAdapterManager));
             }
         });
 

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/runtime/src/main/java/org/apache/isis/core/runtime/services/l10n/LocalizationProviderInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/l10n/LocalizationProviderInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/l10n/LocalizationProviderInternalDefault.java
index 077bc3d..0900db2 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/l10n/LocalizationProviderInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/l10n/LocalizationProviderInternalDefault.java
@@ -21,14 +21,14 @@ package org.apache.isis.core.runtime.services.l10n;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.profiles.Localization;
-import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternalAbstract;
+import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
 @DomainService(
         nature = NatureOfService.DOMAIN,
         menuOrder = "" + (Integer.MAX_VALUE - 1)  // ie before the Noop impl in metamodel
 )
-public class LocalizationProviderInternalDefault extends LocalizationProviderInternalAbstract {
+public class LocalizationProviderInternalDefault implements LocalizationProviderInternal {
 
     @Override
     public Localization getLocalization() {

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/runtime/src/main/java/org/apache/isis/core/runtime/services/msgbroker/MessageBrokerServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/msgbroker/MessageBrokerServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/msgbroker/MessageBrokerServiceInternalDefault.java
index 4e4e4c7..9fab4c0 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/msgbroker/MessageBrokerServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/msgbroker/MessageBrokerServiceInternalDefault.java
@@ -22,14 +22,14 @@ import org.apache.isis.applib.RecoverableException;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.core.commons.authentication.MessageBroker;
-import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternalAbstract;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
 @DomainService(
         nature = NatureOfService.DOMAIN,
         menuOrder = "" + (Integer.MAX_VALUE - 1)  // ie before the Noop impl in metamodel
 )
-public class MessageBrokerServiceInternalDefault extends MessageBrokerServiceInternalAbstract {
+public class MessageBrokerServiceInternalDefault implements MessageBrokerServiceInternal {
 
     @Override
     public void informUser(final String message) {

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
index 5605b73..eae20d9 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService2;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternalAbstract;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerResolve;
@@ -39,7 +39,7 @@ import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
         nature = NatureOfService.DOMAIN,
         menuOrder = "" + (Integer.MAX_VALUE - 1)  // ie before the Noop impl in metamodel
 )
-public class PersistenceSessionServiceInternalDefault extends PersistenceSessionServiceInternalAbstract {
+public class PersistenceSessionServiceInternalDefault implements PersistenceSessionServiceInternal {
 
     @Override
     public ObjectAdapter getAdapterFor(Oid oid) {

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/runtime/src/main/java/org/apache/isis/core/runtime/services/transtate/TransactionStateProviderInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/transtate/TransactionStateProviderInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/transtate/TransactionStateProviderInternalDefault.java
index 5fbc4b9..c30b8f3 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/transtate/TransactionStateProviderInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/transtate/TransactionStateProviderInternalDefault.java
@@ -20,8 +20,8 @@ package org.apache.isis.core.runtime.services.transtate;
 
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 import org.apache.isis.core.metamodel.transactions.TransactionState;
-import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternalAbstract;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
@@ -32,7 +32,7 @@ import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
         nature = NatureOfService.DOMAIN,
         menuOrder = "" + (Integer.MAX_VALUE - 1)  // ie before the Noop impl in metamodel
 )
-public class TransactionStateProviderInternalDefault extends TransactionStateProviderInternalAbstract {
+public class TransactionStateProviderInternalDefault implements TransactionStateProviderInternal {
 
     @Override
     public TransactionState getTransactionState() {

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
index 5b7fdc2..3a2048c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
@@ -178,10 +178,9 @@ public class IsisSystem implements ApplicationScopedComponent {
             final RuntimeContext runtimeContext = new RuntimeContext(servicesInjector);
 
             // wire up components and components into services...
-            runtimeContext.injectInto(specificationLoader);
-
             for (Object service : servicesInjector.getRegisteredServices()) {
-                runtimeContext.injectInto(service);
+                // inject itself into each service (if implements ServiceInjectorAware).
+                servicesInjector.injectInto(service);
             }
 
             // instantiate

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
index df4e535..a1c7088 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionInternal.java
@@ -59,7 +59,6 @@ import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 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;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
@@ -91,7 +90,6 @@ import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
-import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceAware;
 import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
@@ -393,20 +391,6 @@ public class PersistenceSessionInternal implements
 
     //endregion
 
-    //region > Injectable
-    @Override
-    public void injectInto(final Object candidate) {
-        if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
-            final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
-            cast.setAdapterManager(this);
-        }
-        if (MessageBrokerServiceAware.class.isAssignableFrom(candidate.getClass())) {
-            final MessageBrokerServiceAware cast = MessageBrokerServiceAware.class.cast(candidate);
-            cast.setMessageBrokerService(this);
-        }
-    }
-    //endregion
-
     //region > QuerySubmitter impl, findInstancesInTransaction
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
index 080d7be..449dfdf 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
@@ -51,8 +51,6 @@ import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.WrappingObject;
 import org.apache.isis.applib.services.wrapper.listeners.InteractionListener;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcher;
@@ -72,7 +70,7 @@ import org.apache.isis.core.wrapper.proxy.ProxyCreator;
  * configuration is required.
  */
 @DomainService(nature = NatureOfService.DOMAIN)
-public class WrapperFactoryDefault implements WrapperFactory, AdapterManagerAware {
+public class WrapperFactoryDefault implements WrapperFactory {
 
     private final List<InteractionListener> listeners = new ArrayList<InteractionListener>();
     private final Map<Class<? extends InteractionEvent>, InteractionEventDispatcher> dispatchersByEventClass = new HashMap<Class<? extends InteractionEvent>, InteractionEventDispatcher>();
@@ -251,7 +249,8 @@ public class WrapperFactoryDefault implements WrapperFactory, AdapterManagerAwar
     }
 
     protected <T> T createProxy(final T domainObject, final ExecutionMode mode) {
-        return proxyContextHandler.proxy(domainObject, this, mode, authenticationSessionProvider, specificationLoader, getAdapterManager(), persistenceSessionServiceInternal);
+        return proxyContextHandler.proxy(domainObject, this, mode, authenticationSessionProvider, specificationLoader,
+                persistenceSessionServiceInternal);
     }
 
     @Override
@@ -299,20 +298,6 @@ public class WrapperFactoryDefault implements WrapperFactory, AdapterManagerAwar
     }
 
 
-
-    private AdapterManager adapterManager;
-
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
-    @Programmatic
-    @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
-    }
-
-
-
     @Inject
     AuthenticationSessionProvider authenticationSessionProvider;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/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 3e2db21..16f1819 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
@@ -53,7 +53,6 @@ import org.apache.isis.applib.services.wrapper.WrappingObject;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-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;
@@ -77,7 +76,6 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
 
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final SpecificationLoader specificationLoader;
-    private final AdapterManager adapterManager;
     private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     private final ProxyContextHandler proxy;
@@ -123,7 +121,6 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             final ExecutionMode mode,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final SpecificationLoader specificationLoader,
-            final AdapterManager adapterManager,
             final PersistenceSessionServiceInternal persistenceSessionServiceInternal,
             final ProxyContextHandler proxy) {
         super(delegate, wrapperFactory, mode);
@@ -131,10 +128,10 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         this.proxy = proxy;
         this.authenticationSessionProvider = authenticationSessionProvider;
         this.specificationLoader = specificationLoader;
-        this.adapterManager = adapterManager;
         this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
         this.executionMode = mode;
 
+
         try {
             titleMethod = delegate.getClass().getMethod("title", new Class[]{});
         } catch (final NoSuchMethodException e) {
@@ -651,7 +648,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     }
 
     private ObjectAdapter adapterFor(final Object obj) {
-        return obj != null ? getAdapterManager().adapterFor(obj) : null;
+        return obj != null ? getPersistenceSessionService().adapterFor(obj) : null;
     }
 
     private Object underlying(final Object arg) {
@@ -793,10 +790,6 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         return getAuthenticationSessionProvider().getAuthenticationSession();
     }
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
-
     protected PersistenceSessionServiceInternal getPersistenceSessionService() {
         return persistenceSessionServiceInternal;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
index d85fa45..42caa43 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
@@ -27,9 +27,8 @@ import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.ensure.Ensure;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.wrapper.proxy.ProxyCreator;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -50,16 +49,14 @@ public class ProxyContextHandler {
             final ExecutionMode mode,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final SpecificationLoader specificationLookup,
-            final AdapterManager adapterManager,
             final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
 
         Ensure.ensureThatArg(wrapperFactory, is(not(nullValue())));
         Ensure.ensureThatArg(authenticationSessionProvider, is(not(nullValue())));
         Ensure.ensureThatArg(specificationLookup, is(not(nullValue())));
-        Ensure.ensureThatArg(adapterManager, is(not(nullValue())));
         Ensure.ensureThatArg(persistenceSessionServiceInternal, is(not(nullValue())));
 
-        final DomainObjectInvocationHandler<T> invocationHandler = new DomainObjectInvocationHandler<T>(domainObject, wrapperFactory, mode, authenticationSessionProvider, specificationLookup, adapterManager,
+        final DomainObjectInvocationHandler<T> invocationHandler = new DomainObjectInvocationHandler<T>(domainObject, wrapperFactory, mode, authenticationSessionProvider, specificationLookup,
                 persistenceSessionServiceInternal, this);
 
         return proxyCreator.instantiateProxy(invocationHandler);

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 2b43ea3..2c66f00 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -205,8 +205,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
 
         wrapperFactory = createWrapperFactory();
-        wrapperFactory.setAdapterManager(mockAdapterManager);
-        wrapperFactory.setPersistenceSessionService(mockPersistenceSessionServiceInternal);
+        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
         wrapperFactory.specificationLoader = mockSpecificationLoader;
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index 05398f1..ffacc15 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -125,9 +125,8 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
         setPasswordMethod = Employee.class.getMethod("setPassword", String.class);
 
         wrapperFactory = createWrapperFactory();
-        wrapperFactory.setAdapterManager(mockAdapterManager);
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
-        wrapperFactory.setPersistenceSessionService(mockPersistenceSessionServiceInternal);
+        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
         wrapperFactory.specificationLoader = mockSpecificationLoader;
 
         context.checking(new Expectations() {


[04/30] isis git commit: ISIS-1407: collapsed SpecificationLoaderSpi and SpecificationLoader interfaces; removed ProgrammableReflector (finally!)

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
index d65906a..b26fe09 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
@@ -97,10 +97,10 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
     void allowingLoadSpecificationRequestsFor(final Class<?> cls, final Class<?> returnType) {
         context.checking(new Expectations() {
             {
-                allowing(mockSpecificationLoaderSpi).loadSpecification(cls);
+                allowing(mockSpecificationLoader).loadSpecification(cls);
                 will(returnValue(mockTypeSpec));
 
-                allowing(mockSpecificationLoaderSpi).loadSpecification(returnType);
+                allowing(mockSpecificationLoader).loadSpecification(returnType);
                 will(returnValue(mockReturnTypeSpec));
             }
         });
@@ -109,7 +109,7 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
     @Before
     public void setUp() throws Exception {
         facetFactory = new CollectionAnnotationFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
     }
 
     @After
@@ -122,7 +122,7 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
         private void addGetterFacet(final FacetHolder holder) {
             FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(holder, mockDeploymentCategoryProvider.getDeploymentCategory(),
                     mockConfiguration,
-                    mockSpecificationLoaderSpi, mockAuthenticationSessionProvider,
+                    mockSpecificationLoader, mockAuthenticationSessionProvider,
                     mockAdapterManager
             ) {
                 @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassAnnotationOnMemberFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassAnnotationOnMemberFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassAnnotationOnMemberFacetFactoryTest.java
index 666cd14..8b496fb 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassAnnotationOnMemberFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassAnnotationOnMemberFacetFactoryTest.java
@@ -35,7 +35,7 @@ public class CssClassAnnotationOnMemberFacetFactoryTest extends AbstractFacetFac
     public void testCssClassAnnotationPickedUpOnProperty() {
 
         final CssClassFacetOnMemberFactory facetFactory = new CssClassFacetOnMemberFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/naming/named/NamedAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/naming/named/NamedAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/naming/named/NamedAnnotationFacetFactoryTest.java
index 7ded344..4fa0310 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/naming/named/NamedAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/naming/named/NamedAnnotationFacetFactoryTest.java
@@ -46,7 +46,7 @@ public class NamedAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
     public void testNamedAnnotationPickedUpOnClass() {
 
         final NamedFacetOnTypeAnnotationFactory facetFactory = new NamedFacetOnTypeAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         @Named("some name")
         class Customer {
@@ -67,7 +67,7 @@ public class NamedAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
     public void testNamedAnnotationPickedUpOnProperty() {
 
         final NamedFacetOnMemberFactory facetFactory = new NamedFacetOnMemberFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -91,7 +91,7 @@ public class NamedAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
 
     public void testNamedAnnotationPickedUpOnCollection() {
         final NamedFacetOnMemberFactory facetFactory = new NamedFacetOnMemberFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -115,7 +115,7 @@ public class NamedAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
 
     public void testNamedAnnotationPickedUpOnAction() {
         final NamedFacetOnMemberFactory facetFactory = new NamedFacetOnMemberFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -139,7 +139,7 @@ public class NamedAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
     public void testNamedAnnotationPickedUpOnActionParameter() {
 
         final NamedFacetOnParameterAnnotationFactory facetFactory = new NamedFacetOnParameterAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
index ad51b32..3e2dd1c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
@@ -41,7 +41,7 @@ public class CssClassFacetOnTypeAnnotationFactoryTest extends AbstractFacetFacto
     public void testCssClassAnnotationPickedUpOnClass() {
 
         final CssClassFacetOnTypeAnnotationFactory facetFactory = new CssClassFacetOnTypeAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         @CssClass("testClass")
         class Customer {

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/CssClassFaFacetOnTypeAnnotationFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/CssClassFaFacetOnTypeAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/CssClassFaFacetOnTypeAnnotationFactoryTest.java
index 9b0f564..153a084 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/CssClassFaFacetOnTypeAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/CssClassFaFacetOnTypeAnnotationFactoryTest.java
@@ -24,7 +24,7 @@ public class CssClassFaFacetOnTypeAnnotationFactoryTest extends AbstractFacetFac
     // public void testCssClassFaAnnotationPickedUpOnClass() {
     //
     // final CssClassFaFacetOnTypeAnnotationFactory facetFactory = new CssClassFaFacetOnTypeAnnotationFactory();
-    // facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+    // facetFactory.setSpecificationLoader(mockSpecificationLoader);
     //
     // @CssClassFa("fa-foo")
     // class Customer {
@@ -47,7 +47,7 @@ public class CssClassFaFacetOnTypeAnnotationFactoryTest extends AbstractFacetFac
     // public void testCssClassFaAnnotationPickedUpOnClassPositionRight() {
     //
     // final CssClassFaFacetOnTypeAnnotationFactory facetFactory = new CssClassFaFacetOnTypeAnnotationFactory();
-    // facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+    // facetFactory.setSpecificationLoader(mockSpecificationLoader);
     //
     // @CssClassFa(value = "fa-foo", position = ActionLayout.CssClassFaPosition.RIGHT)
     // class Customer {

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
index f039b70..3fbc59c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
@@ -66,11 +66,11 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
     @Before
     public void setUp() throws Exception {
 
-        context.allowing(mockSpecificationLoaderSpi);
+        context.allowing(mockSpecificationLoader);
 
         facetFactory = new TitleAnnotationFacetFactory();
         facetFactory.setAdapterManager(mockAdapterManager);
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
 
         context.checking(new Expectations() {

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
index 5c3fa6f..6906fcf 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
@@ -38,7 +38,7 @@ public class ObjectSpecIdFacetDerivedFromClassNameFactoryTest extends AbstractFa
     @Before
     public void setUp() throws Exception {
         facetFactory = new ObjectSpecIdFacetDerivedFromClassNameFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
     }
 
     public static class Customer {

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
index 384e95f..3877ba4 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactoryTest.java
@@ -66,10 +66,10 @@ public class ParameterAnnotationFacetFactoryTest extends AbstractFacetFactoryJUn
 
     void allowingLoadSpecificationRequestsFor(final Class<?> cls, final Class<?> returnType) {
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(cls);
+            allowing(mockSpecificationLoader).loadSpecification(cls);
             will(returnValue(mockTypeSpec));
 
-            allowing(mockSpecificationLoaderSpi).loadSpecification(returnType);
+            allowing(mockSpecificationLoader).loadSpecification(returnType);
             will(returnValue(mockReturnTypeSpec));
         }});
     }
@@ -77,7 +77,7 @@ public class ParameterAnnotationFacetFactoryTest extends AbstractFacetFactoryJUn
     @Before
     public void setUp() throws Exception {
         facetFactory = new ParameterAnnotationFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
index 7c8b0e6..db67707 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
@@ -93,7 +93,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     }
 
     private void injectServicesIntoAndAllowingServiceInjectorLookups(final FacetFactoryAbstract facetFactory) {
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
     }
 
@@ -242,7 +242,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testModifyMethodWithNoSetterInstallsNotPersistedFacetButDoesNotInstallADisabledFacets() {
         final PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
@@ -253,7 +253,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
 
         final DisabledFacetOnPropertyInferredFactory disabledFacetOnPropertyInferredFactory = new DisabledFacetOnPropertyInferredFactory();
-        disabledFacetOnPropertyInferredFactory.setSpecificationLoader(programmableReflector);
+        disabledFacetOnPropertyInferredFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -282,7 +282,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testIfHaveSetterAndModifyFacetThenTheModifyFacetWinsOut() {
         final PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         facetFactory.setServicesInjector(mockServicesInjector);
 
@@ -417,7 +417,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     
     public void testAutoCompleteFacetFoundAndMethodRemoved() {
         final PropertyAutoCompleteFacetMethodFactory facetFactory = new PropertyAutoCompleteFacetMethodFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
 
         context.checking(new Expectations(){{

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index 5cf5139..03499be 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -104,10 +104,10 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
 
     void allowingLoadSpecificationRequestsFor(final Class<?> cls, final Class<?> returnType) {
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(cls);
+            allowing(mockSpecificationLoader).loadSpecification(cls);
             will(returnValue(mockTypeSpec));
 
-            allowing(mockSpecificationLoaderSpi).loadSpecification(returnType);
+            allowing(mockSpecificationLoader).loadSpecification(returnType);
             will(returnValue(mockReturnTypeSpec));
         }});
     }
@@ -115,7 +115,7 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
     @Before
     public void setUp() throws Exception {
         facetFactory = new PropertyAnnotationFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
     }
 
@@ -129,7 +129,7 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
         private void addGetterFacet(final FacetHolder holder) {
             FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(holder, mockDeploymentCategoryProvider.getDeploymentCategory(),
                     mockConfiguration,
-                    mockSpecificationLoaderSpi, mockAuthenticationSessionProvider,
+                    mockSpecificationLoader, mockAuthenticationSessionProvider,
                     mockAdapterManager
             ) {
                 @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mask/MaskAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mask/MaskAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mask/MaskAnnotationFacetFactoryTest.java
index 99b4457..272b7fc 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mask/MaskAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mask/MaskAnnotationFacetFactoryTest.java
@@ -45,12 +45,14 @@ public class MaskAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
     protected void setUp() throws Exception {
         super.setUp();
 
-        programmableReflector.setLoadSpecificationStringReturn(customerNoSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(customerNoSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(customerNoSpec);
+
     }
 
     public void testMaskAnnotationPickedUpOnClass() {
         final MaskFacetOnTypeAnnotationFactory facetFactory = new MaskFacetOnTypeAnnotationFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         @Mask("###")
         class Customer {
@@ -66,7 +68,7 @@ public class MaskAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testMaskAnnotationPickedUpOnProperty() {
         final MaskFacetOnPropertyAnnotationFactory facetFactory = new MaskFacetOnPropertyAnnotationFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -88,7 +90,7 @@ public class MaskAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testMaskAnnotationPickedUpOnActionParameter() {
         final MaskFacetOnParameterAnnotationFactory facetFactory = new MaskFacetOnParameterAnnotationFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -108,7 +110,7 @@ public class MaskAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testMaskAnnotationNotIgnoredForNonStringsProperty() {
         final MaskFacetOnPropertyAnnotationFactory facetFactory = new MaskFacetOnPropertyAnnotationFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -126,7 +128,7 @@ public class MaskAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testMaskAnnotationNotIgnoredForPrimitiveOnActionParameter() {
         final MaskFacetOnParameterAnnotationFactory facetFactory = new MaskFacetOnParameterAnnotationFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
index 72a6d61..5b44f54 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
@@ -42,7 +42,7 @@ import org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFa
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderContext;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
@@ -74,7 +74,7 @@ public abstract class ValueSemanticsProviderAbstractTestCase {
     @Mock
     protected AdapterManager mockAdapterManager;
     @Mock
-    protected SpecificationLoaderSpi mockSpecificationLoader;
+    protected SpecificationLoader mockSpecificationLoader;
     @Mock
     protected AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
index c3c1cb4..9c124d5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
@@ -42,7 +42,7 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetU
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -183,7 +183,7 @@ public class ObjectFixtureFilePersistor {
         return IsisContext.getPersistenceSession();
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 
@@ -220,7 +220,7 @@ class LoadedObjects {
         return IsisContext.getPersistenceSession();
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
index d29db42..f8599f7 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -399,7 +399,7 @@ public class Memento implements Serializable {
     // Dependencies (from context)
     // ///////////////////////////////////////////////////////////////
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
index 784d58e..acbbe6f 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/container/DomainObjectContainerResolve.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 
@@ -115,7 +115,7 @@ public class DomainObjectContainerResolve {
         return getPersistenceSession();
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/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 cfad852..f6df1e4 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
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAb
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 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;
@@ -69,7 +69,7 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
             final DeploymentCategory deploymentCategory,
             final IsisConfigurationDefault configuration,
             final ServicesInjector servicesInjector,
-            final SpecificationLoaderSpi specificationLoader) {
+            final SpecificationLoader specificationLoader) {
         super(servicesInjector, specificationLoader);
 
         this.persistenceSessionService = new PersistenceSessionServiceAbstract() {

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
index 662e9c3..f46eb2d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.commons.encoding.DataInputExtended;
 import org.apache.isis.core.commons.encoding.DataOutputExtended;
 import org.apache.isis.core.commons.encoding.Encodable;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
 
@@ -128,7 +128,7 @@ public abstract class PersistenceQueryAbstract implements PersistenceQuery, Enco
     // Dependencies (from context)
     // ///////////////////////////////////////////////////////
 
-    protected static SpecificationLoaderSpi getSpecificationLoader() {
+    protected static SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
index 6ed82fd..c93e844 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
@@ -293,7 +293,7 @@ public class BackgroundServiceDefault implements BackgroundService2 {
 
     // //////////////////////////////////////
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
index 2aef5d5..3022223 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
@@ -241,7 +241,7 @@ public class CommandDtoServiceInternalDefault implements CommandDtoServiceIntern
 
     // //////////////////////////////////////
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
index 04b2f5c..d65e23d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
@@ -44,7 +44,7 @@ import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInterna
 import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
@@ -164,8 +164,8 @@ public class IsisSystem implements ApplicationScopedComponent {
             final Collection<MetaModelRefiner> metaModelRefiners =
                     refiners(authenticationManager, authorizationManager,
                             new PersistenceSessionFactoryMetamodelRefiner());
-            final SpecificationLoaderSpi specificationLoader =
-                    isisComponentProvider.provideSpecificationLoaderSpi(deploymentType, servicesInjector, metaModelRefiners);
+            final SpecificationLoader specificationLoader =
+                    isisComponentProvider.provideSpecificationLoader(deploymentType, servicesInjector, metaModelRefiners);
 
             // persistenceSessionFactory
             final PersistenceSessionFactory persistenceSessionFactory =

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
index 83e209e..34f9032 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.runtime.system;
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.core.commons.config.ConfigurationConstants;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.ObjectReflectorInstaller;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.AuthenticationManagerInstaller;
@@ -45,7 +45,7 @@ public final class SystemConstants {
 
 
     /**
-     * Key used to lookup {@link SpecificationLoaderSpi specification Loader} in
+     * Key used to lookup {@link SpecificationLoader specification Loader} in
      * {@link IsisConfiguration}, and root for any
      * {@link ObjectReflectorInstaller reflector}-specific configuration keys.
      *

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index 32afbc6..885e841 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.commons.config.IsisConfigurationException;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.runtimecontext.LocalizationDefault;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.system.DeploymentType;
@@ -406,7 +406,7 @@ public class IsisContext {
      * 
      * @see IsisSessionFactory#getSpecificationLoader()
      */
-    public static SpecificationLoaderSpi getSpecificationLoader() {
+    public static SpecificationLoader getSpecificationLoader() {
         return getSessionFactory().getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/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 1dc25ca..c2dcad5 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
@@ -98,7 +98,7 @@ import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -181,7 +181,7 @@ public class PersistenceSession implements
 
     private final PersistenceQueryFactory persistenceQueryFactory;
     private final IsisConfigurationDefault configuration;
-    private final SpecificationLoaderSpi specificationLoader;
+    private final SpecificationLoader specificationLoader;
     private final AuthenticationSession authenticationSession;
 
     private final ServicesInjectorSpi servicesInjector;
@@ -217,7 +217,7 @@ public class PersistenceSession implements
     public PersistenceSession(
             final IsisConfigurationDefault configuration,
             final ServicesInjectorSpi servicesInjector,
-            final SpecificationLoaderSpi specificationLoader,
+            final SpecificationLoader specificationLoader,
             final AuthenticationSession authenticationSession,
             final PersistenceManagerFactory jdoPersistenceManagerFactory,
             final FixturesInstalledFlag fixturesInstalledFlag) {
@@ -1239,7 +1239,7 @@ public class PersistenceSession implements
 
     //region > dependencies (from constructor)
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return specificationLoader;
     }
     protected AuthenticationSession getAuthenticationSession() {

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index df138b0..ec15042 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller;
@@ -163,7 +163,7 @@ public class PersistenceSessionFactory
      */
     public PersistenceSession createPersistenceSession(
             final ServicesInjectorSpi servicesInjector,
-            final SpecificationLoaderSpi specificationLoader,
+            final SpecificationLoader specificationLoader,
             final AuthenticationSession authenticationSession) {
 
         final FixturesInstalledFlag fixturesInstalledFlag = this;

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
index 55e108b..892f2d4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.components.SessionScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
@@ -142,7 +142,7 @@ public class IsisSession implements SessionScopedComponent {
     /**
      * Convenience method.
      */
-    public SpecificationLoaderSpi getSpecificationLoader() {
+    public SpecificationLoader getSpecificationLoader() {
         return isisSessionFactory.getSpecificationLoader();
     }
     //endregion

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
index 9b4d08a..761a6ed 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
@@ -68,7 +68,7 @@ public class IsisSessionFactory implements ApplicationScopedComponent {
 
     private final DeploymentType deploymentType;
     private final IsisConfiguration configuration;
-    private final SpecificationLoaderSpi specificationLoaderSpi;
+    private final SpecificationLoader specificationLoaderSpi;
     private final ServicesInjectorSpi servicesInjector;
     private final AuthenticationManager authenticationManager;
     private final AuthorizationManager authorizationManager;
@@ -79,7 +79,7 @@ public class IsisSessionFactory implements ApplicationScopedComponent {
             final DeploymentType deploymentType,
             final IsisConfiguration configuration,
             final ServicesInjectorSpi servicesInjector,
-            final SpecificationLoaderSpi specificationLoader,
+            final SpecificationLoader specificationLoader,
             final AuthenticationManager authenticationManager,
             final AuthorizationManager authorizationManager,
             final PersistenceSessionFactory persistenceSessionFactory) {
@@ -165,9 +165,9 @@ public class IsisSessionFactory implements ApplicationScopedComponent {
 
     /**
      * The {@link ApplicationScopedComponent application-scoped}
-     * {@link SpecificationLoaderSpi}.
+     * {@link SpecificationLoader}.
      */
-    public SpecificationLoaderSpi getSpecificationLoader() {
+    public SpecificationLoader getSpecificationLoader() {
         return specificationLoaderSpi;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
index 6916be9..27a31af 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
@@ -50,7 +50,7 @@ public interface IsisComponentProvider {
 
     FixturesInstaller provideFixturesInstaller();
 
-    SpecificationLoaderSpi provideSpecificationLoaderSpi(
+    SpecificationLoader provideSpecificationLoader(
             final DeploymentType deploymentType,
             final ServicesInjectorSpi servicesInjector,
             final Collection<MetaModelRefiner> metaModelRefiners)
@@ -59,6 +59,6 @@ public interface IsisComponentProvider {
     PersistenceSessionFactory providePersistenceSessionFactory(
             final DeploymentType deploymentType,
             final ServicesInjectorSpi servicesInjector,
-            final SpecificationLoaderSpi specificationLoader);
+            final SpecificationLoader specificationLoader);
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
index 214a362..0c364ad 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFr
 import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
@@ -225,7 +225,7 @@ public class IsisComponentProviderDefault2 extends IsisComponentProviderAbstract
     }
 
     @Override
-    public SpecificationLoaderSpi provideSpecificationLoaderSpi(
+    public SpecificationLoader provideSpecificationLoader(
             final DeploymentType deploymentType,
             final ServicesInjectorSpi servicesInjector,
             final Collection<MetaModelRefiner> metaModelRefiners) throws IsisSystemException {
@@ -258,7 +258,7 @@ public class IsisComponentProviderDefault2 extends IsisComponentProviderAbstract
     public PersistenceSessionFactory providePersistenceSessionFactory(
             DeploymentType deploymentType,
             final ServicesInjectorSpi servicesInjector,
-            final SpecificationLoaderSpi specificationLoader) {
+            final SpecificationLoader specificationLoader) {
         DataNucleusPersistenceMechanismInstaller installer =
                 new DataNucleusPersistenceMechanismInstaller(configuration);
         return installer.createPersistenceSessionFactory(

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
index e43c9e6..db407ce 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
@@ -28,7 +28,7 @@ import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.ObjectReflectorInstaller;
 import org.apache.isis.core.runtime.authentication.AuthenticationManagerInstaller;
 import org.apache.isis.core.runtime.authorization.AuthorizationManagerInstaller;
@@ -159,7 +159,7 @@ public class IsisComponentProviderUsingInstallers extends IsisComponentProviderA
 
 
     @Override
-    public SpecificationLoaderSpi provideSpecificationLoaderSpi(
+    public SpecificationLoader provideSpecificationLoader(
             final DeploymentType deploymentType,
             final ServicesInjectorSpi servicesInjector,
             final Collection<MetaModelRefiner> metaModelRefiners) {
@@ -172,7 +172,7 @@ public class IsisComponentProviderUsingInstallers extends IsisComponentProviderA
     public PersistenceSessionFactory providePersistenceSessionFactory(
             final DeploymentType deploymentType,
             final ServicesInjectorSpi servicesInjector,
-            final SpecificationLoaderSpi specificationLoader) {
+            final SpecificationLoader specificationLoader) {
         return persistenceMechanismInstaller.createPersistenceSessionFactory(
                     deploymentType,
                 servicesInjector);

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
index 5b2ea63..e29190e 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
@@ -26,7 +26,7 @@ import org.slf4j.LoggerFactory;
 import org.apache.isis.core.commons.components.InstallerAbstract;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -74,7 +74,7 @@ public class DataNucleusPersistenceMechanismInstaller extends InstallerAbstract
 
     //region > dependencies
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
index 1df7289..46d8766 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
@@ -35,7 +35,7 @@ import org.datanucleus.identity.DatastoreId;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
 
@@ -216,7 +216,7 @@ public final class JdoObjectIdSerializer {
         return correspondingClass;
     }
 
-    private static SpecificationLoaderSpi getSpecificationLoader() {
+    private static SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
index 70fe50c..70d327e 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
@@ -39,7 +39,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.AppManifest;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
 public class RegisterEntities {
@@ -164,7 +164,7 @@ public class RegisterEntities {
 
     // //////////////////////////////////////
 
-    SpecificationLoaderSpi getSpecificationLoader() {
+    SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
index 990d075..a28cfd1 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -57,7 +57,7 @@ public class PojoAdapterTest {
     @Mock
     private Version mockVersion2;
     @Mock
-    private SpecificationLoaderSpi mockSpecificationLoader;
+    private SpecificationLoader mockSpecificationLoader;
     @Mock
     private AuthenticationSession mockAuthenticationSession;
     @Mock

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
index 029f042..32bc869 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
@@ -40,7 +40,7 @@ import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -188,7 +188,7 @@ public abstract class ResourceAbstract {
         return IsisContext.getAuthenticationManager();
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/SpecUtils.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/SpecUtils.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/SpecUtils.java
index 8e34386..7e3886d 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/SpecUtils.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/SpecUtils.java
@@ -20,7 +20,7 @@ package org.apache.isis.viewer.wicket.model.mementos;
 
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
 public final class SpecUtils {
@@ -37,7 +37,7 @@ public final class SpecUtils {
         return getSpecificationLoader().loadSpecification(objectSpecId.asString());
     }
 
-    protected static SpecificationLoaderSpi getSpecificationLoader() {
+    protected static SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index d47b532..50ad207 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -46,7 +46,7 @@ import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -518,7 +518,7 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
         return IsisContext.getPersistenceSession();
     }
 
-    private static SpecificationLoaderSpi getSpecificationLoaderStatic() {
+    private static SpecificationLoader getSpecificationLoaderStatic() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index ec180d2..5818cb7 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.common.PageParametersUtils;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
@@ -635,7 +635,7 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
 		return IsisContext.getOidMarshaller();
 	}
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
index c9429b5..c981222 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
@@ -22,7 +22,7 @@ package org.apache.isis.viewer.wicket.ui.components.bookmarkedpages;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.models.BookmarkTreeNode;
@@ -232,7 +232,7 @@ public class BookmarkedPagesPanel extends PanelAbstract<BookmarkedPagesModel> {
     }
 
     
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 30197af..cd0eff9 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -61,7 +61,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.MessageBroker;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.model.common.PageParametersUtils;
@@ -437,7 +437,7 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
         return IsisContext.getPersistenceSession();
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
     

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/ObjectResolveAndObjectChangedEnhancer.java
----------------------------------------------------------------------
diff --git a/mothballed/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/ObjectResolveAndObjectChangedEnhancer.java b/mothballed/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/ObjectResolveAndObjectChangedEnhancer.java
index a4ee0a6..86814a6 100644
--- a/mothballed/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/ObjectResolveAndObjectChangedEnhancer.java
+++ b/mothballed/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/ObjectResolveAndObjectChangedEnhancer.java
@@ -31,7 +31,7 @@ import net.sf.cglib.proxy.MethodProxy;
 import org.apache.isis.core.commons.lang.ArrayExtensions;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.ImperativeFacetUtils;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.CglibEnhanced;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
@@ -48,7 +48,7 @@ public class ObjectResolveAndObjectChangedEnhancer extends ObjectResolveAndObjec
      */
     private final Map<Class<?>, Enhancer> enhancerByClass = new HashMap<Class<?>, Enhancer>();
 
-    public ObjectResolveAndObjectChangedEnhancer(final ObjectResolver objectResolver, final ObjectChanger objectChanger, final SpecificationLoaderSpi specificationLoader) {
+    public ObjectResolveAndObjectChangedEnhancer(final ObjectResolver objectResolver, final ObjectChanger objectChanger, final SpecificationLoader specificationLoader) {
         super(objectResolver, objectChanger, specificationLoader);
 
         createCallback();

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/bytecode-cglib/src/test/java/org/apache/isis/core/bytecode/cglib/ClassEnhancerTest.java
----------------------------------------------------------------------
diff --git a/mothballed/bytecode-cglib/src/test/java/org/apache/isis/core/bytecode/cglib/ClassEnhancerTest.java b/mothballed/bytecode-cglib/src/test/java/org/apache/isis/core/bytecode/cglib/ClassEnhancerTest.java
index 0c541bba..23b98cb 100644
--- a/mothballed/bytecode-cglib/src/test/java/org/apache/isis/core/bytecode/cglib/ClassEnhancerTest.java
+++ b/mothballed/bytecode-cglib/src/test/java/org/apache/isis/core/bytecode/cglib/ClassEnhancerTest.java
@@ -36,7 +36,7 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.objectfactory.ObjectChanger;
 import org.apache.isis.core.runtime.persistence.objectfactory.ObjectResolver;
 
@@ -48,7 +48,7 @@ public class ClassEnhancerTest {
     private ObjectResolveAndObjectChangedEnhancer classEnhancer;
     private ObjectResolver mockObjectResolver;
     private ObjectChanger mockObjectChanger;
-    private SpecificationLoaderSpi mockSpecificationLoader;
+    private SpecificationLoader mockSpecificationLoader;
 
     private SomeDomainObject sdo;
 
@@ -56,7 +56,7 @@ public class ClassEnhancerTest {
     public void setUp() {
         mockObjectResolver = mockery.mock(ObjectResolver.class);
         mockObjectChanger = mockery.mock(ObjectChanger.class);
-        mockSpecificationLoader = mockery.mock(SpecificationLoaderSpi.class);
+        mockSpecificationLoader = mockery.mock(SpecificationLoader.class);
 
         classEnhancer = new ObjectResolveAndObjectChangedEnhancer(mockObjectResolver, mockObjectChanger, mockSpecificationLoader);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/ObjectResolveAndObjectChangedEnhancer.java
----------------------------------------------------------------------
diff --git a/mothballed/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/ObjectResolveAndObjectChangedEnhancer.java b/mothballed/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/ObjectResolveAndObjectChangedEnhancer.java
index b1103b0..fb033a9 100644
--- a/mothballed/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/ObjectResolveAndObjectChangedEnhancer.java
+++ b/mothballed/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/ObjectResolveAndObjectChangedEnhancer.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.lang.ArrayExtensions;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.ImperativeFacetUtils;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
 import org.apache.isis.core.runtime.bytecode.ObjectResolveAndObjectChangedEnhancerAbstract;
@@ -41,7 +41,7 @@ public class ObjectResolveAndObjectChangedEnhancer extends ObjectResolveAndObjec
 
     private MethodHandler methodHandler;
 
-    public ObjectResolveAndObjectChangedEnhancer(final ObjectResolver objectResolver, final ObjectChanger objectChanger, final SpecificationLoaderSpi specificationLoader) {
+    public ObjectResolveAndObjectChangedEnhancer(final ObjectResolver objectResolver, final ObjectChanger objectChanger, final SpecificationLoader specificationLoader) {
         super(objectResolver, objectChanger, specificationLoader);
 
         createCallback();

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/objectstore/nosql/src/main/java/org/apache/isis/objectstore/nosql/ObjectReader.java
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/nosql/src/main/java/org/apache/isis/objectstore/nosql/ObjectReader.java b/mothballed/component/objectstore/nosql/src/main/java/org/apache/isis/objectstore/nosql/ObjectReader.java
index cf43bff..03ea9d9 100644
--- a/mothballed/component/objectstore/nosql/src/main/java/org/apache/isis/objectstore/nosql/ObjectReader.java
+++ b/mothballed/component/objectstore/nosql/src/main/java/org/apache/isis/objectstore/nosql/ObjectReader.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationContainer;
@@ -241,7 +241,7 @@ public class ObjectReader {
         return getPersistenceSession().getAdapterManager();
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/objectstore/nosql/src/main/java/org/apache/isis/objectstore/nosql/keys/KeyCreatorDefault.java
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/nosql/src/main/java/org/apache/isis/objectstore/nosql/keys/KeyCreatorDefault.java b/mothballed/component/objectstore/nosql/src/main/java/org/apache/isis/objectstore/nosql/keys/KeyCreatorDefault.java
index 8605e19..b3fb21e 100644
--- a/mothballed/component/objectstore/nosql/src/main/java/org/apache/isis/objectstore/nosql/keys/KeyCreatorDefault.java
+++ b/mothballed/component/objectstore/nosql/src/main/java/org/apache/isis/objectstore/nosql/keys/KeyCreatorDefault.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
 import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.objectstore.nosql.NoSqlStoreException;
 
@@ -87,7 +87,7 @@ public class KeyCreatorDefault {
     /////////////////////////////////////////////////
     
     
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/NoSqlIdentifierGeneratorTest.java
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/NoSqlIdentifierGeneratorTest.java b/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/NoSqlIdentifierGeneratorTest.java
index bad4876..9b2a553 100644
--- a/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/NoSqlIdentifierGeneratorTest.java
+++ b/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/NoSqlIdentifierGeneratorTest.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.persistence.IdentifierGenerator;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
@@ -48,7 +48,7 @@ public class NoSqlIdentifierGeneratorTest {
     @Mock
     private NoSqlDataDatabase db;
     @Mock
-    private SpecificationLoaderSpi mockSpecificationLoader;
+    private SpecificationLoader mockSpecificationLoader;
     @Mock
     private ObjectSpecification mockSpecification;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/NoSqlKeyCreatorTest.java
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/NoSqlKeyCreatorTest.java b/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/NoSqlKeyCreatorTest.java
index dd231c1..410f483 100644
--- a/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/NoSqlKeyCreatorTest.java
+++ b/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/NoSqlKeyCreatorTest.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
 import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.objectstore.nosql.keys.KeyCreatorDefault;
@@ -46,7 +46,7 @@ public class NoSqlKeyCreatorTest {
     @Mock
     private OidMarshaller mockOidMarshaller;
     @Mock
-    private SpecificationLoaderSpi mockSpecificationLoader;
+    private SpecificationLoader mockSpecificationLoader;
     @Mock
     private ObjectSpecification mockSpecification;
 
@@ -64,7 +64,7 @@ public class NoSqlKeyCreatorTest {
                 return mockOidMarshaller;
             }
             @Override
-            protected SpecificationLoaderSpi getSpecificationLoader() {
+            protected SpecificationLoader getSpecificationLoader() {
                 return mockSpecificationLoader;
             }
         };


[23/30] isis git commit: ISIS-1409: internal components of RuntimeContext subclasses are now internal domain services; RuntimeContext hierarchy collapsed into a single class.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/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
deleted file mode 100644
index 36aba77..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
+++ /dev/null
@@ -1,241 +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.runtimecontext.noruntime;
-
-import java.util.List;
-
-import org.apache.isis.applib.profiles.Localization;
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService2;
-import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.runtimecontext.LocalizationDefault;
-import org.apache.isis.core.metamodel.runtimecontext.LocalizationProvider;
-import org.apache.isis.core.metamodel.runtimecontext.LocalizationProviderAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerServiceAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-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;
-
-public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
-
-    private final PersistenceSessionServiceAbstract persistenceSessionService;
-    private final LocalizationProviderAbstract localizationProvider;
-    private final MessageBrokerServiceAbstract messageBrokerService;
-
-    public RuntimeContextNoRuntime(
-            final ServicesInjector servicesInjector,
-            final SpecificationLoader specificationLoader) {
-        this(new IsisConfigurationDefault(null), servicesInjector, specificationLoader);
-    }
-
-    public RuntimeContextNoRuntime(
-            final IsisConfigurationDefault isisConfiguration,
-            final ServicesInjector servicesInjector,
-            final SpecificationLoader specificationLoader) {
-        super(servicesInjector, specificationLoader);
-        persistenceSessionService = new PersistenceSessionServiceAbstract() {
-
-            @Override
-            public void injectInto(final Object candidate) {
-                if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
-                    final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
-                    cast.setAdapterManager(this);
-                }
-            }
-
-            @Override
-            public ObjectAdapter getAdapterFor(final Object pojo) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public ObjectAdapter adapterFor(final Object pojo, final ObjectAdapter ownerAdapter, final OneToManyAssociation collection) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public ObjectAdapter mapRecreatedPojo(Oid oid, Object recreatedPojo) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public void removeAdapter(ObjectAdapter adapter) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public ObjectAdapter adapterFor(final Object domainObject) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public ObjectAdapter getAdapterFor(Oid oid) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public ObjectAdapter createTransientInstance(final ObjectSpecification spec) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public ObjectAdapter createViewModelInstance(ObjectSpecification spec, String memento) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public Object lookup(
-                    final Bookmark bookmark,
-                    final BookmarkService2.FieldResetPolicy fieldResetPolicy) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public Bookmark bookmarkFor(Object domainObject) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public Bookmark bookmarkFor(Class<?> cls, String identifier) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-
-            @Override
-            public void resolve(final Object parent, final Object field) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public void resolve(final Object parent) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public void beginTran() {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public boolean flush() {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public void commit() {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public void remove(final ObjectAdapter adapter) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public void makePersistent(final ObjectAdapter adapter) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public <T> ObjectAdapter firstMatchingQuery(final Query<T> query) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public <T> List<ObjectAdapter> allMatchingQuery(final Query<T> query) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-        };
-        localizationProvider = new LocalizationProviderAbstract() {
-
-            private final Localization defaultLocalization = new LocalizationDefault();
-
-            @Override
-            public Localization getLocalization() {
-                return defaultLocalization;
-            }
-        };
-        messageBrokerService = new MessageBrokerServiceAbstract() {
-
-            @Override
-            public void informUser(final String message) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public void warnUser(final String message) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-            @Override
-            public void raiseError(final String message) {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-
-
-        };
-    }
-
-    // ///////////////////////////////////////////
-    // Components
-    // ///////////////////////////////////////////
-
-
-    @Override
-    public TransactionStateProvider getTransactionStateProvider() {
-        return new TransactionStateProviderAbstract() {
-            @Override
-            public TransactionState getTransactionState() {
-                throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
-            }
-        };
-    }
-
-
-    @Override
-    public PersistenceSessionService getPersistenceSessionService() {
-        return persistenceSessionService;
-    }
-
-    @Override
-    public MessageBrokerService getMessageBrokerService() {
-        return messageBrokerService;
-    }
-
-    @Override
-    public LocalizationProvider getLocalizationProvider() {
-        return localizationProvider;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
index 7ae5213..5584c57 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
@@ -25,8 +25,8 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkHolder;
 import org.apache.isis.applib.services.bookmark.BookmarkService2;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 
 /**
@@ -43,7 +43,7 @@ import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 public class BookmarkServiceDefault implements BookmarkService2,
         PersistenceSessionServiceAware {
 
-    private PersistenceSessionService persistenceSessionService;
+    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     // //////////////////////////////////////
 
@@ -73,7 +73,7 @@ public class BookmarkServiceDefault implements BookmarkService2,
             return null;
         }
         try {
-            return persistenceSessionService.lookup(bookmark, fieldResetPolicy);
+            return persistenceSessionServiceInternal.lookup(bookmark, fieldResetPolicy);
         } catch(ObjectNotFoundException ex) {
             return null;
         }
@@ -112,7 +112,7 @@ public class BookmarkServiceDefault implements BookmarkService2,
         if(domainObject == null) {
             return null;
         }
-        return persistenceSessionService.bookmarkFor(unwrapped(domainObject));
+        return persistenceSessionServiceInternal.bookmarkFor(unwrapped(domainObject));
     }
 
     private Object unwrapped(Object domainObject) {
@@ -124,7 +124,7 @@ public class BookmarkServiceDefault implements BookmarkService2,
     @Programmatic
     @Override
     public Bookmark bookmarkFor(Class<?> cls, String identifier) {
-        return persistenceSessionService.bookmarkFor(cls, identifier);
+        return persistenceSessionServiceInternal.bookmarkFor(cls, identifier);
     }
 
     // //////////////////////////////////////
@@ -133,8 +133,8 @@ public class BookmarkServiceDefault implements BookmarkService2,
 
 
     @Override
-    public void setPersistenceSessionService(final PersistenceSessionService persistenceSessionService) {
-        this.persistenceSessionService = persistenceSessionService;
+    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/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 adb18a1..424bd78 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
@@ -60,8 +60,8 @@ import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -649,7 +649,7 @@ public class DomainObjectContainerDefault
 
     //region > framework dependencies
 
-    private PersistenceSessionService persistenceSessionService;
+    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
     private AdapterManager adapterManager;
 
 
@@ -664,14 +664,14 @@ public class DomainObjectContainerDefault
         this.adapterManager = adapterManager;
     }
 
-    protected PersistenceSessionService getPersistenceSessionService() {
-        return persistenceSessionService;
+    protected PersistenceSessionServiceInternal getPersistenceSessionService() {
+        return persistenceSessionServiceInternal;
     }
 
     @Programmatic
     @Override
-    public void setPersistenceSessionService(final PersistenceSessionService persistenceSessionService) {
-        this.persistenceSessionService = persistenceSessionService;
+    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
index a72d43e..ae64445 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
@@ -32,8 +32,8 @@ import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
@@ -56,7 +56,7 @@ public class FactoryServiceDefault implements FactoryService, PersistenceSession
      * Factored out as a potential hook method for subclasses.
      */
     protected ObjectAdapter doCreateTransientInstance(final ObjectSpecification spec) {
-        return persistenceSessionService.createTransientInstance(spec);
+        return persistenceSessionServiceInternal.createTransientInstance(spec);
     }
 
 
@@ -96,11 +96,11 @@ public class FactoryServiceDefault implements FactoryService, PersistenceSession
     @Inject
     ServiceRegistry serviceRegistry;
 
-    private PersistenceSessionService persistenceSessionService;
+    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
     @Override
-    public void setPersistenceSessionService(final PersistenceSessionService persistenceSessionService) {
+    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
 
-        this.persistenceSessionService = persistenceSessionService;
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationDefault.java
new file mode 100644
index 0000000..018103b
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationDefault.java
@@ -0,0 +1,38 @@
+/*
+ *  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.services.l10n;
+
+import java.util.Locale;
+import java.util.TimeZone;
+
+import org.apache.isis.applib.profiles.Localization;
+
+public final class LocalizationDefault implements Localization {
+
+    @Override
+    public Locale getLocale() {
+        return Locale.getDefault();
+    }
+
+    @Override
+    public TimeZone getTimeZone() {
+        return TimeZone.getDefault();
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderAware.java
new file mode 100644
index 0000000..1282f1f
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderAware.java
@@ -0,0 +1,26 @@
+/*
+ *  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.services.l10n;
+
+public interface LocalizationProviderAware {
+
+    void setLocalizationProvider(LocalizationProviderInternal localizationProviderInternal);
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternal.java
new file mode 100644
index 0000000..d841bd5
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternal.java
@@ -0,0 +1,33 @@
+/*
+ *  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.services.l10n;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.profiles.Localization;
+
+public interface LocalizationProviderInternal {
+
+    @Programmatic
+    void injectInto(final Object candidate);
+
+    @Programmatic
+    Localization getLocalization();
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalAbstract.java
new file mode 100644
index 0000000..470e13f
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalAbstract.java
@@ -0,0 +1,29 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.isis.core.metamodel.services.l10n;
+
+public abstract class LocalizationProviderInternalAbstract implements LocalizationProviderInternal {
+
+    @Override
+    public void injectInto(final Object candidate) {
+        if (LocalizationProviderAware.class.isAssignableFrom(candidate.getClass())) {
+            final LocalizationProviderAware cast = LocalizationProviderAware.class.cast(candidate);
+            cast.setLocalizationProvider(this);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalNoop.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalNoop.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalNoop.java
new file mode 100644
index 0000000..bc5b0a4
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/l10n/LocalizationProviderInternalNoop.java
@@ -0,0 +1,16 @@
+package org.apache.isis.core.metamodel.services.l10n;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.profiles.Localization;
+
+@DomainService(nature = NatureOfService.DOMAIN)
+public class LocalizationProviderInternalNoop extends LocalizationProviderInternalAbstract {
+
+    private final Localization defaultLocalization = new LocalizationDefault();
+
+    @Override
+    public Localization getLocalization() {
+        return defaultLocalization;
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceDefault.java
index a96c88a..7b14c3d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceDefault.java
@@ -25,8 +25,8 @@ import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerServiceAware;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceAware;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
@@ -36,7 +36,7 @@ public class MessageServiceDefault implements MessageService, MessageBrokerServi
     @Programmatic
     @Override
     public void informUser(final String message) {
-        messageBrokerService.informUser(message);
+        messageBrokerServiceInternal.informUser(message);
     }
 
     @Override
@@ -47,7 +47,7 @@ public class MessageServiceDefault implements MessageService, MessageBrokerServi
     @Programmatic
     @Override
     public void warnUser(final String message) {
-        messageBrokerService.warnUser(message);
+        messageBrokerServiceInternal.warnUser(message);
     }
 
     @Override
@@ -58,13 +58,13 @@ public class MessageServiceDefault implements MessageService, MessageBrokerServi
     @Programmatic
     @Override
     public void raiseError(final String message) {
-        messageBrokerService.raiseError(message);
+        messageBrokerServiceInternal.raiseError(message);
     }
 
     @Override
     public String raiseError(final TranslatableString message, final Class<?> contextClass, final String contextMethod) {
         final String translatedMessage = message.translate(translationService, context(contextClass, contextMethod));
-        messageBrokerService.raiseError(translatedMessage);
+        messageBrokerServiceInternal.raiseError(translatedMessage);
         return translatedMessage;
     }
 
@@ -74,11 +74,11 @@ public class MessageServiceDefault implements MessageService, MessageBrokerServi
 
 
 
-    private MessageBrokerService messageBrokerService;
+    private MessageBrokerServiceInternal messageBrokerServiceInternal;
 
     @Override
-    public void setMessageBrokerService(final MessageBrokerService messageBrokerService) {
-        this.messageBrokerService = messageBrokerService;
+    public void setMessageBrokerService(final MessageBrokerServiceInternal messageBrokerServiceInternal) {
+        this.messageBrokerServiceInternal = messageBrokerServiceInternal;
     }
 
     @javax.inject.Inject

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceAware.java
new file mode 100644
index 0000000..2443150
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceAware.java
@@ -0,0 +1,26 @@
+/*
+ *  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.services.msgbroker;
+
+public interface MessageBrokerServiceAware {
+
+    public void setMessageBrokerService(final MessageBrokerServiceInternal messageBrokerServiceInternal);
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternal.java
new file mode 100644
index 0000000..c7d2751
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternal.java
@@ -0,0 +1,54 @@
+/**
+ *  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.services.msgbroker;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+public interface MessageBrokerServiceInternal {
+
+    @Programmatic
+    void injectInto(final Object candidate);
+
+    /**
+     * Provided by <tt>MessageBroker</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt>.
+     */
+    @Programmatic
+    void informUser(String message);
+
+    /**
+     * Provided by <tt>MessageBroker</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt>.
+     */
+    @Programmatic
+    void warnUser(String message);
+
+    /**
+     * Provided by <tt>MessageBroker</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt>.
+     */
+    @Programmatic
+    void raiseError(String message);
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalAbstract.java
new file mode 100644
index 0000000..1f81bfa
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalAbstract.java
@@ -0,0 +1,29 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.isis.core.metamodel.services.msgbroker;
+
+public abstract class MessageBrokerServiceInternalAbstract implements MessageBrokerServiceInternal {
+
+    @Override
+    public void injectInto(final Object candidate) {
+        if (MessageBrokerServiceAware.class.isAssignableFrom(candidate.getClass())) {
+            final MessageBrokerServiceAware cast = MessageBrokerServiceAware.class.cast(candidate);
+            cast.setMessageBrokerService(this);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalNoop.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalNoop.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalNoop.java
new file mode 100644
index 0000000..093e0f3
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/msgbroker/MessageBrokerServiceInternalNoop.java
@@ -0,0 +1,24 @@
+package org.apache.isis.core.metamodel.services.msgbroker;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+
+@DomainService(nature = NatureOfService.DOMAIN)
+public class MessageBrokerServiceInternalNoop extends MessageBrokerServiceInternalAbstract {
+
+    @Override
+    public void informUser(final String message) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public void warnUser(final String message) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public void raiseError(final String message) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceAware.java
new file mode 100644
index 0000000..29d939a
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceAware.java
@@ -0,0 +1,29 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.core.metamodel.services.persistsession;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+public interface PersistenceSessionServiceAware {
+
+    @Programmatic
+    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal);
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
new file mode 100644
index 0000000..a00d2ee
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
@@ -0,0 +1,160 @@
+/**
+ *  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.services.persistsession;
+
+import java.util.List;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.query.Query;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService2;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+
+public interface PersistenceSessionServiceInternal extends AdapterManager {
+
+    @Programmatic
+    void injectInto(final Object candidate);
+
+    //region > instantiate
+
+    /**
+     * Provided by the <tt>PersistenceSession</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt>.
+     */
+    @Programmatic
+    ObjectAdapter createTransientInstance(ObjectSpecification spec);
+
+    @Programmatic
+    ObjectAdapter createViewModelInstance(ObjectSpecification spec, String memento);
+
+    //endregion
+
+    //region > retrieve
+
+    /**
+     * Provided by <tt>PersistenceSession</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt>.
+     */
+    @Programmatic
+    void resolve(Object parent);
+
+    /**
+     * Provided by <tt>PersistenceSession</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt>.
+     */
+    @Programmatic
+    void resolve(Object parent, Object field);
+
+    /**
+     * Provided by <tt>PersistenceSession</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>BookmarkServicesDefault</tt>.
+     * @return
+     */
+    @Programmatic
+    Object lookup(Bookmark bookmark, final BookmarkService2.FieldResetPolicy fieldResetPolicy);
+
+    @Programmatic
+    Bookmark bookmarkFor(Object domainObject);
+
+    @Programmatic
+    Bookmark bookmarkFor(Class<?> cls, String identifier);
+
+    //endregion
+
+    //region > beginTran, flush, commit
+
+    @Programmatic
+    void beginTran();
+
+    /**
+     * Provided by <tt>TransactionManager</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt>.
+     */
+    @Programmatic
+    boolean flush();
+
+    /**
+     * Provided by <tt>TransactionManager</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt>.
+     */
+    @Programmatic
+    void commit();
+
+
+    //endregion
+
+    //region > makePersistent, remove
+
+    /**
+     * Provided by the <tt>PersistenceSession</tt> when used by framework.
+     * 
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt> and also by
+     * <tt>DomainObjectInvocationHandler#handleSaveMethod()</tt>.
+     */
+    @Programmatic
+    void makePersistent(ObjectAdapter adapter);
+
+    /**
+     * Provided by <tt>UpdateNotifier</tt> and <tt>PersistenceSession</tt> when
+     * used by framework.
+     * 
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt>.
+     */
+    @Programmatic
+    void remove(ObjectAdapter adapter);
+
+    //endregion
+
+    //region > allMatchingQuery, firstMatchingQuery
+    /**
+     * Provided by <tt>PersistenceSession</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt> and also by the choices
+     * facets.
+     */
+    @Programmatic
+    <T> List<ObjectAdapter> allMatchingQuery(Query<T> query);
+
+    /**
+     * Provided by <tt>PersistenceSession</tt> when used by framework.
+     *
+     * <p>
+     * Called by <tt>DomainObjectContainerDefault</tt>.
+     */
+    @Programmatic
+    <T> ObjectAdapter firstMatchingQuery(Query<T> query);
+
+    //endregion
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java
new file mode 100644
index 0000000..60714af
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalAbstract.java
@@ -0,0 +1,35 @@
+/**
+ *  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.services.persistsession;
+
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
+
+public abstract class PersistenceSessionServiceInternalAbstract implements PersistenceSessionServiceInternal {
+
+    @Override
+    public void injectInto(final Object candidate) {
+        if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
+            final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
+            cast.setAdapterManager(this);
+        }
+        if (PersistenceSessionServiceAware.class.isAssignableFrom(candidate.getClass())) {
+            final PersistenceSessionServiceAware cast = PersistenceSessionServiceAware.class.cast(candidate);
+            cast.setPersistenceSessionService(this);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java
new file mode 100644
index 0000000..63792ba
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java
@@ -0,0 +1,132 @@
+package org.apache.isis.core.metamodel.services.persistsession;
+
+import java.util.List;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.query.Query;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService2;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
+import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+
+@DomainService(nature = NatureOfService.DOMAIN)
+public class PersistenceSessionServiceInternalNoop extends PersistenceSessionServiceInternalAbstract {
+
+    @Override
+    public void injectInto(final Object candidate) {
+        if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
+            final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
+            cast.setAdapterManager(this);
+        }
+    }
+
+    @Override
+    public ObjectAdapter getAdapterFor(final Object pojo) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public ObjectAdapter adapterFor(
+            final Object pojo,
+            final ObjectAdapter ownerAdapter,
+            final OneToManyAssociation collection) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public ObjectAdapter mapRecreatedPojo(Oid oid, Object recreatedPojo) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public void removeAdapter(ObjectAdapter adapter) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public ObjectAdapter adapterFor(final Object domainObject) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public ObjectAdapter getAdapterFor(Oid oid) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public ObjectAdapter createTransientInstance(final ObjectSpecification spec) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public ObjectAdapter createViewModelInstance(ObjectSpecification spec, String memento) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public Object lookup(
+            final Bookmark bookmark,
+            final BookmarkService2.FieldResetPolicy fieldResetPolicy) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public Bookmark bookmarkFor(Object domainObject) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public Bookmark bookmarkFor(Class<?> cls, String identifier) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public void resolve(final Object parent, final Object field) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public void resolve(final Object parent) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public void beginTran() {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public boolean flush() {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public void commit() {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public void remove(final ObjectAdapter adapter) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public void makePersistent(final ObjectAdapter adapter) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public <T> ObjectAdapter firstMatchingQuery(final Query<T> query) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+    @Override
+    public <T> List<ObjectAdapter> allMatchingQuery(final Query<T> query) {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefault.java
index 5d9ed76..966bdef 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceDefault.java
@@ -41,8 +41,8 @@ import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
@@ -98,7 +98,7 @@ public class RepositoryServiceDefault
         if (isPersistent(object)) {
             throw new PersistFailedException("Object already persistent; OID=" + adapter.getOid());
         }
-        persistenceSessionService.makePersistent(adapter);
+        persistenceSessionServiceInternal.makePersistent(adapter);
     }
     
     @Programmatic
@@ -126,7 +126,7 @@ public class RepositoryServiceDefault
             throw new RepositoryException("Object not persistent: " + adapter);
         }
 
-        persistenceSessionService.remove(adapter);
+        persistenceSessionServiceInternal.remove(adapter);
     }
     
     @Override
@@ -174,7 +174,7 @@ public class RepositoryServiceDefault
     }
 
     <T> List<T> submitQuery(final Query<T> query) {
-        final List<ObjectAdapter> allMatching = persistenceSessionService.allMatchingQuery(query);
+        final List<ObjectAdapter> allMatching = persistenceSessionServiceInternal.allMatchingQuery(query);
         return ObjectAdapter.Util.unwrapT(allMatching);
     }
 
@@ -227,7 +227,7 @@ public class RepositoryServiceDefault
         if(autoFlush) {
             transactionService.flushTransaction();
         }
-        final ObjectAdapter firstMatching = persistenceSessionService.firstMatchingQuery(query);
+        final ObjectAdapter firstMatching = persistenceSessionServiceInternal.firstMatchingQuery(query);
         return (T) ObjectAdapter.Util.unwrap(firstMatching);
     }
 
@@ -254,11 +254,11 @@ public class RepositoryServiceDefault
     @javax.inject.Inject
     TransactionService transactionService;
 
-    private PersistenceSessionService persistenceSessionService;
+    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
     @Override
-    public void setPersistenceSessionService(final PersistenceSessionService persistenceSessionService) {
+    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
 
-        this.persistenceSessionService = persistenceSessionService;
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
 
     private AdapterManager adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
index ce456d8..bb61ca1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
@@ -27,8 +27,8 @@ import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.runtimecontext.LocalizationProvider;
-import org.apache.isis.core.metamodel.runtimecontext.LocalizationProviderAware;
+import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
+import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderAware;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
@@ -42,7 +42,7 @@ public class TitleServiceDefault
         final ObjectAdapter objectAdapter = adapterManager.adapterFor(unwrapped(domainObject));
         final boolean destroyed = objectAdapter.isDestroyed();
         if(!destroyed) {
-            return objectAdapter.getSpecification().getTitle(objectAdapter, localizationProvider.getLocalization());
+            return objectAdapter.getSpecification().getTitle(objectAdapter, localizationProviderInternal.getLocalization());
         } else {
             return "[DELETED]";
         }
@@ -78,10 +78,10 @@ public class TitleServiceDefault
         this.adapterManager = adapterManager;
     }
 
-    private LocalizationProvider localizationProvider;
+    private LocalizationProviderInternal localizationProviderInternal;
     @Override
-    public void setLocalizationProvider(final LocalizationProvider localizationProvider) {
-        this.localizationProvider = localizationProvider;
+    public void setLocalizationProvider(final LocalizationProviderInternal localizationProviderInternal) {
+        this.localizationProviderInternal = localizationProviderInternal;
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternal.java
new file mode 100644
index 0000000..a3f88d6
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternal.java
@@ -0,0 +1,32 @@
+/*
+ *  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.services.transtate;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.core.metamodel.transactions.TransactionState;
+
+public interface TransactionStateProviderInternal {
+
+    @Programmatic
+    void injectInto(final Object candidate);
+
+    @Programmatic TransactionState getTransactionState();
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalAbstract.java
new file mode 100644
index 0000000..bd95173
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalAbstract.java
@@ -0,0 +1,31 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.isis.core.metamodel.services.transtate;
+
+import org.apache.isis.core.metamodel.transactions.TransactionStateProviderAware;
+
+public abstract class TransactionStateProviderInternalAbstract implements TransactionStateProviderInternal {
+
+    @Override
+    public void injectInto(final Object candidate) {
+        if (TransactionStateProviderAware.class.isAssignableFrom(candidate.getClass())) {
+            final TransactionStateProviderAware cast = TransactionStateProviderAware.class.cast(candidate);
+            cast.setTransactionStateProvider(this);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalNoop.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalNoop.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalNoop.java
new file mode 100644
index 0000000..dd09e5e
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/transtate/TransactionStateProviderInternalNoop.java
@@ -0,0 +1,13 @@
+package org.apache.isis.core.metamodel.services.transtate;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.core.metamodel.transactions.TransactionState;
+
+@DomainService(nature = NatureOfService.DOMAIN)
+public class TransactionStateProviderInternalNoop extends TransactionStateProviderInternalAbstract {
+    @Override
+    public TransactionState getTransactionState() {
+        throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceDefault.java
index 1a6f878..92be34f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/xactn/TransactionServiceDefault.java
@@ -22,8 +22,8 @@ package org.apache.isis.core.metamodel.services.xactn;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 
 @DomainService(
         nature = NatureOfService.DOMAIN
@@ -33,19 +33,19 @@ public class TransactionServiceDefault implements TransactionService, Persistenc
 
     @Override
     public void flushTransaction() {
-        persistenceSessionService.flush();
+        persistenceSessionServiceInternal.flush();
     }
 
     @Override
     public void nextTransaction() {
-        persistenceSessionService.commit();
-        persistenceSessionService.beginTran();
+        persistenceSessionServiceInternal.commit();
+        persistenceSessionServiceInternal.beginTran();
     }
 
-    private PersistenceSessionService persistenceSessionService;
+    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
     @Override
-    public void setPersistenceSessionService(final PersistenceSessionService persistenceSessionService) {
+    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
 
-        this.persistenceSessionService = persistenceSessionService;
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/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 178cf50..79e8e4f 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
@@ -16,7 +16,7 @@
  */
 package org.apache.isis.core.metamodel.spec.feature;
 
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
@@ -24,17 +24,17 @@ public class ObjectMemberDependencies {
 
     private final SpecificationLoader specificationLoader;
     private final ServicesInjector servicesInjector;
-    private final PersistenceSessionService persistenceSessionService;
+    private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     public ObjectMemberDependencies(
             final SpecificationLoader specificationLoader,
             final ServicesInjector servicesInjector,
-            final PersistenceSessionService persistenceSessionService) {
+            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
 
         this.specificationLoader = specificationLoader;
 
         this.servicesInjector = servicesInjector;
-        this.persistenceSessionService = persistenceSessionService;
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
 
     public SpecificationLoader getSpecificationLoader() {
@@ -45,7 +45,7 @@ public class ObjectMemberDependencies {
         return servicesInjector;
     }
     
-    public PersistenceSessionService getPersistenceSessionService() {
-        return persistenceSessionService;
+    public PersistenceSessionServiceInternal getPersistenceSessionService() {
+        return persistenceSessionServiceInternal;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index a92cf0a..683f041 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -38,7 +38,6 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 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.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
@@ -46,11 +45,9 @@ import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFac
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.services.ServicesInjectorAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -90,19 +87,6 @@ import static org.hamcrest.Matchers.notNullValue;
  * </p>
  *
  * <p>
- * In addition, the {@link RuntimeContext} can optionally be injected, but will
- * default to {@link RuntimeContextNoRuntime} if not provided prior to
- * {@link SpecificationLoader#init(RuntimeContext) initialization}. The purpose of {@link RuntimeContext} is to
- * allow the metamodel to be used standalone, for example in a Maven plugin. The
- * {@link RuntimeContextNoRuntime} implementation will through an exception for
- * any methods (such as finding an {@link ObjectAdapter adapter}) because there
- * is no runtime session. In the case of the metamodel being used by the
- * framework (that is, when there <i>is</i> a runtime), then the framework
- * injects an implementation of {@link RuntimeContext} that acts like a bridge
- * to its <tt>IsisContext</tt>.
- * </p>
- *
- * <p>
  * Implementing class is added to {@link ServicesInjector} as an (internal) domain service; all public methods
  * must be annotated using {@link Programmatic}.
  * </p>
@@ -162,14 +146,6 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     //region > init
 
-    /**
-     * Can optionally be injected, but will default (to
-     * {@link RuntimeContextNoRuntime}) otherwise.
-     *
-     * <p>
-     * Should be injected when used by framework, but will default to a no-op implementation if the metamodel is
-     * being used standalone (eg for a code-generator).
-     */
     private RuntimeContext runtimeContext;
 
     private boolean initialized = false;
@@ -189,7 +165,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
         // default subcomponents
         if (runtimeContext == null) {
-            this.runtimeContext = new RuntimeContextNoRuntime(servicesInjector, this);
+            this.runtimeContext = new RuntimeContext(servicesInjector);
         }
 
         // wire subcomponents into each other
@@ -448,13 +424,13 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     private ObjectSpecification createSpecification(final Class<?> cls) {
 
         final ServicesInjector servicesInjector = getRuntimeContext().getServicesInjector();
-        final PersistenceSessionService persistenceSessionService = getRuntimeContext().getPersistenceSessionService();
+        final PersistenceSessionServiceInternal persistenceSessionServiceInternal = getRuntimeContext().getPersistenceSessionService();
 
         final ObjectSpecificationDependencies specContext =
                 new ObjectSpecificationDependencies(deploymentCategory, servicesInjector, this, facetProcessor);
 
         final ObjectMemberDependencies objectMemberDependencies =
-                new ObjectMemberDependencies(this, servicesInjector, persistenceSessionService);
+                new ObjectMemberDependencies(this, servicesInjector, persistenceSessionServiceInternal);
 
         // ... and create the specs
         if (FreeStandingList.class.isAssignableFrom(cls)) {
@@ -577,20 +553,4 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     //endregion
 
 
-
-    /**
-     * Injects self into candidate if required, and instructs its subcomponents
-     * to do so also.
-     */
-    @Programmatic
-    public void injectInto(final Object candidate) {
-        final Class<?> candidateClass = candidate.getClass();
-        if (ServicesInjectorAware.class.isAssignableFrom(candidateClass)) {
-            final ServicesInjectorAware cast = ServicesInjectorAware.class.cast(candidate);
-            cast.setServicesInjector(this.servicesInjector);
-        }
-    }
-
-
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
index 2dbd2f0..4556ffb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
@@ -467,11 +467,6 @@ public class FacetProcessor implements RuntimeContextAware {
 
     //region > dependencies
 
-    private IsisConfiguration getIsisConfiguration() {
-        return configuration;
-    }
-
-
     private RuntimeContext getRuntimeContext() {
         return runtimeContext;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 0dd0d1a..10c2c65 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -54,7 +54,7 @@ import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefau
 import org.apache.isis.core.metamodel.interactions.ActionArgValidityContext;
 import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
 import org.apache.isis.core.metamodel.spec.Instance;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -515,7 +515,7 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
         return parentAction.getPersistenceSessionService();
     }
 
-    protected PersistenceSessionService getObjectPersistor() {
+    protected PersistenceSessionServiceInternal getObjectPersistor() {
         return parentAction.getPersistenceSessionService();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/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 bb77b40..ef87934 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
@@ -54,7 +54,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.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -79,7 +79,7 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
     private final FeatureType featureType;
     private final SpecificationLoader specificationLookup;
     private final ServicesInjector servicesInjector;
-    private final PersistenceSessionService persistenceSessionService;
+    private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
     //endregion
 
     protected ObjectMemberAbstract(
@@ -96,7 +96,7 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
 
         this.specificationLookup = objectMemberDependencies.getSpecificationLoader();
         this.servicesInjector = objectMemberDependencies.getServicesInjector();
-        this.persistenceSessionService = objectMemberDependencies.getPersistenceSessionService();
+        this.persistenceSessionServiceInternal = objectMemberDependencies.getPersistenceSessionService();
     }
 
     //region > Identifiers
@@ -384,8 +384,8 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
         return servicesInjector;
     }
 
-    public PersistenceSessionService getPersistenceSessionService() {
-        return persistenceSessionService;
+    public PersistenceSessionServiceInternal getPersistenceSessionService() {
+        return persistenceSessionServiceInternal;
     }
 
     public CollectionTypeRegistry getCollectionTypeRegistry() {

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProvider.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProvider.java
deleted file mode 100644
index 18a2ed5..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProvider.java
+++ /dev/null
@@ -1,27 +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.transactions;
-
-public interface TransactionStateProvider {
-
-    void injectInto(final Object candidate);
-
-    public TransactionState getTransactionState();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAbstract.java
deleted file mode 100644
index 2ba5a9c..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAbstract.java
+++ /dev/null
@@ -1,30 +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.transactions;
-
-public abstract class TransactionStateProviderAbstract implements
-        TransactionStateProvider {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (TransactionStateProviderAware.class.isAssignableFrom(candidate.getClass())) {
-            final TransactionStateProviderAware cast = TransactionStateProviderAware.class.cast(candidate);
-            cast.setTransactionStateProvider(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAware.java
index 2cb551f..61580d7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAware.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/transactions/TransactionStateProviderAware.java
@@ -20,10 +20,11 @@
 package org.apache.isis.core.metamodel.transactions;
 
 import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 
 public interface TransactionStateProviderAware {
 
     @Programmatic
-    public void setTransactionStateProvider(TransactionStateProvider transactionStateProvider);
+    public void setTransactionStateProvider(TransactionStateProviderInternal transactionStateProviderInternal);
 
 }


[13/30] isis git commit: ISIS-1407: removed SpecificationLoaderAware.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 0ca7200..de3114e 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
@@ -83,7 +83,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.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
index 42349d9..407e666 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
@@ -20,13 +20,14 @@
 package org.apache.isis.core.metamodel.specloader.validator;
 
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
-public interface MetaModelValidator extends SpecificationLoaderAware, ApplicationScopedComponent {
+public interface MetaModelValidator extends ApplicationScopedComponent {
 
-    public void init();
-    public void shutdown();
+    void init(final SpecificationLoader specificationLoader);
+    void shutdown();
+
+    void validate(ValidationFailures validationFailures);
 
-    public void validate(ValidationFailures validationFailures);
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
index 1f194db..bde6490 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
@@ -19,40 +19,20 @@
 
 package org.apache.isis.core.metamodel.specloader.validator;
 
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class MetaModelValidatorAbstract implements MetaModelValidator {
 
-    private SpecificationLoader specificationLoaderSpi;
-
-    // ////////////////////////////////////////////////////////////////////
-    // init, shutdown
-    // ////////////////////////////////////////////////////////////////////
+    protected SpecificationLoader specificationLoader;
 
-    public void init() {
-        ensureThatState(specificationLoaderSpi, is(notNullValue()));
+    @Override
+    public void init(final SpecificationLoader specificationLoader) {
+        this.specificationLoader = specificationLoader;
     }
 
+    @Override
     public void shutdown() {
     }
 
-    // ////////////////////////////////////////////////////////////////////
-    // Dependencies (due to *Aware)
-    // ////////////////////////////////////////////////////////////////////
-
-    public SpecificationLoader getSpecificationLoader() {
-        return specificationLoaderSpi;
-    }
-
-    @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLoader) {
-        this.specificationLoaderSpi = specificationLoader;
-    }
 
-    
-    
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
index 99ee00c..cced609 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
@@ -29,12 +29,6 @@ public class MetaModelValidatorComposite extends MetaModelValidatorAbstract {
 
     private final List<MetaModelValidator> validators = Lists.newArrayList();
 
-    @Override
-    public void validate(final ValidationFailures validationFailures)  {
-        for (final MetaModelValidator validator : validators) {
-            validator.validate(validationFailures);
-        }
-    }
 
     public MetaModelValidatorComposite add(final MetaModelValidator validator) {
         validators.add(validator);
@@ -50,14 +44,24 @@ public class MetaModelValidatorComposite extends MetaModelValidatorAbstract {
         return this;
     }
 
+
+    @Override
+    public void init(final SpecificationLoader specificationLoader) {
+        super.init(specificationLoader);
+        for (final MetaModelValidator validator : validators) {
+            validator.init(specificationLoader);
+        }
+    }
+
+
     @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLoader) {
-        super.setSpecificationLoader(specificationLoader);
+    public void validate(final ValidationFailures validationFailures)  {
         for (final MetaModelValidator validator : validators) {
-            validator.setSpecificationLoader(specificationLoader);
+            validator.validate(validationFailures);
         }
     }
 
+
     public static MetaModelValidatorComposite asComposite(final MetaModelValidator baseMetaModelValidator) {
         final MetaModelValidatorComposite metaModelValidatorComposite = new MetaModelValidatorComposite();
         metaModelValidatorComposite.add(baseMetaModelValidator);

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorVisiting.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorVisiting.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorVisiting.java
index c493f33..edbce71 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorVisiting.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorVisiting.java
@@ -25,14 +25,14 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 public final class MetaModelValidatorVisiting extends MetaModelValidatorAbstract {
 
-    public static interface Visitor {
+    public interface Visitor {
         /**
          * @return <tt>true</tt> continue visiting specs.
          */
-        public boolean visit(ObjectSpecification objectSpec, ValidationFailures validationFailures);
+        boolean visit(ObjectSpecification objectSpec, ValidationFailures validationFailures);
     }
-    public static interface SummarizingVisitor extends Visitor {
-        public void summarize(ValidationFailures validationFailures);
+    public interface SummarizingVisitor extends Visitor {
+        void summarize(ValidationFailures validationFailures);
     }
     
     private final Visitor visitor;
@@ -42,7 +42,7 @@ public final class MetaModelValidatorVisiting extends MetaModelValidatorAbstract
         
     @Override
     public final void validate(ValidationFailures validationFailures) {
-        final Collection<ObjectSpecification> objectSpecs = getSpecificationLoader().allSpecifications();
+        final Collection<ObjectSpecification> objectSpecs = specificationLoader.allSpecifications();
         for (final ObjectSpecification objSpec : objectSpecs) {
             if(!visitor.visit(objSpec, validationFailures)) {
                 break;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/AuthenticationManager.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/AuthenticationManager.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/AuthenticationManager.java
index 5c9b067..11de514 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/AuthenticationManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/AuthenticationManager.java
@@ -19,30 +19,44 @@
 
 package org.apache.isis.core.runtime.authentication;
 
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
+/**
+ * Implementing class is added to {@link ServicesInjector} as an (internal) domain service; all public methods
+ * must be annotated using {@link Programmatic}.
+ */
 public interface AuthenticationManager extends ApplicationScopedComponent {
 
-    public void init();
-    public void shutdown();
+    @Programmatic
+    void init();
+
+    @Programmatic
+    void shutdown();
 
     /**
      * Caches and returns an authentication {@link AuthenticationSession} if the
      * {@link AuthenticationRequest request} is valid; otherwise returns
      * <tt>null</tt>.
      */
+    @Programmatic
     AuthenticationSession authenticate(AuthenticationRequest request);
 
+    @Programmatic
     boolean supportsRegistration(Class<? extends RegistrationDetails> registrationDetailsClass);
 
+    @Programmatic
     boolean register(RegistrationDetails registrationDetails);
 
     /**
      * Whether the provided {@link AuthenticationSession} is still valid.
      */
+    @Programmatic
     boolean isSessionValid(AuthenticationSession authenticationSession);
 
+    @Programmatic
     void closeSession(AuthenticationSession authenticationSession);
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticationManagerStandard.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticationManagerStandard.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticationManagerStandard.java
index f682261..3ed3adf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticationManagerStandard.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticationManagerStandard.java
@@ -28,6 +28,7 @@ import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.exceptions.IsisException;
@@ -155,6 +156,7 @@ public class AuthenticationManagerStandard implements AuthenticationManager {
      * Use either this or alternatively {@link #setAuthenticators(List) inject}
      * the full list of {@link Authenticator}s.
      */
+    @Programmatic
     public final void addAuthenticator(final Authenticator authenticator) {
         authenticators.add(authenticator);
     }
@@ -173,10 +175,12 @@ public class AuthenticationManagerStandard implements AuthenticationManager {
      * Use either this or programmatically
      * {@link #addAuthenticator(Authenticator)}.
      */
+    @Programmatic
     public void setAuthenticators(final List<Authenticator> authenticators) {
         this.authenticators = authenticators;
     }
 
+    @Programmatic
     public List<Authenticator> getAuthenticators() {
         return Collections.unmodifiableList(authenticators);
     }
@@ -205,6 +209,7 @@ public class AuthenticationManagerStandard implements AuthenticationManager {
         return false;
     }
 
+    @Programmatic
     public List<Registrar> getRegistrars() {
         return asAuthenticators(getAuthenticators());
     }
@@ -218,17 +223,12 @@ public class AuthenticationManagerStandard implements AuthenticationManager {
     // RandomCodeGenerator
     // //////////////////////////////////////////////////////////
 
-    /**
-     * The {@link RandomCodeGenerator} in use.
-     */
-    public RandomCodeGenerator getRandomCodeGenerator() {
-        return randomCodeGenerator;
-    }
 
     /**
      * For injection; will {@link #defaultRandomCodeGeneratorIfNecessary()
      * default} otherwise.
      */
+    @Programmatic
     public void setRandomCodeGenerator(final RandomCodeGenerator randomCodeGenerator) {
         ensureThatArg(randomCodeGenerator, is(notNullValue()), "randomCodeGenerator cannot be null");
         this.randomCodeGenerator = randomCodeGenerator;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java
index 3679985..e43aba6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java
@@ -20,17 +20,25 @@
 package org.apache.isis.core.runtime.authorization;
 
 import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * Authorises the user in the current session view and use members of an object.
+ *
+ * Implementing class is added to {@link ServicesInjector} as an (internal) domain service; all public methods
+ * must be annotated using {@link Programmatic}.
  */
 public interface AuthorizationManager extends ApplicationScopedComponent {
 
-    public void init();
-    public void shutdown();
+    @Programmatic
+    void init();
+
+    @Programmatic
+    void shutdown();
 
     /**
      * Returns true when the user represented by the specified session is
@@ -38,6 +46,7 @@ public interface AuthorizationManager extends ApplicationScopedComponent {
      * member identifier. Normally the view of the specified field, or the
      * display of the action will be suppress if this returns false.
      */
+    @Programmatic
     boolean isVisible(AuthenticationSession session, ObjectAdapter target, Identifier identifier);
 
     /**
@@ -46,5 +55,6 @@ public interface AuthorizationManager extends ApplicationScopedComponent {
      * Normally the specified field will be not appear editable if this returns
      * false.
      */
+    @Programmatic
     boolean isUsable(AuthenticationSession session, ObjectAdapter target, Identifier identifier);
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManagerAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManagerAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManagerAbstract.java
index 0deee45..bc94643 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManagerAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManagerAbstract.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.runtime.authorization;
 
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 
@@ -34,6 +35,7 @@ public abstract class AuthorizationManagerAbstract implements AuthorizationManag
         this.configuration = configuration;
     }
 
+    @Programmatic
     public IsisConfiguration getConfiguration() {
         return configuration;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java
index 61b0948..ee3a055 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java
@@ -20,6 +20,7 @@
 package org.apache.isis.core.runtime.authorization.standard;
 
 import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
index 462418c5..be088af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
@@ -26,7 +26,7 @@ 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.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 import org.apache.isis.core.objectstore.jdo.applib.annotations.Auditable;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
index fefcecb..274aa94 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
@@ -49,7 +49,7 @@ public final class JavaReflectorHelper  {
             final Collection<MetaModelRefiner> metaModelRefiners,
             final List<LayoutMetadataReader> layoutMetadataReaders,
             final MetaModelValidator mmv,
-            final ServicesInjectorSpi servicesInjector) {
+            final ServicesInjector servicesInjector) {
 
         MetaModelValidatorComposite metaModelValidator = MetaModelValidatorComposite.asComposite(mmv);
         for (MetaModelRefiner metaModelRefiner : metaModelRefiners) {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstaller.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstaller.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstaller.java
index 60c9093..942c299 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstaller.java
@@ -37,10 +37,10 @@ import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.ReflectorConstants;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 
 public class JavaReflectorInstaller extends InstallerAbstract implements SpecificationLoaderInstaller {
@@ -71,7 +71,7 @@ public class JavaReflectorInstaller extends InstallerAbstract implements Specifi
     public SpecificationLoader createReflector(
             final DeploymentCategory deploymentCategory,
             final Collection<MetaModelRefiner> metaModelRefiners,
-            final ServicesInjectorSpi servicesInjector) {
+            final ServicesInjector servicesInjector) {
 
         final ProgrammingModel programmingModel = createProgrammingModel(getConfiguration());
         final MetaModelValidator mmv = createMetaModelValidator(getConfiguration());

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index dd73306..c9b1e92 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -122,6 +122,10 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
 
             allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
             will(returnValue(mockAuthenticationSessionProvider));
+
+            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            will(returnValue(mockSpecificationLoader));
+
         }});
 
         facetHolder = new AbstractFacetFactoryTest.IdentifiedHolderImpl(Identifier.propertyOrCollectionIdentifier(Customer.class, "firstName"));

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index a1514ef..6e8805a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -122,6 +122,9 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
             allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
             will(returnValue(mockAuthenticationSessionProvider));
 
+            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            will(returnValue(mockSpecificationLoader));
+
             allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
             will(returnValue(mockDeploymentCategoryProvider));
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
index cfa7c57..c965186 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
@@ -39,7 +39,6 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.actions.debug.DebugFacet;
 import org.apache.isis.core.metamodel.facets.actions.defaults.ActionDefaultsFacet;
@@ -80,8 +79,9 @@ import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefau
 import org.apache.isis.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod;
 import org.apache.isis.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethodFactory;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.testspec.ObjectSpecificationStub;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
@@ -129,22 +129,23 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
             allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
             will(returnValue(mockDeploymentCategoryProvider));
 
+            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            will(returnValue(mockSpecificationLoader));
+
             allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
             will(returnValue(DeploymentCategory.PRODUCTION));
-        }});
 
-    }
+            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            will(returnValue(mockSpecificationLoader));
 
-    private void injectServicesIntoAndAllowingServiceInjectorLookups(final FacetFactoryAbstract facetFactory) {
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
-        facetFactory.setServicesInjector(mockServicesInjector);
-    }
+        }});
 
+    }
 
     public void testProvidesDefaultNameForActionButIgnoresAnyNamedAnnotation() {
         final ActionNamedDebugExplorationFacetFactory facetFactory = new ActionNamedDebugExplorationFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -170,7 +171,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testPicksUpDebugPrefixAndSetsNameAppropriatelyAlso() {
         final ActionNamedDebugExplorationFacetFactory facetFactory = new ActionNamedDebugExplorationFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -197,7 +198,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testPicksUpExplorationPrefixAndSetsNameAppropriatelyAlso() {
         final ActionNamedDebugExplorationFacetFactory facetFactory = new ActionNamedDebugExplorationFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -224,7 +225,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testCannotHaveBothDebugAndThenExplorationPrefix() {
         final ActionNamedDebugExplorationFacetFactory facetFactory = new ActionNamedDebugExplorationFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -248,7 +249,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testCannotHaveBothExplorationAndThenDebugPrefix() {
         final ActionNamedDebugExplorationFacetFactory facetFactory = new ActionNamedDebugExplorationFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -272,7 +273,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsValidateMethodNoArgsFacetAndRemovesMethod() {
         final ActionValidationFacetViaMethodFactory facetFactory = new ActionValidationFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -304,7 +305,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsValidateMethodSomeArgsFacetAndRemovesMethod() {
         final ActionValidationFacetViaMethodFactory facetFactory = new ActionValidationFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -336,7 +337,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsParameterDefaultsMethodNoArgsFacetAndRemovesMethod() {
         final ActionDefaultsFacetViaMethodFactory facetFactory = new ActionDefaultsFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -368,7 +369,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsParameterDefaultsMethodSomeArgsIsIgnored() {
         final ActionDefaultsFacetViaMethodFactory facetFactory = new ActionDefaultsFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -394,7 +395,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsParameterChoicesMethodNoArgsFacetAndRemovesMethod() {
         final ActionChoicesFacetViaMethodFactory facetFactory = new ActionChoicesFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -425,7 +426,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsParameterChoicesMethodSomeArgsIsIgnored() {
         final ActionChoicesFacetViaMethodFactory facetFactory = new ActionChoicesFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -491,7 +492,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsNamedFacetUsingNameMethodAndRemovesMethod() {
         final NamedFacetStaticMethodFactory facetFactory = new NamedFacetStaticMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -512,7 +513,6 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testInstallsDescribedAsFacetUsingDescriptionAndRemovesMethod() {
         final DescribedAsFacetStaticMethodFactory facetFactory = new DescribedAsFacetStaticMethodFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -534,7 +534,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsHiddenFacetUsingAlwaysHideAndRemovesMethod() {
         final HiddenFacetStaticMethodFactory facetFactory = new HiddenFacetStaticMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method actionMethod = findMethod(CustomerStatic.class, "someAction", new Class[] { int.class, Long.class });
         final Method alwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideSomeAction", new Class[] {});
@@ -552,7 +552,6 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testInstallsHiddenFacetUsingAlwaysHideWhenNotAndRemovesMethod() {
         final HiddenFacetStaticMethodFactory facetFactory = new HiddenFacetStaticMethodFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -570,7 +569,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsDisabledFacetUsingProtectAndRemovesMethod() {
         final DisabledFacetStaticMethodFacetFactory facetFactory = new DisabledFacetStaticMethodFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -591,7 +590,6 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testDoesNotInstallDisabledFacetUsingProtectWhenNotAndRemovesMethod() {
         final DisabledFacetStaticMethodFacetFactory facetFactory = new DisabledFacetStaticMethodFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -610,7 +608,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         final HideForSessionFacetViaMethodFactory facetFactory = new HideForSessionFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -631,7 +629,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testInstallsDisabledForSessionFacetAndRemovesMethod() {
         final DisableForSessionFacetViaMethodFactory facetFactory = new DisableForSessionFacetViaMethodFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+
         facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
@@ -654,7 +652,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsParameterDefaultsMethodAndRemovesMethod() {
         final ActionParameterDefaultsFacetViaMethodFactory facetFactory = new ActionParameterDefaultsFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -704,7 +702,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsParameterChoicesMethodAndRemovesMethod() {
         final ActionParameterChoicesFacetViaMethodFactory facetFactory = new ActionParameterChoicesFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -769,7 +767,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testInstallsParameterAutoCompleteMethodAndRemovesMethod() {
         final ActionParameterAutoCompleteFacetViaMethodFactory facetFactory = new ActionParameterAutoCompleteFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
@@ -804,16 +802,16 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testBothChoicesMethodCausesException() {
 
         final ActionChoicesFacetViaMethodFactory facetFactory = new ActionChoicesFacetViaMethodFactory();
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
-//        mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        //        mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final ActionParameterChoicesFacetViaMethodFactory facetFactoryForParams = new ActionParameterChoicesFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForParams);
+        facetFactoryForParams.setServicesInjector(mockServicesInjector);
 
-//        mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        //        mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -852,14 +850,14 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     public void testBothDefaultMethodCausesException() {
         final ActionDefaultsFacetViaMethodFactory facetFactory = new ActionDefaultsFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final ActionParameterDefaultsFacetViaMethodFactory facetFactoryForParams = new ActionParameterDefaultsFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForParams);
+        facetFactoryForParams.setServicesInjector(mockServicesInjector);
 
         // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
index 02b2317..ef2bf37 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
@@ -146,7 +146,6 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
 
         actionMethod = findMethod(Customer.class, "someAction");
 
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
index 2c3a616..b72a0e7 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
@@ -29,7 +29,6 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract;
@@ -40,6 +39,7 @@ import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoice
 import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod;
 import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethodFactory;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.testspec.ObjectSpecificationStub;
 
 public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractFacetFactoryTest {
@@ -53,30 +53,31 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
         super.setUp();
         this.facetFactory =  new ActionAnnotationFacetFactory();;
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-    }
-
-    private void injectServicesIntoAndAllowingServiceInjectorLookups(final FacetFactoryAbstract facetFactory) {
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
-        facetFactory.setServicesInjector(mockServicesInjector);
-
         context.checking(new Expectations() {{
 
             allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
             will(returnValue(mockAuthenticationSessionProvider));
 
+            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            will(returnValue(mockSpecificationLoader));
+
             allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
             will(returnValue(mockDeploymentCategoryProvider));
 
             allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
             will(returnValue(DeploymentCategory.PRODUCTION));
+
+            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            will(returnValue(mockSpecificationLoader));
+
         }});
 
+        facetFactory.setServicesInjector(mockServicesInjector);
+
     }
 
     public void testActionInvocationFacetIsInstalledAndMethodRemoved() {
 
-        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(voidSpec);
 
         class Customer {
@@ -99,7 +100,6 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
 
     public void testActionReturnTypeWhenVoid() {
 
-        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(voidSpec);
 
         class Customer {
@@ -117,9 +117,8 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
     }
 
     public void testActionReturnTypeWhenNotVoid() {
-        // mockSpecificationLoader.setLoadSpecificationStringReturn(stringSpec);
-        allowing_specificationLoader_loadSpecification_any_willReturn(stringSpec);
 
+        allowing_specificationLoader_loadSpecification_any_willReturn(stringSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -137,7 +136,7 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
     }
 
     public void testActionOnType() {
-        // mockSpecificationLoader.setLoadSpecificationStringReturn(customerSpec);
+
         allowing_specificationLoader_loadSpecification_any_willReturn(customerSpec);
 
         class Customer {
@@ -157,7 +156,6 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
 
     public void testActionsPickedUpFromSuperclass() {
 
-        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         allowing_specificationLoader_loadSpecification_any_willReturn(voidSpec);
 
         class Customer {
@@ -180,20 +178,17 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
     }
 
     public void testActionsPickedUpFromSuperclassButHelpersFromSubClass() {
-        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+
         allowing_specificationLoader_loadSpecification_any_willReturn(voidSpec);
 
 
         final ActionParameterChoicesFacetViaMethodFactory facetFactoryForChoices = new ActionParameterChoicesFacetViaMethodFactory();
-        facetFactoryForChoices.setSpecificationLoader(mockSpecificationLoader);
-        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        facetFactoryForChoices.setServicesInjector(mockServicesInjector);
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForChoices);
+        facetFactoryForChoices.setServicesInjector(mockServicesInjector);
 
-        final DisableForContextFacetViaMethodFactory facetFactoryForDisable = new DisableForContextFacetViaMethodFactory();
-        facetFactoryForDisable.setSpecificationLoader(mockSpecificationLoader);
 
-        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        final DisableForContextFacetViaMethodFactory facetFactoryForDisable = new DisableForContextFacetViaMethodFactory();
         facetFactoryForDisable.setServicesInjector(mockServicesInjector);
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryJunit4Test.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryJunit4Test.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryJunit4Test.java
index 2623a5d..d7860a2 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryJunit4Test.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryJunit4Test.java
@@ -49,7 +49,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
     @Before
     public void setUp() throws Exception {
         facetFactory = new ActionLayoutFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+        facetFactory.setServicesInjector(mockServicesInjector);
     }
 
     public static class Contributing extends ActionLayoutAnnotationFacetFactoryJunit4Test {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutXmlLayoutAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutXmlLayoutAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutXmlLayoutAnnotationFacetFactoryTest.java
index c39fea7..aa6a34e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutXmlLayoutAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutXmlLayoutAnnotationFacetFactoryTest.java
@@ -48,7 +48,7 @@ public class ActionLayoutXmlLayoutAnnotationFacetFactoryTest extends AbstractFac
     @Before
     public void setUp() throws Exception {
         facetFactory = new ActionLayoutFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+        facetFactory.setServicesInjector(mockServicesInjector);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/derived/NotContributedFacetDerivedFromDomainServiceFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/derived/NotContributedFacetDerivedFromDomainServiceFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/derived/NotContributedFacetDerivedFromDomainServiceFacetFactoryTest.java
index a121bd6..8a7bd45 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/derived/NotContributedFacetDerivedFromDomainServiceFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/derived/NotContributedFacetDerivedFromDomainServiceFacetFactoryTest.java
@@ -44,7 +44,7 @@ public class NotContributedFacetDerivedFromDomainServiceFacetFactoryTest extends
     @Before
     public void setUp() throws Exception {
         facetFactory = new NotContributedFacetDerivedFromDomainServiceFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+        facetFactory.setServicesInjector(mockServicesInjector);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest.java
index c4001cd..0036429 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest.java
@@ -44,7 +44,7 @@ public class NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest exten
     @Before
     public void setUp() throws Exception {
         facetFactory = new NotInServiceMenuFacetDerivedFromDomainServiceFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+        facetFactory.setServicesInjector(mockServicesInjector);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
index 5e0ae47..9666789 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
@@ -23,7 +23,9 @@ import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
 import java.util.Set;
+
 import org.jmock.Expectations;
+
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.security.UserMemento;
 import org.apache.isis.applib.services.i18n.TranslationService;
@@ -34,7 +36,6 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
@@ -73,7 +74,8 @@ import org.apache.isis.core.metamodel.facets.members.named.staticmethod.NamedFac
 import org.apache.isis.core.metamodel.facets.members.named.staticmethod.NamedFacetStaticMethodFactory;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
@@ -117,22 +119,18 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
 
             allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
             will(returnValue(stubConfiguration));
-        }});
-
-    }
 
+            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            will(returnValue(mockSpecificationLoader));
 
-    private void injectServicesIntoAndAllowingServiceInjectorLookups(final FacetFactoryAbstract ffa) {
-
-        ffa.setSpecificationLoader(mockSpecificationLoader);
-        ffa.setServicesInjector(mockServicesInjector);
+        }});
 
     }
 
     public void testPropertyAccessorFacetIsInstalledForJavaUtilCollectionAndMethodRemoved() {
         final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings({ "rawtypes", "unused" })
@@ -156,7 +154,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testPropertyAccessorFacetIsInstalledForJavaUtilListAndMethodRemoved() {
         final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings({ "rawtypes", "unused" })
@@ -180,7 +178,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testPropertyAccessorFacetIsInstalledForJavaUtilSetAndMethodRemoved() {
         final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings({ "rawtypes", "unused" })
@@ -204,8 +202,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testPropertyAccessorFacetIsInstalledForObjectArrayAndMethodRemoved() {
         final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -229,8 +226,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testPropertyAccessorFacetIsInstalledForOrderArrayAndMethodRemoved() {
         final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
-
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -257,7 +253,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testAddToFacetIsInstalledViaAccessorIfNoExplicitAddToMethodExists() {
         final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -282,7 +278,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testCannotInferTypeOfFacetIfNoExplicitAddToOrRemoveFromMethods() {
         final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -303,7 +299,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testRemoveFromFacetIsInstalledViaAccessorIfNoExplicitRemoveFromMethodExists() {
         final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -328,7 +324,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testAddToFacetIsInstalledAndMethodRemoved() {
         final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -360,7 +356,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testCanInferTypeOfFacetFromExplicitAddToMethod() {
         final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -389,7 +385,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testRemoveFromFacetIsInstalledAndMethodRemoved() {
         final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -421,7 +417,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testCanInferTypeOfFacetFromExplicitRemoveFromMethod() {
         final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -450,7 +446,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testClearFacetIsInstalledAndMethodRemoved() {
         final CollectionClearFacetFactory facetFactory = new CollectionClearFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings({ "hiding", "unused" })
         class Order {
@@ -482,7 +478,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testClearFacetIsInstalledViaAccessorIfNoExplicitClearMethod() {
         final CollectionClearFacetFactory facetFactory = new CollectionClearFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings({ "hiding", "unused" })
         class Order {
@@ -507,7 +503,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testValidateAddToFacetIsInstalledAndMethodRemoved() {
         final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -544,7 +540,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testValidateRemoveFromFacetIsInstalledAndMethodRemoved() {
         final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -581,7 +577,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testMethodFoundInSuperclass() {
         final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -610,11 +606,11 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testMethodFoundInSuperclassButHelpeMethodsFoundInSubclasses() {
         final CollectionAccessorFacetViaAccessorFactory facetFactoryForAccessor = new CollectionAccessorFacetViaAccessorFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForAccessor);
+        facetFactoryForAccessor.setServicesInjector(mockServicesInjector);
 
         final CollectionAddToRemoveFromAndValidateFacetFactory facetFactoryForHelpers = new CollectionAddToRemoveFromAndValidateFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForHelpers);
+        facetFactoryForHelpers.setServicesInjector(mockServicesInjector);
 
         @SuppressWarnings("hiding")
         class Order {
@@ -708,7 +704,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testInstallsNamedFacetUsingNameMethodAndRemovesMethod() {
         final NamedFacetStaticMethodFactory facetFactory = new NamedFacetStaticMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
         final Method nameMethod = findMethod(CustomerStatic.class, "nameOrders");
@@ -727,7 +723,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testInstallsDescribedAsFacetUsingDescriptionAndRemovesMethod() {
         final DescribedAsFacetStaticMethodFactory facetFactory = new DescribedAsFacetStaticMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
         final Method descriptionMethod = findMethod(CustomerStatic.class, "descriptionOrders");
@@ -746,7 +742,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testInstallsHiddenFacetUsingAlwaysHideAndRemovesMethod() {
         final HiddenFacetStaticMethodFactory facetFactory = new HiddenFacetStaticMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
         final Method alwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideOrders");
@@ -763,7 +759,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testInstallsHiddenFacetUsingAlwaysHideWhenNotAndRemovesMethod() {
         final HiddenFacetStaticMethodFactory facetFactory = new HiddenFacetStaticMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOtherOrders");
         final Method alwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideOtherOrders");
@@ -778,7 +774,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testInstallsDisabledFacetUsingProtectAndRemovesMethod() {
         final DisabledFacetStaticMethodFacetFactory facetFactory = new DisabledFacetStaticMethodFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
         final Method protectMethod = findMethod(CustomerStatic.class, "protectOrders");
@@ -797,7 +793,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testDoesNotInstallDisabledFacetUsingProtectWhenNotAndRemovesMethod() {
         final DisabledFacetStaticMethodFacetFactory facetFactory = new DisabledFacetStaticMethodFacetFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOtherOrders");
         final Method protectMethod = findMethod(CustomerStatic.class, "protectOtherOrders");
@@ -812,7 +808,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testInstallsHiddenForSessionFacetAndRemovesMethod() {
         final HideForSessionFacetViaMethodFactory facetFactory = new HideForSessionFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
         final Method hideMethod = findMethod(CustomerStatic.class, "hideOrders", new Class[] { UserMemento.class });
@@ -831,7 +827,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
     public void testInstallsDisabledForSessionFacetAndRemovesMethod() {
         final DisableForSessionFacetViaMethodFactory facetFactory = new DisableForSessionFacetViaMethodFactory();
 
-        injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
+        facetFactory.setServicesInjector(mockServicesInjector);
 
         final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
         final Method disableMethod = findMethod(CustomerStatic.class, "disableOrders", new Class[] { UserMemento.class });

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
index b26fe09..2512efb 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
@@ -109,7 +109,7 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
     @Before
     public void setUp() throws Exception {
         facetFactory = new CollectionAnnotationFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+        facetFactory.setServicesInjector(mockServicesInjector);
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest_typeOf.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest_typeOf.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest_typeOf.java
index 565ecfc..8cf1358 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest_typeOf.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest_typeOf.java
@@ -40,6 +40,7 @@ public class CollectionAnnotationFacetFactoryTest_typeOf extends AbstractFacetFa
     protected void setUp() throws Exception {
         super.setUp();
         facetFactory = new CollectionAnnotationFacetFactory();
+        facetFactory.setServicesInjector(mockServicesInjector);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassAnnotationOnMemberFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassAnnotationOnMemberFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassAnnotationOnMemberFacetFactoryTest.java
index 8b496fb..ed1453a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassAnnotationOnMemberFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassAnnotationOnMemberFacetFactoryTest.java
@@ -35,7 +35,6 @@ public class CssClassAnnotationOnMemberFacetFactoryTest extends AbstractFacetFac
     public void testCssClassAnnotationPickedUpOnProperty() {
 
         final CssClassFacetOnMemberFactory facetFactory = new CssClassFacetOnMemberFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/naming/named/NamedAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/naming/named/NamedAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/naming/named/NamedAnnotationFacetFactoryTest.java
index 4fa0310..db0931a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/naming/named/NamedAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/naming/named/NamedAnnotationFacetFactoryTest.java
@@ -46,7 +46,6 @@ public class NamedAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
     public void testNamedAnnotationPickedUpOnClass() {
 
         final NamedFacetOnTypeAnnotationFactory facetFactory = new NamedFacetOnTypeAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         @Named("some name")
         class Customer {
@@ -67,7 +66,6 @@ public class NamedAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
     public void testNamedAnnotationPickedUpOnProperty() {
 
         final NamedFacetOnMemberFactory facetFactory = new NamedFacetOnMemberFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -91,7 +89,6 @@ public class NamedAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
 
     public void testNamedAnnotationPickedUpOnCollection() {
         final NamedFacetOnMemberFactory facetFactory = new NamedFacetOnMemberFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -115,7 +112,6 @@ public class NamedAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
 
     public void testNamedAnnotationPickedUpOnAction() {
         final NamedFacetOnMemberFactory facetFactory = new NamedFacetOnMemberFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -139,7 +135,6 @@ public class NamedAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
     public void testNamedAnnotationPickedUpOnActionParameter() {
 
         final NamedFacetOnParameterAnnotationFactory facetFactory = new NamedFacetOnParameterAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         class Customer {
             @SuppressWarnings("unused")

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
index 3a686c0..5898a53 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
index 3e2dd1c..4c8febb 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
@@ -41,7 +41,6 @@ public class CssClassFacetOnTypeAnnotationFactoryTest extends AbstractFacetFacto
     public void testCssClassAnnotationPickedUpOnClass() {
 
         final CssClassFacetOnTypeAnnotationFactory facetFactory = new CssClassFacetOnTypeAnnotationFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoader);
 
         @CssClass("testClass")
         class Customer {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetFactoryTest.java
index 867a54e..418ff8a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/defaults/DefaultedFacetFactoryTest.java
@@ -28,7 +28,7 @@ import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.object.defaults.annotcfg.DefaultedFacetAnnotationElseConfigurationFactory;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class DefaultedFacetFactoryTest extends AbstractFacetFactoryTest {
 
@@ -40,7 +40,7 @@ public class DefaultedFacetFactoryTest extends AbstractFacetFactoryTest {
         super.setUp();
 
         facetFactory = new DefaultedFacetAnnotationElseConfigurationFactory();
-        ServicesInjectorDefault servicesInjector = new ServicesInjectorDefault(Collections.emptyList());
+        ServicesInjector servicesInjector = new ServicesInjector(Collections.emptyList());
         servicesInjector.addFallbackIfRequired(ConfigurationServiceInternal.class, isisConfigurationDefault = new IsisConfigurationDefault());
         facetFactory.setServicesInjector(servicesInjector);
     }


[20/30] isis git commit: ISIS-1409: internal components of RuntimeContext subclasses are now internal domain services; RuntimeContext hierarchy collapsed into a single class.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index d0ed28a..256c5e9 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -43,7 +43,7 @@ import org.apache.isis.objectstore.jdo.service.RegisterEntities;
 
 /**
  *
- * Factory for {@link PersistenceSession}.
+ * Factory for {@link PersistenceSessionInternal}.
  *
  * <p>
  * Implementing class is added to {@link ServicesInjector} as an (internal) domain service; all public methods
@@ -166,7 +166,7 @@ public class PersistenceSessionFactory implements ApplicationScopedComponent, Fi
      * Called by {@link org.apache.isis.core.runtime.system.session.IsisSessionFactory#openSession(AuthenticationSession)}.
      */
     @Programmatic
-    public PersistenceSession createPersistenceSession(
+    public PersistenceSessionInternal createPersistenceSession(
             final ServicesInjector servicesInjector,
             final SpecificationLoader specificationLoader,
             final AuthenticationSession authenticationSession) {
@@ -175,7 +175,7 @@ public class PersistenceSessionFactory implements ApplicationScopedComponent, Fi
         final PersistenceManagerFactory persistenceManagerFactory =
                 applicationComponents.getPersistenceManagerFactory();
 
-        return new PersistenceSession(
+        return new PersistenceSessionInternal(
                 configuration, servicesInjector, specificationLoader,
                 authenticationSession, persistenceManagerFactory,
                 fixturesInstalledFlag);


[03/30] isis git commit: ISIS-1407: collapsed SpecificationLoaderSpi and SpecificationLoader interfaces; removed ProgrammableReflector (finally!)

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/db/mongo/ObjectReaderMongoIntegrationTest.java
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/db/mongo/ObjectReaderMongoIntegrationTest.java b/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/db/mongo/ObjectReaderMongoIntegrationTest.java
index 140ec28..b52206a 100644
--- a/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/db/mongo/ObjectReaderMongoIntegrationTest.java
+++ b/mothballed/component/objectstore/nosql/src/test/java/org/apache/isis/objectstore/nosql/db/mongo/ObjectReaderMongoIntegrationTest.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.tck.dom.refs.ParentEntity;
@@ -272,7 +272,7 @@ public class ObjectReaderMongoIntegrationTest {
         });
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AbstractAutoMapper.java
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AbstractAutoMapper.java b/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AbstractAutoMapper.java
index c5ae7ef..3586075 100644
--- a/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AbstractAutoMapper.java
+++ b/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AbstractAutoMapper.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -338,7 +338,7 @@ public abstract class AbstractAutoMapper extends AbstractMapper {
             + specification.getFullIdentifier() + "]";
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java b/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
index 359a44d..efe85a5 100755
--- a/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
+++ b/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.OidGenerator;
@@ -214,7 +214,7 @@ public class PolymorphicForeignKeyInChildCollectionBaseMapper extends ForeignKey
 
         final Results rs = connector.select(sql.toString());
 
-        final SpecificationLoaderSpi reflector = IsisContext.getSpecificationLoader();
+        final SpecificationLoader reflector = IsisContext.getSpecificationLoader();
         final JdbcPolymorphicObjectReferenceMapping idMapping =
             (JdbcPolymorphicObjectReferenceMapping) idMappingAbstract;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/jdbc/JdbcAbstractReferenceFieldMapping.java
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/jdbc/JdbcAbstractReferenceFieldMapping.java b/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/jdbc/JdbcAbstractReferenceFieldMapping.java
index a09048f..d3bd1b7 100755
--- a/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/jdbc/JdbcAbstractReferenceFieldMapping.java
+++ b/mothballed/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/jdbc/JdbcAbstractReferenceFieldMapping.java
@@ -23,7 +23,7 @@ import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -144,7 +144,7 @@ public class JdbcAbstractReferenceFieldMapping extends JdbcObjectReferenceFieldM
         debug.appendln(field.getId(), getColumn());
     }
 
-    private SpecificationLoaderSpi getReflector() {
+    private SpecificationLoader getReflector() {
         return IsisContext.getSpecificationLoader();
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/objectstore/xml/src/main/java/org/apache/isis/objectstore/xml/XmlObjectStore.java
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/xml/src/main/java/org/apache/isis/objectstore/xml/XmlObjectStore.java b/mothballed/component/objectstore/xml/src/main/java/org/apache/isis/objectstore/xml/XmlObjectStore.java
index 5bc5db6..735f09c 100644
--- a/mothballed/component/objectstore/xml/src/main/java/org/apache/isis/objectstore/xml/XmlObjectStore.java
+++ b/mothballed/component/objectstore/xml/src/main/java/org/apache/isis/objectstore/xml/XmlObjectStore.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -446,7 +446,7 @@ public class XmlObjectStore implements ObjectStoreSpi {
     // Dependencies (from singleton)
     // /////////////////////////////////////////////////////////
 
-    protected SpecificationLoaderSpi getSpecificationLookup() {
+    protected SpecificationLoader getSpecificationLookup() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/objectstore/xml/src/main/java/org/apache/isis/objectstore/xml/internal/data/xml/XmlDataManager.java
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/xml/src/main/java/org/apache/isis/objectstore/xml/internal/data/xml/XmlDataManager.java b/mothballed/component/objectstore/xml/src/main/java/org/apache/isis/objectstore/xml/internal/data/xml/XmlDataManager.java
index 43c835b..36a6271 100644
--- a/mothballed/component/objectstore/xml/src/main/java/org/apache/isis/objectstore/xml/internal/data/xml/XmlDataManager.java
+++ b/mothballed/component/objectstore/xml/src/main/java/org/apache/isis/objectstore/xml/internal/data/xml/XmlDataManager.java
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -551,7 +551,7 @@ public class XmlDataManager implements DataManager {
         return IsisContext.getAuthenticationSession();
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/profilestore/xml/src/test/java/org/apache/isis/profilestore/xml/internal/UserProfileDataHandlerTest.java
----------------------------------------------------------------------
diff --git a/mothballed/component/profilestore/xml/src/test/java/org/apache/isis/profilestore/xml/internal/UserProfileDataHandlerTest.java b/mothballed/component/profilestore/xml/src/test/java/org/apache/isis/profilestore/xml/internal/UserProfileDataHandlerTest.java
index 12903a9..621332a 100644
--- a/mothballed/component/profilestore/xml/src/test/java/org/apache/isis/profilestore/xml/internal/UserProfileDataHandlerTest.java
+++ b/mothballed/component/profilestore/xml/src/test/java/org/apache/isis/profilestore/xml/internal/UserProfileDataHandlerTest.java
@@ -38,7 +38,7 @@ import org.xml.sax.helpers.XMLReaderFactory;
 import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.imageloader.TemplateImageLoader;
@@ -61,7 +61,7 @@ public class UserProfileDataHandlerTest {
     @Mock
     private TemplateImageLoader mockTemplateImageLoader;
     @Mock
-    private SpecificationLoaderSpi mockSpecificationLoader;
+    private SpecificationLoader mockSpecificationLoader;
     @Mock
     private AuthenticationManager mockAuthenticationManager;
     @Mock

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
----------------------------------------------------------------------
diff --git a/mothballed/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java b/mothballed/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
index 573dbd6..dc3c5a8 100644
--- a/mothballed/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
+++ b/mothballed/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
@@ -23,7 +23,7 @@ import java.util.List;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.ObjectStore;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -57,7 +57,7 @@ public abstract class AbstractFixturePeer {
         return IsisContext.getServices();
     }
 
-    public SpecificationLoaderSpi getSpecificationLoader() {
+    public SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/viewer/basic/ApplicationWorkspace.java
----------------------------------------------------------------------
diff --git a/mothballed/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/viewer/basic/ApplicationWorkspace.java b/mothballed/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/viewer/basic/ApplicationWorkspace.java
index 2d54ed3..16eed8c 100644
--- a/mothballed/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/viewer/basic/ApplicationWorkspace.java
+++ b/mothballed/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/viewer/basic/ApplicationWorkspace.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.consent.Veto;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.exploration.MultiUserExplorationSession;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -500,7 +500,7 @@ public final class ApplicationWorkspace extends CompositeViewUsingBuilder implem
     // Dependencies (from singleton)
     // //////////////////////////////////////////////////////////////////
 
-    private SpecificationLoaderSpi getSpecificationLoader() {
+    private SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/view/text/MultilineTextFieldContentTest.java
----------------------------------------------------------------------
diff --git a/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/view/text/MultilineTextFieldContentTest.java b/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/view/text/MultilineTextFieldContentTest.java
index 626b2ef..424cf48 100644
--- a/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/view/text/MultilineTextFieldContentTest.java
+++ b/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/view/text/MultilineTextFieldContentTest.java
@@ -30,7 +30,7 @@ import org.junit.Test;
 import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.imageloader.TemplateImageLoader;
@@ -52,7 +52,7 @@ public class MultilineTextFieldContentTest {
     @Mock
     protected TemplateImageLoader mockTemplateImageLoader;
     @Mock
-    protected SpecificationLoaderSpi mockSpecificationLoader;
+    protected SpecificationLoader mockSpecificationLoader;
     @Mock
     protected PersistenceSessionFactory mockPersistenceSessionFactory;
     @Mock

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/view/text/TextFieldContentTest.java
----------------------------------------------------------------------
diff --git a/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/view/text/TextFieldContentTest.java b/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/view/text/TextFieldContentTest.java
index 789c744..7bf57fe 100644
--- a/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/view/text/TextFieldContentTest.java
+++ b/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/view/text/TextFieldContentTest.java
@@ -31,7 +31,7 @@ import org.junit.Test;
 import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.imageloader.TemplateImageLoader;
@@ -56,7 +56,7 @@ public class TextFieldContentTest {
     @Mock
     protected TemplateImageLoader mockTemplateImageLoader;
     @Mock
-    protected SpecificationLoaderSpi mockSpecificationLoader;
+    protected SpecificationLoader mockSpecificationLoader;
     @Mock
     private UserProfileLoader mockUserProfileLoader;
     @Mock

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/viewer/basic/ActionFieldBuilderTest.java
----------------------------------------------------------------------
diff --git a/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/viewer/basic/ActionFieldBuilderTest.java b/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/viewer/basic/ActionFieldBuilderTest.java
index 487e522..147d98f 100644
--- a/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/viewer/basic/ActionFieldBuilderTest.java
+++ b/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/viewer/basic/ActionFieldBuilderTest.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.exploration.ExplorationSession;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
@@ -64,7 +64,7 @@ public class ActionFieldBuilderTest {
     @Mock
     protected TemplateImageLoader mockTemplateImageLoader;
     @Mock
-    protected SpecificationLoaderSpi mockSpecificationLoader;
+    protected SpecificationLoader mockSpecificationLoader;
     @Mock
     protected PersistenceSessionFactory mockPersistenceSessionFactory;
     @Mock

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/viewer/basic/ScrollBorderTest.java
----------------------------------------------------------------------
diff --git a/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/viewer/basic/ScrollBorderTest.java b/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/viewer/basic/ScrollBorderTest.java
index bfca571..d504799 100644
--- a/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/viewer/basic/ScrollBorderTest.java
+++ b/mothballed/component/viewer/dnd/impl/src/test/java/org/apache/isis/viewer/dnd/viewer/basic/ScrollBorderTest.java
@@ -30,7 +30,7 @@ import org.junit.Test;
 import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.imageloader.TemplateImageLoader;
@@ -58,7 +58,7 @@ public class ScrollBorderTest {
     @Mock
     protected TemplateImageLoader mockTemplateImageLoader;
     @Mock
-    protected SpecificationLoaderSpi mockSpecificationLoader;
+    protected SpecificationLoader mockSpecificationLoader;
     @Mock
     protected PersistenceSessionFactory mockPersistenceSessionFactory;
     @Mock

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/DefaultOidObjectMapping.java
----------------------------------------------------------------------
diff --git a/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/DefaultOidObjectMapping.java b/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/DefaultOidObjectMapping.java
index 85d0f02..da8fe96 100644
--- a/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/DefaultOidObjectMapping.java
+++ b/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/DefaultOidObjectMapping.java
@@ -45,7 +45,7 @@ import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -492,7 +492,7 @@ public class DefaultOidObjectMapping implements ObjectMapping {
     // from context
     ///////////////////////////////////////
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/debug/DebugAction.java
----------------------------------------------------------------------
diff --git a/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/debug/DebugAction.java b/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/debug/DebugAction.java
index 8e5822d..6661954 100644
--- a/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/debug/DebugAction.java
+++ b/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/debug/DebugAction.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.commons.debug.DebugString;
 import org.apache.isis.core.commons.debug.DebuggableWithTitle;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -247,7 +247,7 @@ public class DebugAction implements Action {
          */
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Debug.java
----------------------------------------------------------------------
diff --git a/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Debug.java b/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Debug.java
index c1a01b4..3b0018b 100644
--- a/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Debug.java
+++ b/mothballed/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Debug.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
@@ -300,7 +300,7 @@ public class Debug extends AbstractElementProcessor {
         }
     }
 
-    protected SpecificationLoaderSpi getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLoader() {
         return IsisContext.getSpecificationLoader();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/mothballed/core/module-devutils/impl/src/main/java/org/apache/isis/core/metamodel/services/devutils/DeveloperUtilitiesServiceDefault.java
----------------------------------------------------------------------
diff --git a/mothballed/core/module-devutils/impl/src/main/java/org/apache/isis/core/metamodel/services/devutils/DeveloperUtilitiesServiceDefault.java b/mothballed/core/module-devutils/impl/src/main/java/org/apache/isis/core/metamodel/services/devutils/DeveloperUtilitiesServiceDefault.java
index d36746b..3a89900 100644
--- a/mothballed/core/module-devutils/impl/src/main/java/org/apache/isis/core/metamodel/services/devutils/DeveloperUtilitiesServiceDefault.java
+++ b/mothballed/core/module-devutils/impl/src/main/java/org/apache/isis/core/metamodel/services/devutils/DeveloperUtilitiesServiceDefault.java
@@ -42,11 +42,11 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpiAware;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
 import org.apache.isis.core.metamodel.spec.feature.*;
 
-public class DeveloperUtilitiesServiceDefault implements DeveloperUtilitiesService, SpecificationLoaderSpiAware, AdapterManagerAware {
+public class DeveloperUtilitiesServiceDefault implements DeveloperUtilitiesService, SpecificationLoaderAware, AdapterManagerAware {
 
 
     private final MimeType mimeTypeTextCsv;
@@ -205,12 +205,12 @@ public class DeveloperUtilitiesServiceDefault implements DeveloperUtilitiesServi
 
     // //////////////////////////////////////
 
-    private SpecificationLoaderSpi specificationLoader;
+    private SpecificationLoader specificationLoader;
     private AdapterManager adapterManager;
 
     @Programmatic
     @Override
-    public void setSpecificationLoaderSpi(SpecificationLoaderSpi specificationLoader) {
+    public void setSpecificationLoader(SpecificationLoader specificationLoader) {
         this.specificationLoader = specificationLoader;
     }
 


[27/30] isis git commit: ISIS-1409: removing the *Aware interfaces for the internal components of RuntimeContext (PersistenceSession, Localization, MessageBroker, TranState), also removing AdapterManagerAware.

Posted by da...@apache.org.
ISIS-1409: removing the *Aware interfaces for the internal components of RuntimeContext (PersistenceSession, Localization, MessageBroker, TranState), also removing AdapterManagerAware.


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

Branch: refs/heads/ISIS-1408
Commit: ce7d41d894787adac9db2695fc0cc1e311e63393
Parents: fbf1770
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri May 20 00:47:14 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri May 20 00:47:14 2016 +0100

----------------------------------------------------------------------
 .../adapter/mgr/AdapterManagerAware.java        | 29 -------
 ...llectionIdentifyingFacetFactoryAbstract.java | 17 ++--
 .../action/ActionAnnotationFacetFactory.java    | 44 ++++------
 ...llectionAccessorFacetViaAccessorFactory.java | 13 ++-
 .../clear/CollectionClearFacetFactory.java      | 23 +++---
 .../CollectionFacetFactory.java                 | 21 +++--
 .../DomainObjectAnnotationFacetFactory.java     | 23 ++----
 ...FacetAnnotationElseConfigurationFactory.java | 16 ++--
 ...FacetAnnotationElseConfigurationFactory.java | 14 ++--
 .../RecreatableObjectFacetFactory.java          | 27 +++---
 .../annotation/TitleAnnotationFacetFactory.java | 22 +++--
 ...ueFacetAnnotationOrConfigurationFactory.java | 22 ++---
 ...ValueFacetUsingSemanticsProviderFactory.java | 15 ++--
 ...ameterAutoCompleteFacetViaMethodFactory.java | 20 ++---
 ...icesFacetDerivedFromChoicesFacetFactory.java | 22 +++--
 .../ActionChoicesFacetViaMethodFactory.java     | 22 ++---
 ...onParameterChoicesFacetViaMethodFactory.java | 24 +++---
 ...nParameterDefaultsFacetViaMethodFactory.java | 25 +++---
 ...PropertyAccessorFacetViaAccessorFactory.java | 12 ++-
 .../PropertyAutoCompleteFacetMethodFactory.java | 21 +++--
 ...icesFacetDerivedFromChoicesFacetFactory.java | 21 ++---
 .../PropertyChoicesFacetViaMethodFactory.java   | 22 +++--
 ...pertyDefaultFacetDerivedFromTypeFactory.java | 21 +++--
 .../PropertyDefaultFacetViaMethodFactory.java   | 21 +++--
 .../layoutmetadata/LayoutMetadataReader.java    |  4 +-
 .../runtimecontext/RuntimeContext.java          | 48 -----------
 .../container/DomainObjectContainerDefault.java | 51 +++---------
 .../l10n/LocalizationProviderAware.java         | 26 ------
 .../l10n/LocalizationProviderInternal.java      |  3 -
 .../LocalizationProviderInternalAbstract.java   | 29 -------
 .../l10n/LocalizationProviderInternalNoop.java  |  2 +-
 .../services/message/MessageServiceDefault.java | 87 --------------------
 .../message/MessageServiceInternalDefault.java  | 82 ++++++++++++++++++
 .../msgbroker/MessageBrokerServiceAware.java    | 26 ------
 .../msgbroker/MessageBrokerServiceInternal.java |  3 -
 .../MessageBrokerServiceInternalAbstract.java   | 29 -------
 .../MessageBrokerServiceInternalNoop.java       |  2 +-
 .../PersistenceSessionServiceInternal.java      |  3 -
 ...rsistenceSessionServiceInternalAbstract.java | 31 -------
 .../PersistenceSessionServiceInternalNoop.java  | 10 +--
 .../RepositoryServiceInternalDefault.java       | 18 +---
 .../services/title/TitleServiceDefault.java     | 30 ++-----
 .../TransactionStateProviderInternal.java       |  3 -
 ...ransactionStateProviderInternalAbstract.java | 31 -------
 .../TransactionStateProviderInternalNoop.java   |  3 +-
 .../specloader/SpecificationLoader.java         |  9 +-
 .../facetprocessor/FacetProcessor.java          | 55 ++++++-------
 .../TransactionStateProviderAware.java          | 30 -------
 .../AbstractFacetFactoryJUnit4TestCase.java     |  6 +-
 .../TitleAnnotationFacetFactoryTest.java        |  6 +-
 .../LocalizationProviderInternalDefault.java    |  4 +-
 .../MessageBrokerServiceInternalDefault.java    |  4 +-
 ...ersistenceSessionServiceInternalDefault.java |  4 +-
 ...TransactionStateProviderInternalDefault.java |  4 +-
 .../isis/core/runtime/system/IsisSystem.java    |  5 +-
 .../persistence/PersistenceSessionInternal.java | 16 ----
 .../core/wrapper/WrapperFactoryDefault.java     | 21 +----
 .../handlers/DomainObjectInvocationHandler.java | 11 +--
 .../wrapper/handlers/ProxyContextHandler.java   |  7 +-
 ...WrapperFactoryDefaultTest_wrappedObject.java |  3 +-
 ...toryDefaultTest_wrappedObject_transient.java |  3 +-
 61 files changed, 404 insertions(+), 822 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAware.java
deleted file mode 100644
index 42772af..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAware.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.mgr;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-public interface AdapterManagerAware {
-
-    @Programmatic
-    public void setAdapterManager(final AdapterManager adapterManager);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
index 4bccaf1..c2bbf2c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
@@ -21,14 +21,14 @@ package org.apache.isis.core.metamodel.facets;
 
 import java.util.List;
 
-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.FeatureType;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 
 public abstract class PropertyOrCollectionIdentifyingFacetFactoryAbstract
         extends MethodPrefixBasedFacetFactoryAbstract
-        implements PropertyOrCollectionIdentifyingFacetFactory, AdapterManagerAware {
+        implements PropertyOrCollectionIdentifyingFacetFactory {
 
 
     public PropertyOrCollectionIdentifyingFacetFactoryAbstract(final List<FeatureType> featureTypes, final String... prefixes) {
@@ -51,17 +51,14 @@ public abstract class PropertyOrCollectionIdentifyingFacetFactoryAbstract
     // //////////////////////////////////////
 
 
-    private AdapterManager adapterManager;
-
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
 
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
+    PersistenceSessionServiceInternal adapterManager;
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 74d074a..1ef18b9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -42,8 +42,6 @@ import org.apache.isis.applib.services.HasTransactionId;
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.applib.services.eventbus.ActionInvokedEvent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-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;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -89,16 +87,16 @@ import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFa
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
-import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
-import org.apache.isis.core.metamodel.transactions.TransactionStateProviderAware;
 import org.apache.isis.core.metamodel.util.EventUtil;
 
-public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implements AdapterManagerAware, MetaModelValidatorRefiner,
-        TransactionStateProviderAware {
+public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
+            implements MetaModelValidatorRefiner {
 
     private final MetaModelValidatorForDeprecatedAnnotation actionSemanticsValidator = new MetaModelValidatorForDeprecatedAnnotation(ActionSemantics.class);
     private final MetaModelValidatorForDeprecatedAnnotation actionInteractionValidator = new MetaModelValidatorForDeprecatedAnnotation(ActionInteraction.class);
@@ -114,8 +112,6 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
     private final MetaModelValidatorForDeprecatedAnnotation prototypeValidator = new MetaModelValidatorForDeprecatedAnnotation(Prototype.class);
 
 
-    private AdapterManager adapterManager;
-    private TransactionStateProviderInternal transactionStateProviderInternal;
 
     private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
 
@@ -215,7 +211,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
                         new ActionInvocationFacetForPostsActionInvokedEventAnnotation(
                                 actionInvokedEventType, actionMethod, typeSpec, returnSpec, holder,
                                 getDeploymentCategory(), getConfiguration(), servicesInjector,
-                                getAuthenticationSessionProvider(), getAdapterManager(),
+                                getAuthenticationSessionProvider(), adapterManager,
                                 transactionStateProviderInternal
                         ), processMethodContext);
             } else
@@ -225,7 +221,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
                         new ActionInvocationFacetForDomainEventFromActionInteractionAnnotation(
                                 actionDomainEventType, actionMethod, typeSpec, returnSpec, holder,
                                 getDeploymentCategory(), getConfiguration(), servicesInjector,
-                                getAuthenticationSessionProvider(), getAdapterManager(),
+                                getAuthenticationSessionProvider(), adapterManager,
                                 transactionStateProviderInternal
                         ), processMethodContext);
             } else
@@ -233,17 +229,18 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
             if (action != null) {
                 actionInvocationFacet = new ActionInvocationFacetForDomainEventFromActionAnnotation(
                         actionDomainEventType, actionMethod, typeSpec, returnSpec, holder,
-                        getDeploymentCategory(), getConfiguration(), servicesInjector,
-                        getAuthenticationSessionProvider(),
-                        getAdapterManager(), transactionStateProviderInternal
+                        getDeploymentCategory(), getConfiguration(),
+                        servicesInjector, getAuthenticationSessionProvider(),
+                        adapterManager, transactionStateProviderInternal
                 );
             } else
             // default
             {
                 actionInvocationFacet = new ActionInvocationFacetForDomainEventFromDefault(
                         actionDomainEventType, actionMethod, typeSpec, returnSpec, holder,
-                        getDeploymentCategory(), getConfiguration(), servicesInjector, getAuthenticationSessionProvider(),
-                        getAdapterManager(), transactionStateProviderInternal
+                        getDeploymentCategory(), getConfiguration(),
+                        servicesInjector, getAuthenticationSessionProvider(),
+                        adapterManager, transactionStateProviderInternal
                 );
             }
             FacetUtil.addFacet(actionInvocationFacet);
@@ -559,20 +556,15 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
         hiddenValidator.setConfiguration(configuration);
         disabledValidator.setConfiguration(configuration);
         prototypeValidator.setConfiguration(configuration);
-    }
 
+        this.transactionStateProviderInternal =
+                servicesInjector.lookupService(TransactionStateProviderInternal.class);
 
-    @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
-    private AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
 
-    @Override
-    public void setTransactionStateProvider(final TransactionStateProviderInternal transactionStateProviderInternal) {
-        this.transactionStateProviderInternal = transactionStateProviderInternal;
-    }
+    private TransactionStateProviderInternal transactionStateProviderInternal;
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
index 5d4c07a..f4f98e5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
@@ -29,6 +29,8 @@ import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.facets.PropertyOrCollectionIdentifyingFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
 public class CollectionAccessorFacetViaAccessorFactory
         extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
@@ -53,7 +55,7 @@ public class CollectionAccessorFacetViaAccessorFactory
                 new CollectionAccessorFacetViaAccessor(
                         accessorMethod, holder,
                         getDeploymentCategory(), getConfiguration(), getSpecificationLoader(),
-                        getAuthenticationSessionProvider(), getAdapterManager()
+                        getAuthenticationSessionProvider(), adapterManager
                 ));
     }
 
@@ -99,4 +101,13 @@ public class CollectionAccessorFacetViaAccessorFactory
         // does nothing
     }
 
+
+
+    @Override public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+    }
+
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/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 b8450f9..408ff9e 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,22 +22,21 @@ 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.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 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.facets.collections.modify.CollectionClearFacet;
-import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionClearFacet;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
+public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { MethodPrefixConstants.CLEAR_PREFIX };
 
-    private AdapterManager adapterManager;
 
     public CollectionClearFacetFactory() {
         super(FeatureType.COLLECTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -66,7 +65,7 @@ public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAb
         if (clearMethodIfAny != null) {
             return new CollectionClearFacetViaClearMethod(clearMethodIfAny, collection);
         } else {
-            return new CollectionClearFacetViaAccessor(accessorMethod, collection, getAdapterManager());
+            return new CollectionClearFacetViaAccessor(accessorMethod, collection, adapterManager);
         }
     }
 
@@ -74,14 +73,14 @@ public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAb
     // Dependencies (injected)
     // ///////////////////////////////////////////////////////
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
 
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
+    PersistenceSessionServiceInternal adapterManager;
+
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
index 16ce84b..1cdfe41 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.collections.javautilcollection;
 
-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;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
@@ -29,12 +27,13 @@ import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetDefaultTo
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 
-public class CollectionFacetFactory extends FacetFactoryAbstract implements AdapterManagerAware {
+public class CollectionFacetFactory extends FacetFactoryAbstract {
 
     private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
-    private AdapterManager adapterManager;
 
     public CollectionFacetFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -65,7 +64,7 @@ public class CollectionFacetFactory extends FacetFactoryAbstract implements Adap
             facetHolder.addFacet(typeOfFacet);
         }
 
-        final CollectionFacet collectionFacet = new JavaCollectionFacet(facetHolder, getAdapterManager());
+        final CollectionFacet collectionFacet = new JavaCollectionFacet(facetHolder, adapterManager);
 
         facetHolder.addFacet(collectionFacet);
     }
@@ -74,7 +73,7 @@ public class CollectionFacetFactory extends FacetFactoryAbstract implements Adap
         final Class<?> cls = processClassContext.getCls();
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
-        final CollectionFacet collectionFacet = new JavaArrayFacet(facetHolder, getAdapterManager());
+        final CollectionFacet collectionFacet = new JavaArrayFacet(facetHolder, adapterManager);
         facetHolder.addFacet(collectionFacet);
 
         final TypeOfFacet typeOfFacet =
@@ -91,13 +90,13 @@ public class CollectionFacetFactory extends FacetFactoryAbstract implements Adap
     // Dependencies (injected)
     // //////////////////////////////////////////////////////////////
 
-    public AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
 
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index dfb8f24..0da24ce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -43,8 +43,6 @@ import org.apache.isis.applib.services.eventbus.ObjectUpdatedEvent;
 import org.apache.isis.applib.services.eventbus.ObjectUpdatingEvent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.lang.Nullable;
-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.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -94,9 +92,7 @@ import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapabl
 
 
 public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
-        implements AdapterManagerAware,
-        MetaModelValidatorRefiner,
-        PostConstructMethodCache {
+        implements MetaModelValidatorRefiner, PostConstructMethodCache {
 
     private final MetaModelValidatorForDeprecatedAnnotation auditedValidator = new MetaModelValidatorForDeprecatedAnnotation(Audited.class);
     private final MetaModelValidatorForDeprecatedAnnotation publishedObjectValidator = new MetaModelValidatorForDeprecatedAnnotation(PublishedObject.class);
@@ -106,8 +102,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
     private final MetaModelValidatorForDeprecatedAnnotation objectTypeValidator = new MetaModelValidatorForDeprecatedAnnotation(ObjectType.class);
 
 
-    private AdapterManager adapterManager;
-    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     public DomainObjectAnnotationFacetFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -203,7 +197,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         Facet facet = autoCompleteValidator.flagIfPresent(
                 AutoCompleteFacetForAutoCompleteAnnotation.create(annotation, facetHolder,
                         getDeploymentCategory(), getSpecificationLoader(),
-                        servicesInjector, adapterManager
+                        servicesInjector, persistenceSessionServiceInternal
                 ));
 
         // else check from @DomainObject(auditing=...)
@@ -211,7 +205,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
             facet = AutoCompleteFacetForDomainObjectAnnotation.create(
                     domainObject, facetHolder, getDeploymentCategory(),
                     getSpecificationLoader(), servicesInjector,
-                    getAuthenticationSessionProvider(), adapterManager
+                    getAuthenticationSessionProvider(), persistenceSessionServiceInternal
             );
         }
 
@@ -295,7 +289,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
 
         final PostConstructMethodCache postConstructMethodCache = this;
         final ViewModelFacet recreatableObjectFacet = RecreatableObjectFacetForDomainObjectAnnotation.create(
-                domainObject, getSpecificationLoader(), adapterManager, servicesInjector,
+                domainObject, getSpecificationLoader(), persistenceSessionServiceInternal, servicesInjector,
                 facetHolder, postConstructMethodCache);
         FacetUtil.addFacet(recreatableObjectFacet);
 
@@ -503,16 +497,10 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
 
         this.persistenceSessionServiceInternal =
                 servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
-    }
-
 
-    @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
     }
 
 
-
     // //////////////////////////////////////
 
     private final Map<Class, Nullable<Method>> postConstructMethods = Maps.newHashMap();
@@ -521,4 +509,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         return MethodFinderUtils.findAnnotatedMethod(pojo, PostConstruct.class, postConstructMethods);
     }
 
+
+    PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
index 3bed123..591c708 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
@@ -22,8 +22,6 @@ package org.apache.isis.core.metamodel.facets.object.encodeable.annotcfg;
 import com.google.common.base.Strings;
 
 import org.apache.isis.applib.annotation.Encodable;
-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;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -31,10 +29,10 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncoderDecoderUtil;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class EncodableFacetAnnotationElseConfigurationFactory extends FacetFactoryAbstract implements AdapterManagerAware {
-
-    private AdapterManager adapterManager;
+public class EncodableFacetAnnotationElseConfigurationFactory extends FacetFactoryAbstract {
 
     public EncodableFacetAnnotationElseConfigurationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -77,11 +75,13 @@ public class EncodableFacetAnnotationElseConfigurationFactory extends FacetFacto
     // ////////////////////////////////////////////////////////////////////
 
 
-
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
+    PersistenceSessionServiceInternal adapterManager;
+
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
index 697a1e1..4ce7dbd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
@@ -22,8 +22,6 @@ package org.apache.isis.core.metamodel.facets.object.parseable.annotcfg;
 import com.google.common.base.Strings;
 
 import org.apache.isis.applib.annotation.Parseable;
-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;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -31,11 +29,12 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParserUtil;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFactoryAbstract implements AdapterManagerAware {
+public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFactoryAbstract {
 
 
-    private AdapterManager adapterManager;
 
     public ParseableFacetAnnotationElseConfigurationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -73,10 +72,11 @@ public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFacto
 
 
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
-
+    PersistenceSessionServiceInternal adapterManager;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
index 2ca3f84..ce318a0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
@@ -31,8 +31,6 @@ import org.apache.isis.applib.RecreatableDomainObject;
 import org.apache.isis.applib.ViewModel;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.lang.Nullable;
-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.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -43,15 +41,15 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 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 RecreatableObjectFacetFactory extends FacetFactoryAbstract
-        implements AdapterManagerAware, MetaModelValidatorRefiner, PostConstructMethodCache {
-
-    private AdapterManager adapterManager;
+        implements MetaModelValidatorRefiner, PostConstructMethodCache {
 
     public RecreatableObjectFacetFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -127,18 +125,19 @@ public class RecreatableObjectFacetFactory extends FacetFactoryAbstract
 
     // //////////////////////////////////////
 
-    @Override
-    public void setAdapterManager(AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
-    }
-
-
-
-    // //////////////////////////////////////
-
     private final Map<Class, Nullable<Method>> postConstructMethods = Maps.newHashMap();
 
     public Method postConstructMethodFor(final Object pojo) {
         return MethodFinderUtils.findAnnotatedMethod(pojo, PostConstruct.class, postConstructMethods);
     }
+
+
+    @Override
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+    }
+
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
index 7cacb62..0123551 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
@@ -29,8 +29,6 @@ import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-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;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -40,16 +38,17 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.fallback.FallbackFacetFactory;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 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 TitleAnnotationFacetFactory extends FacetFactoryAbstract implements AdapterManagerAware, MetaModelValidatorRefiner {
+public class TitleAnnotationFacetFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner {
 
     private static final String TITLE_METHOD_NAME = "title";
 
-    private AdapterManager adapterManager;
 
     public TitleAnnotationFacetFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -142,11 +141,6 @@ public class TitleAnnotationFacetFactory extends FacetFactoryAbstract implements
     }
 
 
-    @Override
-    public void setAdapterManager(final AdapterManager adapterMap) {
-        this.adapterManager = adapterMap;
-    }
-
     /**
      * Violation if there is a class that has both a <tt>title()</tt> method and also any non-inherited method 
      * annotated with <tt>@Title</tt>.
@@ -194,4 +188,14 @@ public class TitleAnnotationFacetFactory extends FacetFactoryAbstract implements
 
         }));
     }
+
+
+    @Override
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+    }
+
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
index d6c5646..b0a12fd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
@@ -24,8 +24,6 @@ import com.google.common.base.Strings;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.annotation.Value;
-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;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -41,6 +39,8 @@ import org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacet;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderContext;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderUtil;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
 /**
  * Processes the {@link Value} annotation.
@@ -68,9 +68,8 @@ import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProv
  * <p>
  * Note that {@link ParentedCollectionFacet} is <i>not</i> installed.
  */
-public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbstract implements AdapterManagerAware {
+public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbstract  {
 
-    private AdapterManager adapterManager;
 
     public ValueFacetAnnotationOrConfigurationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -109,21 +108,18 @@ public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbst
     }
 
     protected ValueSemanticsProviderContext createValueSemanticsProviderContext() {
-        return new ValueSemanticsProviderContext(getDeploymentCategory(), getSpecificationLoader(), getAdapterManager(), servicesInjector);
+        return new ValueSemanticsProviderContext(getDeploymentCategory(), getSpecificationLoader(), adapterManager, servicesInjector);
     }
 
-    // ////////////////////////////////////////////////////////////////////
-    // Injected
-    // ////////////////////////////////////////////////////////////////////
 
 
-    public AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
 
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
index c14fce1..1a00b7c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
@@ -19,15 +19,14 @@
 
 package org.apache.isis.core.metamodel.facets.object.value.vsp;
 
-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.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public abstract class ValueFacetUsingSemanticsProviderFactory<T> extends FacetFactoryAbstract implements AdapterManagerAware {
+public abstract class ValueFacetUsingSemanticsProviderFactory<T> extends FacetFactoryAbstract  {
 
-    private AdapterManager adapterManager;
 
     /**
      * Lazily created.
@@ -48,7 +47,6 @@ public abstract class ValueFacetUsingSemanticsProviderFactory<T> extends FacetFa
     // ////////////////////////////////////////////////////
 
 
-
     public ValueSemanticsProviderContext getContext() {
         if (context == null) {
             context = new ValueSemanticsProviderContext(getDeploymentCategory(), getSpecificationLoader(), adapterManager, servicesInjector);
@@ -56,10 +54,13 @@ public abstract class ValueFacetUsingSemanticsProviderFactory<T> extends FacetFa
         return context;
     }
 
+
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
+    PersistenceSessionServiceInternal adapterManager;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index c9090d6..7bd95fc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -26,8 +26,6 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.isis.core.commons.lang.StringExtensions;
-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.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
@@ -36,13 +34,13 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
+public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = {"autoComplete"};
 
-    private AdapterManager adapterManager;
-
     public ActionParameterAutoCompleteFacetViaMethodFactory() {
         super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
     }
@@ -88,7 +86,7 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
                     new ActionParameterAutoCompleteFacetViaMethod(
                             autoCompleteMethod, paramType, paramAsHolder,
                             getDeploymentCategory(), getSpecificationLoader(),
-                            getAuthenticationSessionProvider(), getAdapterManager()));
+                            getAuthenticationSessionProvider(), adapterManager));
         }
     }
 
@@ -108,13 +106,13 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
     // Dependencies
     // ///////////////////////////////////////////////////////////////
 
+
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
-    private AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
+    PersistenceSessionServiceInternal adapterManager;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
index 82f1429..26ea9a9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
@@ -19,18 +19,16 @@
 
 package org.apache.isis.core.metamodel.facets.param.choices.enums;
 
-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.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
 import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class ActionParameterChoicesFacetDerivedFromChoicesFacetFactory extends FacetFactoryAbstract implements AdapterManagerAware {
-
-    private AdapterManager adapterManager;
+public class ActionParameterChoicesFacetDerivedFromChoicesFacetFactory extends FacetFactoryAbstract {
 
     public ActionParameterChoicesFacetDerivedFromChoicesFacetFactory() {
         super(FeatureType.PARAMETERS_ONLY);
@@ -54,19 +52,19 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacetFactory extends F
                 facetHolder,
                 getDeploymentCategory(), getSpecificationLoader(),
                 getAuthenticationSessionProvider(),
-                getAdapterManager()));
+                adapterManager));
     }
 
     // /////////////////////////////////////////////
     // Injected
     // /////////////////////////////////////////////
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
-
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
+
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
index 860aa47..a127796 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
@@ -23,22 +23,21 @@ import java.lang.reflect.Method;
 import java.util.Collection;
 
 import org.apache.isis.core.commons.lang.StringExtensions;
-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.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;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
+public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { MethodPrefixConstants.CHOICES_PREFIX };
 
-    private AdapterManager adapterManager;
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
@@ -84,7 +83,7 @@ public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFa
         final Class<?> returnType = actionMethod.getReturnType();
         final FacetHolder action = processMethodContext.getFacetHolder();
         final ActionChoicesFacetViaMethod facet = new ActionChoicesFacetViaMethod(choicesMethod, returnType, action,
-                getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), getAdapterManager());
+                getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), adapterManager);
         FacetUtil.addFacet(facet);
     }
 
@@ -105,12 +104,13 @@ public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFa
     // Dependencies
     // ///////////////////////////////////////////////////////////////
 
+
     @Override
-    public void setAdapterManager(final AdapterManager adapterMap) {
-        this.adapterManager = adapterMap;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
index f3f1c7f..eec779d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
@@ -26,26 +26,24 @@ import java.util.List;
 
 import org.apache.isis.core.commons.lang.ListExtensions;
 import org.apache.isis.core.commons.lang.StringExtensions;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.exceptions.MetaModelException;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
-import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacet;
-import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacet;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class ActionParameterChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
+public class ActionParameterChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = {};
 
-    private AdapterManager adapterManager;
-
     /**
      * Note that the {@link Facet}s registered are the generic ones from
      * noa-architecture (where they exist)
@@ -97,7 +95,7 @@ public class ActionParameterChoicesFacetViaMethodFactory extends MethodPrefixBas
             // add facets directly to parameters, not to actions
             final FacetedMethodParameter paramAsHolder = parameters.get(i);
             FacetUtil.addFacet(new ActionParameterChoicesFacetViaMethod(choicesMethod, arrayOfParamType, paramAsHolder,
-                    getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), getAdapterManager()
+                    getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), adapterManager
             ));
         }
     }
@@ -149,13 +147,13 @@ public class ActionParameterChoicesFacetViaMethodFactory extends MethodPrefixBas
     // Dependencies
     // ///////////////////////////////////////////////////////////////
 
+
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
-    private AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
+    PersistenceSessionServiceInternal adapterManager;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
index 03d45ce..e63a31e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
@@ -24,29 +24,27 @@ import java.util.List;
 
 import org.apache.isis.core.commons.lang.ListExtensions;
 import org.apache.isis.core.commons.lang.StringExtensions;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.exceptions.MetaModelException;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
-import org.apache.isis.core.metamodel.facets.actions.defaults.ActionDefaultsFacet;
-import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.facets.actions.defaults.ActionDefaultsFacet;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
 /**
  * Sets up all the {@link Facet}s for an action in a single shot.
  */
-public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
+public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = {};
 
-    private AdapterManager adapterManager;
-
     /**
      * Note that the {@link Facet}s registered are the generic ones from
      * noa-architecture (where they exist)
@@ -95,7 +93,7 @@ public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBa
 
             // add facets directly to parameters, not to actions
             final FacetedMethodParameter paramAsHolder = parameters.get(i);
-            FacetUtil.addFacet(new ActionParameterDefaultsFacetViaMethod(defaultMethod, paramAsHolder, getAdapterManager()));
+            FacetUtil.addFacet(new ActionParameterDefaultsFacetViaMethod(defaultMethod, paramAsHolder, adapterManager));
         }
     }
 
@@ -135,14 +133,13 @@ public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBa
     // Dependencies
     // ///////////////////////////////////////////////////////////////
 
-    @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
-    }
 
-    private AdapterManager getAdapterManager() {
-        return adapterManager;
+    @Override
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
+    PersistenceSessionServiceInternal adapterManager;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
index e18b260..64c0226 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
@@ -29,6 +29,8 @@ import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.facets.PropertyOrCollectionIdentifyingFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
 public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
@@ -54,7 +56,7 @@ public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectio
                         getDeploymentCategory(), getConfiguration(),
                         getSpecificationLoader(),
                         getAuthenticationSessionProvider(),
-                        getAdapterManager()
+                        adapterManager
                 ));
     }
 
@@ -107,4 +109,12 @@ public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectio
         // does nothing
     }
 
+
+    @Override public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+    }
+
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index 7242484..37f2242 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -22,21 +22,20 @@ package org.apache.isis.core.metamodel.facets.properties.autocomplete.method;
 import java.lang.reflect.Method;
 
 import org.apache.isis.core.commons.lang.StringExtensions;
-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;
 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;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
+public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { MethodPrefixConstants.AUTO_COMPLETE_PREFIX };
 
-    private AdapterManager adapterManager;
 
     public PropertyAutoCompleteFacetMethodFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -63,7 +62,7 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
 
         final FacetHolder property = processMethodContext.getFacetHolder();
         FacetUtil.addFacet(new PropertyAutoCompleteFacetMethod(autoCompleteMethod, returnType, property,
-                getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), getAdapterManager()
+                getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), adapterManager
         ));
     }
 
@@ -71,13 +70,13 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
     // Dependencies (injected)
     // ///////////////////////////////////////////////////////
 
+
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
+    PersistenceSessionServiceInternal adapterManager;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFactory.java
index a561c29..de03f66 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFactory.java
@@ -19,16 +19,15 @@
 
 package org.apache.isis.core.metamodel.facets.properties.choices.enums;
 
-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.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class PropertyChoicesFacetDerivedFromChoicesFacetFactory extends FacetFactoryAbstract implements AdapterManagerAware {
+public class PropertyChoicesFacetDerivedFromChoicesFacetFactory extends FacetFactoryAbstract {
 
-    private AdapterManager adapterManager;
 
     public PropertyChoicesFacetDerivedFromChoicesFacetFactory() {
         super(FeatureType.PROPERTIES_ONLY);
@@ -46,16 +45,14 @@ public class PropertyChoicesFacetDerivedFromChoicesFacetFactory extends FacetFac
         FacetUtil.addFacet(new PropertyChoicesFacetDerivedFromChoicesFacet(processMethodContext.getFacetHolder(), getSpecificationLoader()));
     }
 
-    // /////////////////////////////////////////////
-    // Injected
-    // /////////////////////////////////////////////
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
 
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
+
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
index 6947c83..aa8ae896 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
@@ -22,22 +22,20 @@ package org.apache.isis.core.metamodel.facets.properties.choices.method;
 import java.lang.reflect.Method;
 
 import org.apache.isis.core.commons.lang.StringExtensions;
-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;
 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;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
+public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { MethodPrefixConstants.CHOICES_PREFIX };
 
-    private AdapterManager adapterManager;
-
     public PropertyChoicesFacetViaMethodFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
     }
@@ -62,20 +60,20 @@ public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacet
         processMethodContext.removeMethod(choicesMethod);
 
         final FacetHolder property = processMethodContext.getFacetHolder();
-        FacetUtil.addFacet(new PropertyChoicesFacetViaMethod(choicesMethod, returnType, property, getSpecificationLoader(), getAdapterManager()));
+        FacetUtil.addFacet(new PropertyChoicesFacetViaMethod(choicesMethod, returnType, property, getSpecificationLoader(), adapterManager));
     }
 
     // ///////////////////////////////////////////////////////
     // Dependencies (injected)
     // ///////////////////////////////////////////////////////
 
+
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
+    PersistenceSessionServiceInternal adapterManager;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
index 9fb8933..75c9e0e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
@@ -19,18 +19,17 @@
 
 package org.apache.isis.core.metamodel.facets.properties.defaults.fromtype;
 
-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.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacet;
 import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacet;
 
-public class PropertyDefaultFacetDerivedFromTypeFactory extends FacetFactoryAbstract implements AdapterManagerAware {
+public class PropertyDefaultFacetDerivedFromTypeFactory extends FacetFactoryAbstract {
 
-    private AdapterManager adapterManager;
 
     public PropertyDefaultFacetDerivedFromTypeFactory() {
         super(FeatureType.PROPERTIES_ONLY);
@@ -53,7 +52,7 @@ public class PropertyDefaultFacetDerivedFromTypeFactory extends FacetFactoryAbst
         final Class<?> returnType = processMethodContext.getMethod().getReturnType();
         final DefaultedFacet returnTypeDefaultedFacet = getDefaultedFacet(returnType);
         if (returnTypeDefaultedFacet != null) {
-            final PropertyDefaultFacetDerivedFromDefaultedFacet propertyFacet = new PropertyDefaultFacetDerivedFromDefaultedFacet(returnTypeDefaultedFacet, processMethodContext.getFacetHolder(), getAdapterManager());
+            final PropertyDefaultFacetDerivedFromDefaultedFacet propertyFacet = new PropertyDefaultFacetDerivedFromDefaultedFacet(returnTypeDefaultedFacet, processMethodContext.getFacetHolder(), adapterManager);
             FacetUtil.addFacet(propertyFacet);
         }
     }
@@ -67,13 +66,13 @@ public class PropertyDefaultFacetDerivedFromTypeFactory extends FacetFactoryAbst
     // Injected
     // ////////////////////////////////////////////////////////////////////
 
-    public AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
 
     @Override
-    public void setAdapterManager(final AdapterManager adapterMap) {
-        this.adapterManager = adapterMap;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
+    PersistenceSessionServiceInternal adapterManager;
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
index 4db89d2..6c6d046 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
@@ -22,21 +22,20 @@ package org.apache.isis.core.metamodel.facets.properties.defaults.method;
 import java.lang.reflect.Method;
 
 import org.apache.isis.core.commons.lang.StringExtensions;
-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;
 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;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
-public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
+public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { MethodPrefixConstants.DEFAULT_PREFIX };
 
-    private AdapterManager adapterManager;
 
     public PropertyDefaultFacetViaMethodFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -62,20 +61,20 @@ public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacet
         processMethodContext.removeMethod(method);
 
         final FacetHolder property = processMethodContext.getFacetHolder();
-        FacetUtil.addFacet(new PropertyDefaultFacetViaMethod(method, property, getSpecificationLoader(), getAdapterManager()));
+        FacetUtil.addFacet(new PropertyDefaultFacetViaMethod(method, property, getSpecificationLoader(), adapterManager));
     }
 
     // ///////////////////////////////////////////////////////
     // Dependencies (injected)
     // ///////////////////////////////////////////////////////
 
+
     @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        super.setServicesInjector(servicesInjector);
+        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
     }
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
+    PersistenceSessionServiceInternal adapterManager;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ce7d41d8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/LayoutMetadataReader.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/LayoutMetadataReader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/LayoutMetadataReader.java
index 40b3e6a..ed553ad 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/LayoutMetadataReader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/LayoutMetadataReader.java
@@ -22,7 +22,7 @@ import org.apache.isis.core.commons.exceptions.IsisException;
 
 public interface LayoutMetadataReader {
 
-    public static class ReaderException extends IsisException {
+    class ReaderException extends IsisException {
 
         private static final long serialVersionUID = 1L;
 
@@ -48,5 +48,5 @@ public interface LayoutMetadataReader {
         }
     }
 
-    public Properties asProperties(Class<?> domainClass) throws ReaderException;
+    Properties asProperties(Class<?> domainClass) throws ReaderException;
 }


[09/30] isis git commit: ISIS-1407: SpecificationLoader is now a concrete class (rolled ObjectReflector up into it).

Posted by da...@apache.org.
ISIS-1407: SpecificationLoader is now a concrete class (rolled ObjectReflector up into it).


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

Branch: refs/heads/ISIS-1408
Commit: 04bf1f220f3b39b0cfd211ee11f51506299ae153
Parents: 62bc104
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu May 19 18:29:21 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu May 19 18:29:21 2016 +0100

----------------------------------------------------------------------
 .../isis/tool/mavenplugin/IsisMojoValidate.java |   8 +-
 .../tool/mavenplugin/MetaModelProcessor.java    |   4 +-
 .../metamodel/facets/FacetFactoryAbstract.java  |   4 +-
 .../facets/SingleClassValueFacetAbstract.java   |   2 +-
 .../actcoll/typeof/TypeOfFacetAbstract.java     |   2 +-
 .../typeof/TypeOfFacetDefaultToObject.java      |   2 +-
 .../typeof/TypeOfFacetInferredFromArray.java    |   2 +-
 .../typeof/TypeOfFacetInferredFromGenerics.java |   2 +-
 .../ActionDomainEventFacetAbstract.java         |   2 +-
 .../ActionDomainEventFacetDefault.java          |   2 +-
 ...tionDomainEventFacetForActionAnnotation.java |   2 +-
 ...ventFacetForActionInteractionAnnotation.java |   2 +-
 ...cetForPostsActionInvokedEventAnnotation.java |   2 +-
 .../typeof/TypeOfFacetForActionAnnotation.java  |   2 +-
 .../TypeOfFacetOnActionForTypeOfAnnotation.java |   2 +-
 .../CollectionAccessorFacetViaAccessor.java     |   2 +-
 .../CollectionDomainEventFacetAbstract.java     |   2 +-
 .../CollectionDomainEventFacetDefault.java      |   2 +-
 ...DomainEventFacetForCollectionAnnotation.java |   2 +-
 ...FacetForCollectionInteractionAnnotation.java |   2 +-
 ...orPostsCollectionAddedToEventAnnotation.java |   2 +-
 ...stsCollectionRemovedFromEventAnnotation.java |   2 +-
 ...cetOnCollectionFromCollectionAnnotation.java |   2 +-
 ...OfFacetOnCollectionFromTypeOfAnnotation.java |   2 +-
 ...ypeOfFacetInferredFromSupportingMethods.java |   2 +-
 .../autocomplete/AutoCompleteFacetAbstract.java |   2 +-
 ...ycleEventFacetForDomainObjectAnnotation.java |   2 +-
 ...ycleEventFacetForDomainObjectAnnotation.java |   2 +-
 ...ycleEventFacetForDomainObjectAnnotation.java |   2 +-
 ...ycleEventFacetForDomainObjectAnnotation.java |   2 +-
 ...ycleEventFacetForDomainObjectAnnotation.java |   2 +-
 ...ycleEventFacetForDomainObjectAnnotation.java |   2 +-
 ...ycleEventFacetForDomainObjectAnnotation.java |   2 +-
 .../DomainObjectAnnotationFacetFactory.java     |   2 +-
 ...oCompleteFacetForAutoCompleteAnnotation.java |   2 +-
 ...oCompleteFacetForDomainObjectAnnotation.java |   2 +-
 ...bleObjectFacetForDomainObjectAnnotation.java |   2 +-
 .../RemoveInjectMethodsFacetFactory.java        |   2 +-
 ...ectFacetDeclarativeInitializingAbstract.java |   2 +-
 ...jectFacetForRecreatableObjectAnnotation.java |   2 +-
 ...atableObjectFacetForViewModelAnnotation.java |   2 +-
 .../ValueSemanticsProviderAndFacetAbstract.java |   2 +-
 .../vsp/ValueSemanticsProviderContext.java      |   3 +-
 ...ctionParameterAutoCompleteFacetAbstract.java |   2 +-
 ...tionParameterAutoCompleteFacetViaMethod.java |   2 +-
 .../ActionParameterChoicesFacetAbstract.java    |   2 +-
 .../ActionParameterChoicesFacetNone.java        |   2 +-
 ...eterChoicesFacetDerivedFromChoicesFacet.java |   2 +-
 .../method/ActionChoicesFacetViaMethod.java     |   2 +-
 .../ActionParameterChoicesFacetViaMethod.java   |   2 +-
 ...opertyOrCollectionAccessorFacetAbstract.java |   2 +-
 .../PropertyAccessorFacetViaAccessor.java       |   2 +-
 .../method/PropertyAutoCompleteFacetMethod.java |   2 +-
 .../choices/PropertyChoicesFacet.java           |   2 +-
 .../choices/PropertyChoicesFacetAbstract.java   |   3 +-
 ...ertyChoicesFacetDerivedFromChoicesFacet.java |   2 +-
 .../method/PropertyChoicesFacetViaMethod.java   |   2 +-
 .../method/PropertyDefaultFacetViaMethod.java   |   2 +-
 .../PropertyDomainEventFacetAbstract.java       |   2 +-
 .../modify/PropertyDomainEventFacetDefault.java |   2 +-
 ...tForPostsPropertyChangedEventAnnotation.java |   2 +-
 ...tyDomainEventFacetForPropertyAnnotation.java |   2 +-
 ...ntFacetForPropertyInteractionAnnotation.java |   2 +-
 .../runtimecontext/RuntimeContext.java          |   2 +-
 .../runtimecontext/RuntimeContextAbstract.java  |   2 +-
 .../noruntime/RuntimeContextNoRuntime.java      |   2 +-
 .../ApplicationFeatureRepositoryDefault.java    |   4 +-
 .../container/DomainObjectContainerDefault.java |   4 +-
 .../services/factory/FactoryServiceDefault.java |   4 +-
 .../grid/GridSystemServiceAbstract.java         |   4 +-
 .../services/layout/LayoutServiceDefault.java   |   4 +-
 .../metamodel/MetaModelServiceDefault.java      |   4 +-
 .../services/swagger/SwaggerServiceDefault.java |   4 +-
 .../services/swagger/internal/Generation.java   |   2 +-
 .../swagger/internal/SwaggerSpecGenerator.java  |   2 +-
 .../metamodel/spec/ObjectSpecification.java     |   1 +
 .../spec/ObjectSpecificationDependencies.java   |   1 +
 .../metamodel/spec/SpecificationLoader.java     | 101 ----
 .../spec/SpecificationLoaderAware.java          |  29 -
 .../spec/feature/ObjectMemberDependencies.java  |   2 +-
 .../specloader/ObjectReflectorDefault.java      | 604 -------------------
 .../specloader/ObjectReflectorInstaller.java    |  40 --
 .../specloader/SpecificationLoader.java         | 584 ++++++++++++++++++
 .../specloader/SpecificationLoaderAware.java    |  29 +
 .../SpecificationLoaderInstaller.java           |  40 ++
 .../specimpl/FacetedMethodsBuilder.java         |   2 +-
 .../specimpl/FacetedMethodsBuilderContext.java  |   2 +-
 .../specimpl/ObjectActionParameterAbstract.java |   2 +-
 .../specimpl/ObjectMemberAbstract.java          |   2 +-
 .../specimpl/ObjectSpecificationAbstract.java   |   2 +-
 .../OneToManyAssociationContributee.java        |   2 +-
 .../specimpl/OneToManyAssociationMixedIn.java   |   2 +-
 .../validator/MetaModelValidator.java           |   2 +-
 .../validator/MetaModelValidatorAbstract.java   |   2 +-
 .../validator/MetaModelValidatorComposite.java  |   3 +-
 .../progmodels/dflt/JavaReflectorHelper.java    |   6 +-
 .../progmodels/dflt/JavaReflectorInstaller.java | 167 ++++-
 .../JavaReflectorInstallerNoDecorators.java     | 191 ------
 .../AbstractFacetFactoryJUnit4TestCase.java     |   2 +-
 .../facets/AbstractFacetFactoryTest.java        |   2 +-
 .../ValueSemanticsProviderAbstractTestCase.java |   2 +-
 .../ObjectReflectorDefaultTestAbstract.java     | 185 ------
 .../ObjectReflectorDefaultTest_array.java       |  62 --
 .../ObjectReflectorDefaultTest_collection.java  |  64 --
 .../ObjectReflectorDefaultTest_object.java      |   4 +-
 .../ObjectReflectorDefaultTest_value.java       |  44 --
 .../SpecificationLoaderTestAbstract.java        | 185 ++++++
 .../SpecificationLoaderTest_array.java          |  62 ++
 .../SpecificationLoaderTest_collection.java     |  64 ++
 .../SpecificationLoaderTest_value.java          |  44 ++
 .../ObjectFixtureFilePersistor.java             |   2 +-
 .../installerregistry/InstallerLookup.java      |   6 +-
 .../isis/core/runtime/memento/Memento.java      |   2 +-
 .../persistence/adapter/PojoAdapter.java        |   2 +-
 .../container/DomainObjectContainerResolve.java |   2 +-
 .../internal/RuntimeContextFromSession.java     |   2 +-
 .../query/PersistenceQueryAbstract.java         |   2 +-
 .../isis/core/runtime/runner/Constants.java     |   5 +-
 .../runner/opts/OptionHandlerReflector.java     |   4 +-
 .../background/BackgroundServiceDefault.java    |   2 +-
 .../CommandDtoServiceInternalDefault.java       |   2 +-
 .../AbstractIsisSessionTemplate.java            |   2 +-
 .../isis/core/runtime/system/IsisSystem.java    |   2 +-
 .../core/runtime/system/SystemConstants.java    |   8 +-
 .../runtime/system/context/IsisContext.java     |   2 +-
 .../persistence/PersistenceQueryFactory.java    |   2 +-
 .../system/persistence/PersistenceSession.java  |   2 +-
 .../persistence/PersistenceSessionFactory.java  |   2 +-
 .../runtime/system/session/IsisSession.java     |   2 +-
 .../system/session/IsisSessionFactory.java      |   2 +-
 .../IsisComponentProvider.java                  |   2 +-
 .../IsisComponentProviderDefault2.java          |   2 +-
 .../IsisComponentProviderUsingInstallers.java   |   6 +-
 ...ataNucleusPersistenceMechanismInstaller.java |   2 +-
 .../persistence/spi/JdoObjectIdSerializer.java  |   2 +-
 .../jdo/service/RegisterEntities.java           |   2 +-
 .../core/runtime/installer-registry.properties  |  17 +-
 .../adapterfactory/pojo/PojoAdapterTest.java    |   2 +-
 .../transaction/PojoAdapterBuilder.java         |   2 +-
 .../ObjectActionLayoutXmlDefaultTest.java       |   2 +-
 .../system/ObjectMemberAbstractTest.java        |   2 +-
 .../system/OneToManyAssociationDefaultTest.java |   2 +-
 .../rendering/RendererContext5.java             |   2 +-
 .../restfulobjects/server/ResourceContext.java  |   2 +-
 .../server/resources/DomainResourceHelper.java  |   2 +-
 .../server/resources/ResourceAbstract.java      |   2 +-
 .../viewer/wicket/model/mementos/SpecUtils.java |   2 +-
 .../models/BookmarkTreeNodeComparator.java      |   2 +-
 .../model/models/EntityCollectionModel.java     |   2 +-
 .../viewer/wicket/model/models/EntityModel.java |   2 +-
 .../bookmarkedpages/BookmarkedPagesPanel.java   |   2 +-
 .../viewer/wicket/ui/pages/PageAbstract.java    |   2 +-
 .../core/wrapper/WrapperFactoryDefault.java     |   4 +-
 .../handlers/DomainObjectInvocationHandler.java |   2 +-
 .../wrapper/handlers/ProxyContextHandler.java   |   2 +-
 ...WrapperFactoryDefaultTest_wrappedObject.java |   2 +-
 ...toryDefaultTest_wrappedObject_transient.java |   2 +-
 157 files changed, 1344 insertions(+), 1498 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/IsisMojoValidate.java
----------------------------------------------------------------------
diff --git a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/IsisMojoValidate.java b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/IsisMojoValidate.java
index 1bd9cbb..a4606ed 100644
--- a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/IsisMojoValidate.java
+++ b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/IsisMojoValidate.java
@@ -26,7 +26,7 @@ import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.ResolutionScope;
 
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
 import org.apache.isis.core.runtime.system.IsisSystem;
 
@@ -47,8 +47,8 @@ public class IsisMojoValidate extends IsisMojoAbstract {
 
     @Override protected void doExecute(final ContextForMojo context, final IsisSystem isisSystem)
             throws MojoFailureException {
-        final ObjectReflectorDefault specificationLoader =
-                (ObjectReflectorDefault) isisSystem.getSessionFactory().getSpecificationLoader();
+        final SpecificationLoader specificationLoader =
+                isisSystem.getSessionFactory().getSpecificationLoader();
         metaModelProcessor.process(context, specificationLoader);
     }
 
@@ -57,7 +57,7 @@ public class IsisMojoValidate extends IsisMojoAbstract {
 
         @Override
         public void process(
-                final Context context, final ObjectReflectorDefault specificationLoader)
+                final Context context, final SpecificationLoader specificationLoader)
                 throws MojoFailureException {
 
             final ValidationFailures validationFailures = specificationLoader.validate();

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/MetaModelProcessor.java
----------------------------------------------------------------------
diff --git a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/MetaModelProcessor.java b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/MetaModelProcessor.java
index 3fed94d..7f9cf65 100644
--- a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/MetaModelProcessor.java
+++ b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/MetaModelProcessor.java
@@ -25,7 +25,7 @@ import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 
-import org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 interface MetaModelProcessor {
 
@@ -44,6 +44,6 @@ interface MetaModelProcessor {
         void throwExecutionException(final String errorMessage, final Exception e) throws MojoExecutionException;
     }
 
-    void process(final Context context, final ObjectReflectorDefault specificationLoader) throws MojoFailureException;
+    void process(final Context context, final SpecificationLoader specificationLoader) throws MojoFailureException;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
index 98a63bf..a0783f5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
@@ -32,8 +32,8 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 
 public abstract class FacetFactoryAbstract implements FacetFactory, SpecificationLoaderAware, ServicesInjectorAware {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/SingleClassValueFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/SingleClassValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/SingleClassValueFacetAbstract.java
index 84b6b82..740794a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/SingleClassValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/SingleClassValueFacetAbstract.java
@@ -23,7 +23,7 @@ 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.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class SingleClassValueFacetAbstract extends FacetAbstract implements SingleClassValueFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetAbstract.java
index 8e42302..602e373 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetAbstract.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.actcoll.typeof;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class TypeOfFacetAbstract extends SingleClassValueFacetAbstract implements TypeOfFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetDefaultToObject.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetDefaultToObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetDefaultToObject.java
index 4d6a25c..6aec559 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetDefaultToObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetDefaultToObject.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.facets.actcoll.typeof;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class TypeOfFacetDefaultToObject extends TypeOfFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetInferredFromArray.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetInferredFromArray.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetInferredFromArray.java
index ea26ca1..1ee3962 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetInferredFromArray.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetInferredFromArray.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.facets.actcoll.typeof;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class TypeOfFacetInferredFromArray extends TypeOfFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetInferredFromGenerics.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetInferredFromGenerics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetInferredFromGenerics.java
index 46c43e4..17d8a21 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetInferredFromGenerics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetInferredFromGenerics.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.facets.actcoll.typeof;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class TypeOfFacetInferredFromGenerics extends TypeOfFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
index 8e07421..b9690a1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
@@ -42,7 +42,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 
 public abstract class ActionDomainEventFacetAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetDefault.java
index f36ad6e..62bb9b0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetDefault.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.actions.action.invocation;
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ActionDomainEventFacetDefault extends ActionDomainEventFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionAnnotation.java
index 70fc01f..1c2a735 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.actions.action.invocation;
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ActionDomainEventFacetForActionAnnotation extends ActionDomainEventFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionInteractionAnnotation.java
index 9f4868a..213943f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForActionInteractionAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.actions.action.invocation;
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 @Deprecated
 public class ActionDomainEventFacetForActionInteractionAnnotation extends ActionDomainEventFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForPostsActionInvokedEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForPostsActionInvokedEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForPostsActionInvokedEventAnnotation.java
index 6148f97..4082067 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForPostsActionInvokedEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetForPostsActionInvokedEventAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.actions.action.invocation;
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 @Deprecated
 public class ActionDomainEventFacetForPostsActionInvokedEventAnnotation extends ActionDomainEventFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/typeof/TypeOfFacetForActionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/typeof/TypeOfFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/typeof/TypeOfFacetForActionAnnotation.java
index eb88fae..d06d313 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/typeof/TypeOfFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/typeof/TypeOfFacetForActionAnnotation.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.actions.action.typeof;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class TypeOfFacetForActionAnnotation extends TypeOfFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/typeof/TypeOfFacetOnActionForTypeOfAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/typeof/TypeOfFacetOnActionForTypeOfAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/typeof/TypeOfFacetOnActionForTypeOfAnnotation.java
index d33c758..97f3808 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/typeof/TypeOfFacetOnActionForTypeOfAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/typeof/TypeOfFacetOnActionForTypeOfAnnotation.java
@@ -24,7 +24,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index 902ec73..63f87f6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class CollectionAccessorFacetViaAccessor
         extends PropertyOrCollectionAccessorFacetAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
index 8e80972..a469514 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class CollectionDomainEventFacetAbstract extends SingleClassValueFacetAbstract implements CollectionDomainEventFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetDefault.java
index 35f41bb..0fc9dce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetDefault.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.collections.collection.modify;
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class CollectionDomainEventFacetDefault extends CollectionDomainEventFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionAnnotation.java
index 30d651c..a075987 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class CollectionDomainEventFacetForCollectionAnnotation extends CollectionDomainEventFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionInteractionAnnotation.java
index bf4e9a7..421e815 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForCollectionInteractionAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.collections.collection.modify;
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionAddedToEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionAddedToEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionAddedToEventAnnotation.java
index a937f9f..44c30d1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionAddedToEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionAddedToEventAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.collections.collection.modify;
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionRemovedFromEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionRemovedFromEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionRemovedFromEventAnnotation.java
index 50c4b54..0794a6e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionRemovedFromEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetForPostsCollectionRemovedFromEventAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.collections.collection.modify;
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromCollectionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromCollectionAnnotation.java
index 34fdaa9..853422c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromCollectionAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class TypeOfFacetOnCollectionFromCollectionAnnotation extends TypeOfFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromTypeOfAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromTypeOfAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromTypeOfAnnotation.java
index b48d433..6059abd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromTypeOfAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromTypeOfAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.annotation.TypeOf;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/TypeOfFacetInferredFromSupportingMethods.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/TypeOfFacetInferredFromSupportingMethods.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/TypeOfFacetInferredFromSupportingMethods.java
index f91c59e..6706b94 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/TypeOfFacetInferredFromSupportingMethods.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/TypeOfFacetInferredFromSupportingMethods.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.modify;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class TypeOfFacetInferredFromSupportingMethods extends TypeOfFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
index 68c3cd5..bd7edef 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedLifecycleEventFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedLifecycleEventFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedLifecycleEventFacetForDomainObjectAnnotation.java
index 5e3e43d..c976659 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedLifecycleEventFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedLifecycleEventFacetForDomainObjectAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.AbstractLifecycleEvent;
 import org.apache.isis.applib.services.eventbus.ObjectCreatedEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class CreatedLifecycleEventFacetForDomainObjectAnnotation extends SingleClassValueFacetAbstract implements CreatedLifecycleEventFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedLifecycleEventFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedLifecycleEventFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedLifecycleEventFacetForDomainObjectAnnotation.java
index 963f4f5..1fc8f90 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedLifecycleEventFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedLifecycleEventFacetForDomainObjectAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.callbacks;
 import org.apache.isis.applib.services.eventbus.ObjectLoadedEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class LoadedLifecycleEventFacetForDomainObjectAnnotation extends SingleClassValueFacetAbstract implements LoadedLifecycleEventFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedLifecycleEventFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedLifecycleEventFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedLifecycleEventFacetForDomainObjectAnnotation.java
index 1d1da5b..9a298de 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedLifecycleEventFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedLifecycleEventFacetForDomainObjectAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.callbacks;
 import org.apache.isis.applib.services.eventbus.ObjectPersistedEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class PersistedLifecycleEventFacetForDomainObjectAnnotation extends SingleClassValueFacetAbstract implements LoadedLifecycleEventFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingLifecycleEventFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingLifecycleEventFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingLifecycleEventFacetForDomainObjectAnnotation.java
index 6ee15e3..cb65962 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingLifecycleEventFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingLifecycleEventFacetForDomainObjectAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.callbacks;
 import org.apache.isis.applib.services.eventbus.ObjectPersistingEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class PersistingLifecycleEventFacetForDomainObjectAnnotation extends SingleClassValueFacetAbstract implements LoadedLifecycleEventFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingLifecycleEventFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingLifecycleEventFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingLifecycleEventFacetForDomainObjectAnnotation.java
index 9b07994..670b501 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingLifecycleEventFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingLifecycleEventFacetForDomainObjectAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.ObjectRemovingEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class RemovingLifecycleEventFacetForDomainObjectAnnotation extends SingleClassValueFacetAbstract implements LoadedLifecycleEventFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedLifecycleEventFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedLifecycleEventFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedLifecycleEventFacetForDomainObjectAnnotation.java
index 8549e86..14b1cb6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedLifecycleEventFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedLifecycleEventFacetForDomainObjectAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.ObjectUpdatedEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class UpdatedLifecycleEventFacetForDomainObjectAnnotation extends SingleClassValueFacetAbstract implements LoadedLifecycleEventFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingLifecycleEventFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingLifecycleEventFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingLifecycleEventFacetForDomainObjectAnnotation.java
index c1ad0ba..1922467 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingLifecycleEventFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingLifecycleEventFacetForDomainObjectAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.ObjectUpdatingEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class UpdatingLifecycleEventFacetForDomainObjectAnnotation extends SingleClassValueFacetAbstract implements LoadedLifecycleEventFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 3295986..545946b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -86,7 +86,7 @@ import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAw
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForAutoCompleteAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForAutoCompleteAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForAutoCompleteAnnotation.java
index 9986651..4c97449 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForAutoCompleteAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForAutoCompleteAnnotation.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacetAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForDomainObjectAnnotation.java
index c148387..748581e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/autocomplete/AutoCompleteFacetForDomainObjectAnnotation.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacetAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class AutoCompleteFacetForDomainObjectAnnotation extends AutoCompleteFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
index 7ea9baa..f34063f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacetDeclarativeInitializingAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class RecreatableObjectFacetForDomainObjectAnnotation extends
         RecreatableObjectFacetDeclarativeInitializingAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveInjectMethodsFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveInjectMethodsFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveInjectMethodsFacetFactory.java
index 8113493..7995d49 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveInjectMethodsFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveInjectMethodsFacetFactory.java
@@ -36,7 +36,7 @@ public class RemoveInjectMethodsFacetFactory extends FacetFactoryAbstract  {
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        final List<Class<?>> serviceClasses = getSpecificationLoader().getServiceClasses();
+        final List<Class<?>> serviceClasses = getSpecificationLoader().allServiceClasses();
         for (Class<? extends Object> serviceClass : serviceClasses) {
             Method[] methods = processClassContext.getCls().getMethods();
             for (Method method : methods) {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
index 205f21d..cac9fb5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySe
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectAnnotation.java
index f7c3fa6..3d787dc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForRecreatableObjectAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class RecreatableObjectFacetForRecreatableObjectAnnotation extends
         RecreatableObjectFacetDeclarativeInitializingAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
index 41da143..9a9ddbf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class RecreatableObjectFacetForViewModelAnnotation extends
         RecreatableObjectFacetDeclarativeInitializingAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index 05a5704..1711f78 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -45,7 +45,7 @@ import org.apache.isis.core.metamodel.facets.object.parseable.InvalidEntryExcept
 import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
 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.specloader.SpecificationLoader;
 
 public abstract class ValueSemanticsProviderAndFacetAbstract<T> extends FacetAbstract implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser2<T>, DefaultsProvider<T> {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
index b8c9e99..ac8612d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
@@ -16,11 +16,10 @@
  */
 package org.apache.isis.core.metamodel.facets.object.value.vsp;
 
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 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.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ValueSemanticsProviderContext {
     

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java
index 5ab9032..7e568de 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java
@@ -27,7 +27,7 @@ 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.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class ActionParameterAutoCompleteFacetAbstract extends FacetAbstract implements ActionParameterAutoCompleteFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index 1249e93..da6799f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -38,7 +38,7 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacetAbstract;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAutoCompleteFacetAbstract implements ImperativeFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
index 4d8678c..fda1e5e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
@@ -27,7 +27,7 @@ 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.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class ActionParameterChoicesFacetAbstract extends FacetAbstract implements ActionParameterChoicesFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
index a510705..b929a8e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ActionParameterChoicesFacetNone extends ActionParameterChoicesFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
index 6e95278..b9c97e7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.TypedHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
 
 public class ActionParameterChoicesFacetDerivedFromChoicesFacet extends ActionParameterChoicesFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
index c346676..e1e90cb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacetAbstract;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 
 public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract implements ImperativeFacet {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index 81900f3..57b2923 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoicesFacetAbstract implements ImperativeFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
index e70c0d0..e192646 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
@@ -30,7 +30,7 @@ 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.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class PropertyOrCollectionAccessorFacetAbstract
         extends FacetAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index 7397fa1..e697bee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class PropertyAccessorFacetViaAccessor
         extends PropertyOrCollectionAccessorFacetAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
index ce1997d..38a228d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
 import org.apache.isis.core.metamodel.facets.properties.autocomplete.PropertyAutoCompleteFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAbstract implements ImperativeFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacet.java
index a1bdb5c..4add45f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacet.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.properties.choices;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * Provides a set of choices for a property.

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacetAbstract.java
index 12c9023..fbc69fd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacetAbstract.java
@@ -22,8 +22,7 @@ package org.apache.isis.core.metamodel.facets.properties.choices;
 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.properties.choices.PropertyChoicesFacet;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class PropertyChoicesFacetAbstract extends FacetAbstract implements PropertyChoicesFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
index 5ba5ac8..8b0ca19 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacetAbstract;
 
 public class PropertyChoicesFacetDerivedFromChoicesFacet extends PropertyChoicesFacetAbstract {


[29/30] isis git commit: ISIS-1408: removing RuntimeContext, ObjectSpecificationDependencies, ObjectMemberDependencies (WIP)

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
index e63a31e..c79e534 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
@@ -137,7 +137,7 @@ public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBa
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
index f2f939d..0242422 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
@@ -45,7 +45,6 @@ import org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy.MustSat
 import org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation;
 import org.apache.isis.core.metamodel.facets.param.parameter.regex.RegExFacetForParameterAnnotation;
 import org.apache.isis.core.metamodel.facets.param.parameter.regex.RegExFacetFromRegExAnnotationOnParameter;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -207,8 +206,7 @@ public class ParameterAnnotationFacetFactory extends FacetFactoryAbstract implem
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         maxLengthValidator.setConfiguration(configuration);
         mustSatisfyValidator.setConfiguration(configuration);
         regexValidator.setConfiguration(configuration);

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java
index ebc17c9..d7874bd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.facets.param.renderedasdaybefore.annotation;
 
 import java.lang.annotation.Annotation;
+
 import org.apache.isis.applib.annotation.RenderedAsDayBefore;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -29,7 +30,6 @@ 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.objectvalue.renderedadjusted.RenderedAdjustedFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -71,8 +71,7 @@ public class RenderedAsDayBeforeFacetOnParameterAnnotationFactory extends FacetF
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java
index 9ee85f0..9467fe8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java
@@ -30,7 +30,6 @@ 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.objectvalue.typicallen.TypicalLengthFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -73,8 +72,7 @@ public class TypicalLengthFacetOnParameterAnnotationFactory extends FacetFactory
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maskannot/MaskFacetOnParameterAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maskannot/MaskFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maskannot/MaskFacetOnParameterAnnotationFactory.java
index 6dcbcfc..794678e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maskannot/MaskFacetOnParameterAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maskannot/MaskFacetOnParameterAnnotationFactory.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.mask.MaskFacet;
 import org.apache.isis.core.metamodel.facets.object.mask.TitleFacetBasedOnMask;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
@@ -95,8 +94,7 @@ public class MaskFacetOnParameterAnnotationFactory extends FacetFactoryAbstract
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
index 64c0226..c987e78 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
@@ -112,7 +112,7 @@ public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectio
 
     @Override public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index 37f2242..cbc7e0a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -74,7 +74,7 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFactory.java
index de03f66..5e74421 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFactory.java
@@ -50,7 +50,7 @@ public class PropertyChoicesFacetDerivedFromChoicesFacetFactory extends FacetFac
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
index aa8ae896..cbd17a1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
@@ -71,7 +71,7 @@ public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacet
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
index 75c9e0e..92bcd92 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
@@ -70,7 +70,7 @@ public class PropertyDefaultFacetDerivedFromTypeFactory extends FacetFactoryAbst
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
index 6c6d046..bd67bb3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
@@ -72,7 +72,7 @@ public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacet
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     PersistenceSessionServiceInternal adapterManager;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java
index 8a404cd..bff62ff 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java
@@ -33,7 +33,6 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
@@ -104,8 +103,7 @@ public class MandatoryFacetOnPropertyStaticMethodFactory extends MethodPrefixBas
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java
index 1a4a5e7..773d970 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java
@@ -32,7 +32,6 @@ import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacetInferredFromMultiLineFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -97,8 +96,7 @@ public class MultiLineFacetOnPropertyFactory extends FacetFactoryAbstract implem
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         multiLineValidator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
index ba09aee..69c6cfd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
@@ -85,7 +85,6 @@ import org.apache.isis.core.metamodel.facets.properties.property.regex.RegExFace
 import org.apache.isis.core.metamodel.facets.properties.publish.PublishedPropertyFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -454,8 +453,7 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         postsPropertyChangedEventValidator.setConfiguration(configuration);
         propertyInteractionValidator.setConfiguration(configuration);
         regexValidator.setConfiguration(configuration);

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java
index 24521eb..be97aac 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java
@@ -28,7 +28,6 @@ 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.objectvalue.renderedadjusted.RenderedAdjustedFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -66,8 +65,7 @@ public class RenderedAsDayBeforeAnnotationOnPropertyFacetFactory extends FacetFa
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/typicallen/annotation/TypicalLengthOnPropertyFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/typicallen/annotation/TypicalLengthOnPropertyFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/typicallen/annotation/TypicalLengthOnPropertyFacetFactory.java
index be6ccf4..7152051 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/typicallen/annotation/TypicalLengthOnPropertyFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/typicallen/annotation/TypicalLengthOnPropertyFacetFactory.java
@@ -31,7 +31,6 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -89,8 +88,7 @@ public class TypicalLengthOnPropertyFacetFactory extends FacetFactoryAbstract im
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maskannot/MaskFacetOnPropertyAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maskannot/MaskFacetOnPropertyAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maskannot/MaskFacetOnPropertyAnnotationFactory.java
index 59f6d0f..04de951 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maskannot/MaskFacetOnPropertyAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maskannot/MaskFacetOnPropertyAnnotationFactory.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.mask.MaskFacet;
 import org.apache.isis.core.metamodel.facets.object.mask.TitleFacetBasedOnMask;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
@@ -111,8 +110,7 @@ public class MaskFacetOnPropertyAnnotationFactory extends FacetFactoryAbstract i
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/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
deleted file mode 100644
index f6ab040..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContext.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.runtimecontext;
-
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-
-public class RuntimeContext implements ApplicationScopedComponent {
-
-    //region > constructor, fields
-
-    private final ServicesInjector servicesInjector;
-    private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
-
-    public RuntimeContext(
-            final ServicesInjector servicesInjector) {
-        this.servicesInjector = servicesInjector;
-
-        this.persistenceSessionServiceInternal =
-                servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
-
-    }
-
-    //endregion
-
-    @Programmatic
-    public PersistenceSessionServiceInternal getPersistenceSessionService() {
-        return persistenceSessionServiceInternal;
-    }
-
-    @Programmatic
-    public ServicesInjector getServicesInjector() {
-        return servicesInjector;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAware.java
deleted file mode 100644
index 572ea2a..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAware.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.runtimecontext;
-
-public interface RuntimeContextAware {
-
-    public void setRuntimeContext(final RuntimeContext runtimeContext);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
index 13fe785..716bb02 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
@@ -49,9 +49,12 @@ import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.lang.ObjectExtensions;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.exceptions.MetaModelException;
+import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.InjectorMethodEvaluator;
 import org.apache.isis.core.metamodel.specloader.InjectorMethodEvaluatorDefault;
 import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * The repository of services, also able to inject into any object.
@@ -509,6 +512,36 @@ public class ServicesInjector implements ApplicationScopedComponent {
         };
     }
 
+
+    //endregion
+
+    //region > convenience lookups
+
+    private SpecificationLoader specificationLoader;
+
+    @Programmatic
+    public SpecificationLoader getSpecificationLoader() {
+        return specificationLoader != null
+                ? specificationLoader
+                : (specificationLoader = lookupService(SpecificationLoader.class));
+    }
+
+    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+    @Programmatic
+    public PersistenceSessionServiceInternal getPersistenceSessionServiceInternal() {
+        return persistenceSessionServiceInternal != null
+                ? persistenceSessionServiceInternal
+                : (persistenceSessionServiceInternal = lookupService(PersistenceSessionServiceInternal.class));
+    }
+
+    private ConfigurationServiceInternal configurationServiceInternal;
+    @Programmatic
+    public ConfigurationServiceInternal getConfigurationServiceInternal() {
+        return configurationServiceInternal != null
+                ? configurationServiceInternal
+                : (configurationServiceInternal = lookupService(ConfigurationServiceInternal.class));
+    }
+
     //endregion
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/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
deleted file mode 100644
index bc2211f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecificationDependencies.java
+++ /dev/null
@@ -1,58 +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.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
-
-public class ObjectSpecificationDependencies {
-
-    private final DeploymentCategory deploymentCategory;
-    private final ServicesInjector servicesInjector;
-    private final SpecificationLoader specificationLoader;
-    private final FacetProcessor facetProcessor;
-
-    public ObjectSpecificationDependencies(
-            final DeploymentCategory deploymentCategory,
-            final ServicesInjector servicesInjector,
-            final SpecificationLoader specificationLoader,
-            final FacetProcessor facetProcessor) {
-        this.deploymentCategory = deploymentCategory;
-        this.servicesInjector = servicesInjector;
-        this.specificationLoader = specificationLoader;
-        this.facetProcessor = facetProcessor;
-    }
-
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-    
-    public ServicesInjector getServicesInjector() {
-        return servicesInjector;
-    }
-
-    public SpecificationLoader getSpecificationLoader() {
-        return specificationLoader;
-    }
-
-    public FacetProcessor getFacetProcessor() {
-        return facetProcessor;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/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
deleted file mode 100644
index 79e8e4f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberDependencies.java
+++ /dev/null
@@ -1,51 +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.feature;
-
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-
-public class ObjectMemberDependencies {
-
-    private final SpecificationLoader specificationLoader;
-    private final ServicesInjector servicesInjector;
-    private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
-
-    public ObjectMemberDependencies(
-            final SpecificationLoader specificationLoader,
-            final ServicesInjector servicesInjector,
-            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-
-        this.specificationLoader = specificationLoader;
-
-        this.servicesInjector = servicesInjector;
-        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
-    }
-
-    public SpecificationLoader getSpecificationLoader() {
-        return specificationLoader;
-    }
-
-    public ServicesInjector getServicesInjector() {
-        return servicesInjector;
-    }
-    
-    public PersistenceSessionServiceInternal getPersistenceSessionService() {
-        return persistenceSessionServiceInternal;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index b3b38d0..072dab8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -45,14 +45,10 @@ import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFac
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 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.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilderContext;
@@ -146,28 +142,19 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     //region > init
 
-    private RuntimeContext runtimeContext;
-
     private boolean initialized = false;
 
     /**
      * Initializes and wires up, and primes the cache based on any service
      * classes (provided by the {@link ServicesInjector}).
-     * @param runtimeContext
      */
     @Programmatic
-    public void init(final RuntimeContext runtimeContext) {
-        this.runtimeContext = runtimeContext;
+    public void init() {
 
         if (LOG.isDebugEnabled()) {
             LOG.debug("initialising {}", this);
         }
 
-        // default subcomponents
-        if (runtimeContext == null) {
-            this.runtimeContext = new RuntimeContext(servicesInjector);
-        }
-
         // wire subcomponents into each other
         facetProcessor.setServicesInjector(servicesInjector);
         for (final LayoutMetadataReader layoutMetadataReader : layoutMetadataReaders) {
@@ -182,6 +169,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
         loadSpecificationsForServices();
         loadSpecificationsForMixins();
         cacheBySpecId();
+
         initialized = true;
     }
 
@@ -225,14 +213,6 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     }
 
 
-    /**
-     * Set using {@link #init(RuntimeContext)}.
-     */
-    @Programmatic
-    public RuntimeContext getRuntimeContext() {
-        return runtimeContext;
-    }
-
     //endregion
 
     //region > shutdown
@@ -423,25 +403,16 @@ public class SpecificationLoader implements ApplicationScopedComponent {
      */
     private ObjectSpecification createSpecification(final Class<?> cls) {
 
-        final ServicesInjector servicesInjector = getRuntimeContext().getServicesInjector();
-        final PersistenceSessionServiceInternal persistenceSessionServiceInternal =
-                servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
-
-        final ObjectSpecificationDependencies specContext =
-                new ObjectSpecificationDependencies(deploymentCategory, servicesInjector, this, facetProcessor);
-
-        final ObjectMemberDependencies objectMemberDependencies =
-                new ObjectMemberDependencies(this, servicesInjector, persistenceSessionServiceInternal);
-
         // ... and create the specs
         if (FreeStandingList.class.isAssignableFrom(cls)) {
-            return new ObjectSpecificationOnStandaloneList(specContext, objectMemberDependencies);
+            return new ObjectSpecificationOnStandaloneList(servicesInjector,
+                    facetProcessor);
         } else {
             final FacetedMethodsBuilderContext facetedMethodsBuilderContext =
                     new FacetedMethodsBuilderContext(
                             this, facetProcessor, layoutMetadataReaders);
-            return new ObjectSpecificationDefault(cls, facetedMethodsBuilderContext, specContext,
-                    objectMemberDependencies);
+            return new ObjectSpecificationDefault(cls, facetedMethodsBuilderContext,
+                    servicesInjector, facetProcessor);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/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 03b06c9..7335948 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
@@ -36,10 +36,10 @@ import org.apache.isis.core.metamodel.facetapi.MultiTypedFacet;
 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.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 
 public class ObjectActionContributee extends ObjectActionDefault implements ContributeeMember2 {
 
@@ -67,8 +67,8 @@ public class ObjectActionContributee extends ObjectActionDefault implements Cont
             final ObjectActionDefault serviceAction,
             final int contributeeParam,
             final ObjectSpecification contributeeType,
-            final ObjectMemberDependencies objectMemberDependencies) {
-        super(serviceAction.getFacetedMethod(), objectMemberDependencies);
+            final ServicesInjector servicesInjector) {
+        super(serviceAction.getFacetedMethod(), servicesInjector);
 
         this.servicePojo = servicePojo;
         this.serviceAction = serviceAction;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index 4af50f4..424e8c2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -66,13 +66,13 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.schema.cmd.v1.CommandDto;
 
 public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectAction {
@@ -100,8 +100,8 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
 
     public ObjectActionDefault(
             final FacetedMethod facetedMethod,
-            final ObjectMemberDependencies objectMemberDependencies) {
-        super(facetedMethod, FeatureType.ACTION, objectMemberDependencies);
+            final ServicesInjector servicesInjector) {
+        super(facetedMethod, FeatureType.ACTION, servicesInjector);
     }
 
     //endregion

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
index 11bf697..aa4bb1e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
@@ -37,10 +37,10 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 
 public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInMember2 {
 
@@ -75,7 +75,7 @@ public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInM
             final Class<?> mixinType,
             final ObjectActionDefault mixinAction,
             final ObjectSpecification mixedInType,
-            final ObjectMemberDependencies objectMemberDependencies) {
+            final ServicesInjector objectMemberDependencies) {
         super(mixinAction.getFacetedMethod(), objectMemberDependencies);
 
         this.mixinType = mixinType;

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
index 3884074..f457d86 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
@@ -27,9 +27,9 @@ import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
 import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacet;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 
 public abstract class ObjectAssociationAbstract extends ObjectMemberAbstract implements ObjectAssociation {
 
@@ -39,8 +39,8 @@ public abstract class ObjectAssociationAbstract extends ObjectMemberAbstract imp
             final FacetedMethod facetedMethod,
             final FeatureType featureType,
             final ObjectSpecification specification,
-            final ObjectMemberDependencies dependencies) {
-        super(facetedMethod, featureType, dependencies);
+            final ServicesInjector servicesInjector) {
+        super(facetedMethod, featureType, servicesInjector);
         if (specification == null) {
             throw new IllegalArgumentException("field type for '" + getId() + "' must exist");
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/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 ef87934..fa3042c 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
@@ -60,7 +60,6 @@ import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 import org.apache.isis.schema.cmd.v1.CommandDto;
 import org.apache.isis.schema.utils.CommandDtoUtils;
@@ -85,7 +84,7 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
     protected ObjectMemberAbstract(
             final FacetedMethod facetedMethod,
             final FeatureType featureType,
-            final ObjectMemberDependencies objectMemberDependencies) {
+            final ServicesInjector servicesInjector) {
         final String id = facetedMethod.getIdentifier().getMemberName();
         if (id == null) {
             throw new IllegalArgumentException("Id must always be set");
@@ -94,9 +93,10 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
         this.featureType = featureType;
         this.id = id;
 
-        this.specificationLookup = objectMemberDependencies.getSpecificationLoader();
-        this.servicesInjector = objectMemberDependencies.getServicesInjector();
-        this.persistenceSessionServiceInternal = objectMemberDependencies.getPersistenceSessionService();
+        this.servicesInjector = servicesInjector;
+
+        this.specificationLookup = servicesInjector.getSpecificationLoader();
+        this.persistenceSessionServiceInternal = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     //region > Identifiers

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/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 de3114e..5b0de02 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
@@ -54,6 +54,7 @@ import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
@@ -87,18 +88,16 @@ import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 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.ObjectSpecificationException;
 import org.apache.isis.core.metamodel.spec.Persistability;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 
 public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implements ObjectSpecification {
@@ -126,8 +125,9 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
     //region > fields
 
+    protected final ServicesInjector servicesInjector;
+
     private final DeploymentCategory deploymentCategory;
-    private final ServicesInjector servicesInjector;
     private final SpecificationLoader specificationLoader;
     private final FacetProcessor facetProcessor;
 
@@ -136,8 +136,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
      */
     protected Properties metadataProperties;
 
-    protected final ObjectMemberDependencies objectMemberDependencies;
-
 
     private final List<ObjectAssociation> associations = Lists.newArrayList();
     private final List<ObjectAction> objectActions = Lists.newArrayList();
@@ -180,10 +178,10 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
     //region > Constructor
     public ObjectSpecificationAbstract(
-            final Class<?> introspectedClass, 
+            final Class<?> introspectedClass,
             final String shortName,
-            final ObjectSpecificationDependencies objectSpecificationDependencies,
-            final ObjectMemberDependencies objectMemberDependencies) {
+            final ServicesInjector servicesInjector,
+            final FacetProcessor facetProcessor) {
 
         this.correspondingClass = introspectedClass;
         this.fullName = introspectedClass.getName();
@@ -192,12 +190,11 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         this.isAbstract = ClassExtensions.isAbstract(introspectedClass);
         this.identifier = Identifier.classIdentifier(introspectedClass);
 
-        this.deploymentCategory = objectSpecificationDependencies.getDeploymentCategory();
-        this.servicesInjector = objectSpecificationDependencies.getServicesInjector();
-        this.specificationLoader = objectSpecificationDependencies.getSpecificationLoader();
-        this.facetProcessor = objectSpecificationDependencies.getFacetProcessor();
+        this.servicesInjector = servicesInjector;
+        this.facetProcessor = facetProcessor;
 
-        this.objectMemberDependencies = objectMemberDependencies;
+        this.deploymentCategory = servicesInjector.lookupService(DeploymentCategoryProvider.class).getDeploymentCategory();
+        this.specificationLoader = servicesInjector.getSpecificationLoader();
     }
 
     
@@ -227,10 +224,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
     }
     
     /**
-     * As provided explicitly within the
-     * {@link #ObjectSpecificationAbstract(Class, String, ObjectSpecificationDependencies, ObjectMemberDependencies)}
-     * constructor}.
-     * 
+     * As provided explicitly within the constructor.
+     *
      * <p>
      * Not API, but <tt>public</tt> so that {@link FacetedMethodsBuilder} can
      * call it.
@@ -931,10 +926,10 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
                     final ObjectSpecification returnType) {
                 if (returnType.isNotCollection()) {
                     return new OneToOneAssociationContributee(servicePojo, input, contributeeType,
-                            objectMemberDependencies);
+                            servicesInjector);
                 } else {
                     return new OneToManyAssociationContributee(servicePojo, input, contributeeType,
-                            objectMemberDependencies);
+                            servicesInjector);
                 }
             }
         };
@@ -1023,10 +1018,10 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
                 final ObjectSpecification returnType = mixinAction.getReturnType();
                 if (returnType.isNotCollection()) {
                     return new OneToOneAssociationMixedIn(
-                            mixinAction, mixedInType, mixinType, objectMemberDependencies);
+                            mixinAction, mixedInType, mixinType, servicesInjector);
                 } else {
                     return new OneToManyAssociationMixedIn(
-                            mixinAction, mixedInType, mixinType, objectMemberDependencies);
+                            mixinAction, mixedInType, mixinType, servicesInjector);
                 }
             }
         };
@@ -1083,7 +1078,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
             if (contributeeParam != -1) {
                 ObjectActionContributee contributeeAction =
                         new ObjectActionContributee(servicePojo, contributedAction, contributeeParam, this,
-                                objectMemberDependencies);
+                                servicesInjector);
                 facetProcessor.processMemberOrder(metadataProperties, contributeeAction);
                 contributeeActions.add(contributeeAction);
             }
@@ -1170,7 +1165,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
             }
 
             ObjectActionMixedIn mixedInAction =
-                    new ObjectActionMixedIn(mixinType, mixinAction, this, objectMemberDependencies);
+                    new ObjectActionMixedIn(mixinType, mixinAction, this, servicesInjector);
             facetProcessor.processMemberOrder(metadataProperties, mixedInAction);
             actions.add(mixedInAction);
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
index 633d354..e25d5b5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
@@ -36,10 +36,10 @@ import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedF
 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.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class OneToManyAssociationContributee extends OneToManyAssociationDefault implements ContributeeMember2 {
 
@@ -57,7 +57,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationDefault
 
     private static ObjectSpecification typeOfSpec(
             final ObjectActionDefault objectAction,
-            final ObjectMemberDependencies objectMemberDependencies) {
+            final ServicesInjector objectMemberDependencies) {
 
         final TypeOfFacet actionTypeOfFacet = objectAction.getFacet(TypeOfFacet.class);
         final SpecificationLoader specificationLookup = objectMemberDependencies.getSpecificationLoader();
@@ -71,10 +71,10 @@ public class OneToManyAssociationContributee extends OneToManyAssociationDefault
             final Object servicePojo,
             final ObjectActionDefault serviceAction,
             final ObjectSpecification contributeeType,
-            final ObjectMemberDependencies objectMemberDependencies) {
+            final ServicesInjector servicesInjector) {
         super(serviceAction.getFacetedMethod(),
-                typeOfSpec(serviceAction, objectMemberDependencies),
-                objectMemberDependencies);
+                typeOfSpec(serviceAction, servicesInjector),
+                servicesInjector);
         this.servicePojo = servicePojo;
         this.serviceAction = serviceAction;
 
@@ -83,8 +83,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationDefault
         //
         final NotPersistedFacet notPersistedFacet = new NotPersistedFacetAbstract(this) {};
         final DisabledFacet disabledFacet = disabledFacet();
-        final TypeOfFacet typeOfFacet = new TypeOfFacetAbstract(getSpecification().getCorrespondingClass(), this, objectMemberDependencies
-                .getSpecificationLoader()) {};
+        final TypeOfFacet typeOfFacet = new TypeOfFacetAbstract(getSpecification().getCorrespondingClass(), this, servicesInjector.getSpecificationLoader()) {};
 
         FacetUtil.addFacet(notPersistedFacet);
         FacetUtil.addFacet(disabledFacet);

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index 98c8e6b..f7cc6c4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -41,24 +41,25 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 
 public class OneToManyAssociationDefault extends ObjectAssociationAbstract implements OneToManyAssociation {
 
     public OneToManyAssociationDefault(
             final FacetedMethod facetedMethod,
-            final ObjectMemberDependencies objectMemberDependencies) {
-        this(facetedMethod, getSpecification(objectMemberDependencies.getSpecificationLoader(), facetedMethod.getType()),
-                objectMemberDependencies);
+            final ServicesInjector servicesInjector) {
+        this(facetedMethod,
+                getSpecification(servicesInjector.getSpecificationLoader(), facetedMethod.getType()),
+                servicesInjector);
     }
 
     protected OneToManyAssociationDefault(
             final FacetedMethod facetedMethod,
             final ObjectSpecification objectSpec,
-            final ObjectMemberDependencies objectMemberDependencies) {
-        super(facetedMethod, FeatureType.COLLECTION, objectSpec, objectMemberDependencies);
+            final ServicesInjector servicesInjector) {
+        super(facetedMethod, FeatureType.COLLECTION, objectSpec, servicesInjector);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
index 5d0ec7b..0e66c97 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
@@ -40,10 +40,10 @@ import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedF
 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.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 
 public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault implements MixedInMember2 {
 
@@ -73,7 +73,7 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
 
     private static ObjectSpecification typeOfSpec(
             final ObjectActionDefault objectAction,
-            final ObjectMemberDependencies objectMemberDependencies) {
+            final ServicesInjector objectMemberDependencies) {
 
         final TypeOfFacet actionTypeOfFacet = objectAction.getFacet(TypeOfFacet.class);
         final SpecificationLoader specificationLookup = objectMemberDependencies.getSpecificationLoader();
@@ -87,10 +87,10 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
             final ObjectActionDefault mixinAction,
             final ObjectSpecification mixedInType,
             final Class<?> mixinType,
-            final ObjectMemberDependencies objectMemberDependencies) {
+            final ServicesInjector servicesInjector) {
         super(mixinAction.getFacetedMethod(),
-                typeOfSpec(mixinAction, objectMemberDependencies),
-                objectMemberDependencies);
+                typeOfSpec(mixinAction, servicesInjector),
+                servicesInjector);
 
         this.mixinType = mixinType;
         this.mixinAction = mixinAction;
@@ -101,7 +101,7 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
         //
         final NotPersistedFacet notPersistedFacet = new NotPersistedFacetAbstract(this) {};
         final DisabledFacet disabledFacet = disabledFacet();
-        final TypeOfFacet typeOfFacet = new TypeOfFacetAbstract(getSpecification().getCorrespondingClass(), this, objectMemberDependencies
+        final TypeOfFacet typeOfFacet = new TypeOfFacetAbstract(getSpecification().getCorrespondingClass(), this, servicesInjector
                 .getSpecificationLoader()) {};
 
         FacetUtil.addFacet(notPersistedFacet);

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
index 1bfa110..99b0467 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
@@ -35,9 +35,9 @@ import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedF
 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.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 
 public class OneToOneAssociationContributee extends OneToOneAssociationDefault implements ContributeeMember2 {
 
@@ -56,8 +56,8 @@ public class OneToOneAssociationContributee extends OneToOneAssociationDefault i
             final Object servicePojo,
             final ObjectActionDefault serviceAction,
             final ObjectSpecification contributeeType,
-            final ObjectMemberDependencies objectMemberDependencies) {
-        super(serviceAction.getFacetedMethod(), serviceAction.getReturnType(), objectMemberDependencies);
+            final ServicesInjector servicesInjector) {
+        super(serviceAction.getFacetedMethod(), serviceAction.getReturnType(), servicesInjector);
 
         this.servicePojo = servicePojo;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index a6f2d72..7de021f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -52,9 +52,9 @@ import org.apache.isis.core.metamodel.interactions.PropertyVisibilityContext;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.schema.cmd.v1.CommandDto;
 
@@ -62,16 +62,17 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
 
     public OneToOneAssociationDefault(
             final FacetedMethod facetedMethod,
-            final ObjectMemberDependencies objectMemberDependencies) {
-        this(facetedMethod, getSpecification(objectMemberDependencies.getSpecificationLoader(), facetedMethod.getType()),
-                objectMemberDependencies);
+            final ServicesInjector servicesInjector) {
+        this(facetedMethod,
+                getSpecification(servicesInjector.getSpecificationLoader(), facetedMethod.getType()),
+                servicesInjector);
     }
     
     protected OneToOneAssociationDefault(
             final FacetedMethod facetedMethod,
             final ObjectSpecification objectSpec,
-            final ObjectMemberDependencies objectMemberDependencies) {
-        super(facetedMethod, FeatureType.PROPERTY, objectSpec, objectMemberDependencies);
+            final ServicesInjector servicesInjector) {
+        super(facetedMethod, FeatureType.PROPERTY, objectSpec, servicesInjector);
     }
 
     //region > visible, usable

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
index 7e138cc..e48a44d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
@@ -38,9 +38,9 @@ import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedF
 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.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 
 public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault implements MixedInMember2 {
 
@@ -72,8 +72,8 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
             final ObjectActionDefault mixinAction,
             final ObjectSpecification mixedInType,
             final Class<?> mixinType,
-            final ObjectMemberDependencies objectMemberDependencies) {
-        super(mixinAction.getFacetedMethod(), mixinAction.getReturnType(), objectMemberDependencies);
+            final ServicesInjector servicesInjector) {
+        super(mixinAction.getFacetedMethod(), mixinAction.getReturnType(), servicesInjector);
 
         this.mixinType = mixinType;
         this.mixinAction = mixinAction;


[24/30] isis git commit: ISIS-1409: internal components of RuntimeContext subclasses are now internal domain services; RuntimeContext hierarchy collapsed into a single class.

Posted by da...@apache.org.
ISIS-1409: internal components of RuntimeContext subclasses are now internal domain services; RuntimeContext hierarchy collapsed into a single class.


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

Branch: refs/heads/ISIS-1408
Commit: a2a9f51917c5c61d9fd677f66e2a06b77ea8b092
Parents: 6e3495f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu May 19 23:52:08 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri May 20 00:00:29 2016 +0100

----------------------------------------------------------------------
 .../integtestsupport/IsisSystemForTest.java     |    8 +-
 .../metamodel/adapter/mgr/AdapterManager.java   |   10 +-
 .../adapter/mgr/AdapterManagerBase.java         |    3 +
 .../action/ActionAnnotationFacetFactory.java    |   16 +-
 ...onInvocationFacetForDomainEventAbstract.java |   10 +-
 ...FacetForDomainEventFromActionAnnotation.java |    6 +-
 ...ainEventFromActionInteractionAnnotation.java |    6 +-
 ...nvocationFacetForDomainEventFromDefault.java |    6 +-
 ...cetForPostsActionInvokedEventAnnotation.java |    6 +-
 .../ChoicesFacetFromBoundedAbstract.java        |   12 +-
 .../ChoicesFacetFromBoundedMarkerInterface.java |    6 +-
 ...sFacetFromBoundedMarkerInterfaceFactory.java |   13 +-
 .../DomainObjectAnnotationFacetFactory.java     |   14 +-
 .../ChoicesFacetForDomainObjectAnnotation.java  |   10 +-
 .../ChoicesFacetFromBoundedAnnotation.java      |   10 +-
 .../ConfigurationServiceInternal.java           |    4 +-
 .../runtimecontext/LocalizationDefault.java     |   38 -
 .../runtimecontext/LocalizationProvider.java    |   30 -
 .../LocalizationProviderAbstract.java           |   29 -
 .../LocalizationProviderAware.java              |   26 -
 .../runtimecontext/MessageBrokerService.java    |   48 -
 .../MessageBrokerServiceAbstract.java           |   29 -
 .../MessageBrokerServiceAware.java              |   26 -
 .../PersistenceSessionService.java              |  140 --
 .../PersistenceSessionServiceAbstract.java      |   35 -
 .../PersistenceSessionServiceAware.java         |   29 -
 .../runtimecontext/RuntimeContext.java          |   91 +-
 .../runtimecontext/RuntimeContextAbstract.java  |   67 -
 .../noruntime/RuntimeContextNoRuntime.java      |  241 --
 .../bookmarks/BookmarkServiceDefault.java       |   16 +-
 .../container/DomainObjectContainerDefault.java |   14 +-
 .../services/factory/FactoryServiceDefault.java |   12 +-
 .../services/l10n/LocalizationDefault.java      |   38 +
 .../l10n/LocalizationProviderAware.java         |   26 +
 .../l10n/LocalizationProviderInternal.java      |   33 +
 .../LocalizationProviderInternalAbstract.java   |   29 +
 .../l10n/LocalizationProviderInternalNoop.java  |   16 +
 .../services/message/MessageServiceDefault.java |   18 +-
 .../msgbroker/MessageBrokerServiceAware.java    |   26 +
 .../msgbroker/MessageBrokerServiceInternal.java |   54 +
 .../MessageBrokerServiceInternalAbstract.java   |   29 +
 .../MessageBrokerServiceInternalNoop.java       |   24 +
 .../PersistenceSessionServiceAware.java         |   29 +
 .../PersistenceSessionServiceInternal.java      |  160 ++
 ...rsistenceSessionServiceInternalAbstract.java |   35 +
 .../PersistenceSessionServiceInternalNoop.java  |  132 +
 .../repository/RepositoryServiceDefault.java    |   18 +-
 .../services/title/TitleServiceDefault.java     |   12 +-
 .../TransactionStateProviderInternal.java       |   32 +
 ...ransactionStateProviderInternalAbstract.java |   31 +
 .../TransactionStateProviderInternalNoop.java   |   13 +
 .../xactn/TransactionServiceDefault.java        |   16 +-
 .../spec/feature/ObjectMemberDependencies.java  |   12 +-
 .../specloader/SpecificationLoader.java         |   48 +-
 .../facetprocessor/FacetProcessor.java          |    5 -
 .../specimpl/ObjectActionParameterAbstract.java |    4 +-
 .../specimpl/ObjectMemberAbstract.java          |   10 +-
 .../transactions/TransactionStateProvider.java  |   27 -
 .../TransactionStateProviderAbstract.java       |   30 -
 .../TransactionStateProviderAware.java          |    3 +-
 .../TitleAnnotationFacetFactoryTest.java        |   12 +-
 .../TitleFacetViaTitleAnnotationTest.java       |    4 +-
 .../SpecificationLoaderTestAbstract.java        |   38 +-
 .../testspec/ObjectSpecificationStub.java       |    6 +-
 .../ObjectFixtureFilePersistor.java             |    6 +-
 .../ObjectFixtureService.java                   |    4 +-
 .../fixtures/FixturesInstallerDelegate.java     |   18 +-
 .../PersistenceMechanismInstaller.java          |    4 +-
 .../isis/core/runtime/memento/Memento.java      |    4 +-
 .../core/runtime/memento/StandaloneData.java    |    4 +-
 .../persistence/FixturesInstalledFlag.java      |    4 +-
 .../persistence/adapter/PojoAdapter.java        |    8 +-
 .../container/DomainObjectContainerResolve.java |   10 +-
 .../internal/RuntimeContextFromSession.java     |  263 --
 .../background/BackgroundCommandExecution.java  |    4 +-
 .../HomePageProviderServiceDefault.java         |    4 +-
 .../LocalizationProviderInternalDefault.java    |   37 +
 .../MessageBrokerServiceInternalDefault.java    |   53 +
 ...ersistenceSessionServiceInternalDefault.java |  157 ++
 .../PublishingServiceInternalDefault.java       |    4 +-
 ...TransactionStateProviderInternalDefault.java |   55 +
 .../xmlsnapshot/XmlSnapshotServiceDefault.java  |    4 +-
 .../AbstractIsisSessionTemplate.java            |   10 +-
 .../runtime/snapshot/XmlSnapshotBuilder.java    |    4 +-
 .../isis/core/runtime/system/IsisSystem.java    |   11 +-
 .../runtime/system/context/IsisContext.java     |   12 +-
 .../system/persistence/ObjectFactory.java       |    4 +-
 .../system/persistence/PersistenceSession.java  | 2341 ------------------
 .../persistence/PersistenceSessionFactory.java  |    6 +-
 .../persistence/PersistenceSessionInternal.java | 2341 ++++++++++++++++++
 .../runtime/system/session/IsisSession.java     |   12 +-
 .../system/session/IsisSessionFactory.java      |    8 +-
 .../IsisConfigurationForJdoIntegTests.java      |    8 +-
 .../persistence/IsisLifecycleListener.java      |    4 +-
 .../service/support/IsisJdoSupportImpl.java     |    4 +-
 .../adapterfactory/pojo/PojoAdapterTest.java    |    4 +-
 .../transaction/PojoAdapterBuilder.java         |    6 +-
 .../ObjectActionLayoutXmlDefaultTest.java       |   10 +-
 .../system/OneToManyAssociationDefaultTest.java |   10 +-
 .../rendering/RendererContext.java              |    4 +-
 .../domainobjects/JsonValueEncoder.java         |    4 +-
 .../restfulobjects/server/ResourceContext.java  |    8 +-
 .../conneg/RestfulObjectsJaxbWriterForXml.java  |    4 +-
 .../server/resources/DomainResourceHelper.java  |    4 +-
 .../server/resources/ResourceAbstract.java      |    4 +-
 .../server/resources/SwaggerSpecResource.java   |    4 +-
 .../restfulobjects/server/util/OidUtils.java    |    4 +-
 .../wicket/ConverterForObjectAdapter.java       |    4 +-
 .../ConverterForObjectAdapterMemento.java       |    4 +-
 .../integration/wicket/LocalizerForIsis.java    |    4 +-
 .../viewer/services/DeepLinkServiceWicket.java  |    4 +-
 .../model/isis/PersistenceSessionProvider.java  |    4 +-
 .../model/mementos/ObjectAdapterMemento.java    |    4 +-
 .../model/models/EntityCollectionModel.java     |    4 +-
 .../wicket/model/models/ModelAbstract.java      |    4 +-
 .../entityactions/EntityActionLinkFactory.java  |    4 +-
 .../FormComponentPanelAbstract.java             |    4 +-
 .../linkandlabel/ActionLinkFactoryAbstract.java |    4 +-
 .../viewer/wicket/ui/pages/PageAbstract.java    |    4 +-
 .../viewer/wicket/ui/panels/FormAbstract.java   |    4 +-
 .../viewer/wicket/ui/panels/PanelAbstract.java  |    4 +-
 .../core/wrapper/WrapperFactoryDefault.java     |   14 +-
 .../handlers/DomainObjectInvocationHandler.java |   12 +-
 .../wrapper/handlers/ProxyContextHandler.java   |    8 +-
 ...WrapperFactoryDefaultTest_wrappedObject.java |   16 +-
 ...toryDefaultTest_wrappedObject_transient.java |    6 +-
 126 files changed, 3773 insertions(+), 3794 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
----------------------------------------------------------------------
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
index 4c81c29..b9e3f77 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
@@ -60,7 +60,7 @@ import org.apache.isis.core.runtime.services.ServicesInstallerFromConfigurationA
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.IsisSystem;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction.State;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
@@ -606,7 +606,7 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
 
     public ObjectAdapter reload(RootOid oid) {
         ensureSessionInProgress();
-        final PersistenceSession persistenceSession = getPersistenceSession();
+        final PersistenceSessionInternal persistenceSession = getPersistenceSession();
         return persistenceSession.loadObjectInTransaction(oid);
     }
 
@@ -856,7 +856,7 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
         return getPersistenceSession().getTransactionManager();
     }
     
-    public PersistenceSession getPersistor() {
+    public PersistenceSessionInternal getPersistor() {
     	return getPersistenceSession();
     }
 
@@ -864,7 +864,7 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
         return getPersistor();
     }
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
index ec2aaeb..334eb08 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.adapter.mgr;
 import java.util.concurrent.Callable;
 
 import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -36,14 +37,16 @@ public interface AdapterManager extends AdapterManagerBase {
      *            - must not be <tt>null</tt>
      * @return adapter, or <tt>null</tt> if doesn't exist.
      */
+    @Programmatic
     ObjectAdapter getAdapterFor(Oid oid);
 
 
 
-    public enum ConcurrencyChecking {
+    enum ConcurrencyChecking {
         NO_CHECK,
         CHECK;
 
+        @Programmatic
         public boolean isChecking() {
             return this == CHECK;
         }
@@ -112,7 +115,8 @@ public interface AdapterManager extends AdapterManagerBase {
     /**
      * Looks up or creates a collection adapter.
      */
-    public ObjectAdapter adapterFor(
+    @Programmatic
+    ObjectAdapter adapterFor(
             final Object pojo,
             final ObjectAdapter parentAdapter,
             OneToManyAssociation collection);
@@ -121,11 +125,13 @@ public interface AdapterManager extends AdapterManagerBase {
     /**
      * Enable RecreatableObjectFacet to 'temporarily' map an existing pojo to an oid.
      */
+    @Programmatic
     ObjectAdapter mapRecreatedPojo(Oid oid, Object recreatedPojo);
 
     /**
      * Enable RecreatableObjectFacet to remove a 'temporarily' mapped an adapter for a pojo.
      */
+    @Programmatic
     void removeAdapter(ObjectAdapter adapter);
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerBase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerBase.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerBase.java
index 9dc900a..4a53e39 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerBase.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerBase.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.metamodel.adapter.mgr;
 
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 
 public interface AdapterManagerBase {
@@ -34,6 +35,7 @@ public interface AdapterManagerBase {
      *            - must not be <tt>null</tt>
      * @return adapter, or <tt>null</tt> if doesn't exist.
      */
+    @Programmatic
     ObjectAdapter getAdapterFor(Object pojo);
 
 
@@ -41,6 +43,7 @@ public interface AdapterManagerBase {
     /**
      * Looks up or creates a standalone (value) or root adapter.
      */
+    @Programmatic
     ObjectAdapter adapterFor(Object domainObject);
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 0b37bb5..74d074a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -93,7 +93,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
-import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 import org.apache.isis.core.metamodel.transactions.TransactionStateProviderAware;
 import org.apache.isis.core.metamodel.util.EventUtil;
 
@@ -115,7 +115,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
 
 
     private AdapterManager adapterManager;
-    private TransactionStateProvider transactionStateProvider;
+    private TransactionStateProviderInternal transactionStateProviderInternal;
 
     private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
 
@@ -216,7 +216,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
                                 actionInvokedEventType, actionMethod, typeSpec, returnSpec, holder,
                                 getDeploymentCategory(), getConfiguration(), servicesInjector,
                                 getAuthenticationSessionProvider(), getAdapterManager(),
-                                transactionStateProvider
+                                transactionStateProviderInternal
                         ), processMethodContext);
             } else
             // deprecated (but more recently)
@@ -226,7 +226,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
                                 actionDomainEventType, actionMethod, typeSpec, returnSpec, holder,
                                 getDeploymentCategory(), getConfiguration(), servicesInjector,
                                 getAuthenticationSessionProvider(), getAdapterManager(),
-                                transactionStateProvider
+                                transactionStateProviderInternal
                         ), processMethodContext);
             } else
             // current
@@ -235,7 +235,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
                         actionDomainEventType, actionMethod, typeSpec, returnSpec, holder,
                         getDeploymentCategory(), getConfiguration(), servicesInjector,
                         getAuthenticationSessionProvider(),
-                        getAdapterManager(), transactionStateProvider
+                        getAdapterManager(), transactionStateProviderInternal
                 );
             } else
             // default
@@ -243,7 +243,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
                 actionInvocationFacet = new ActionInvocationFacetForDomainEventFromDefault(
                         actionDomainEventType, actionMethod, typeSpec, returnSpec, holder,
                         getDeploymentCategory(), getConfiguration(), servicesInjector, getAuthenticationSessionProvider(),
-                        getAdapterManager(), transactionStateProvider
+                        getAdapterManager(), transactionStateProviderInternal
                 );
             }
             FacetUtil.addFacet(actionInvocationFacet);
@@ -572,7 +572,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
     }
 
     @Override
-    public void setTransactionStateProvider(final TransactionStateProvider transactionStateProvider) {
-        this.transactionStateProvider = transactionStateProvider;
+    public void setTransactionStateProvider(final TransactionStateProviderInternal transactionStateProviderInternal) {
+        this.transactionStateProviderInternal = transactionStateProviderInternal;
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 985a23a..8a4198c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -78,7 +78,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.specloader.ReflectiveActionException;
 import org.apache.isis.core.metamodel.transactions.TransactionState;
-import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 import org.apache.isis.schema.ixn.v1.ActionInvocationDto;
 
 public abstract class ActionInvocationFacetForDomainEventAbstract
@@ -97,7 +97,7 @@ public abstract class ActionInvocationFacetForDomainEventAbstract
 
     private final ServicesInjector servicesInjector;
     private final IsisConfiguration configuration;
-    private final TransactionStateProvider transactionStateProvider;
+    private final TransactionStateProviderInternal transactionStateProviderInternal;
     private final Class<? extends ActionDomainEvent<?>> eventType;
     private final DomainEventHelper domainEventHelper;
 
@@ -112,7 +112,7 @@ public abstract class ActionInvocationFacetForDomainEventAbstract
             final ServicesInjector servicesInjector,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final AdapterManager adapterManager,
-            final TransactionStateProvider transactionStateProvider) {
+            final TransactionStateProviderInternal transactionStateProviderInternal) {
         super(holder);
         this.eventType = eventType;
         this.method = method;
@@ -123,7 +123,7 @@ public abstract class ActionInvocationFacetForDomainEventAbstract
         this.adapterManager = adapterManager;
         this.servicesInjector = servicesInjector;
         this.configuration = configuration;
-        this.transactionStateProvider = transactionStateProvider;
+        this.transactionStateProviderInternal = transactionStateProviderInternal;
         this.domainEventHelper = new DomainEventHelper(this.servicesInjector);
 
     }
@@ -593,6 +593,6 @@ public abstract class ActionInvocationFacetForDomainEventAbstract
     }
 
     public TransactionState getTransactionState() {
-        return transactionStateProvider.getTransactionState();
+        return transactionStateProviderInternal.getTransactionState();
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionAnnotation.java
index 9aa7b6c..edf4e0b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionAnnotation.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 
 public class ActionInvocationFacetForDomainEventFromActionAnnotation
         extends ActionInvocationFacetForDomainEventAbstract {
@@ -45,8 +45,8 @@ public class ActionInvocationFacetForDomainEventFromActionAnnotation
             final ServicesInjector servicesInjector,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final AdapterManager adapterManager,
-            final TransactionStateProvider transactionStateProvider) {
+            final TransactionStateProviderInternal transactionStateProviderInternal) {
         super(eventType, method, onType, returnType, holder, deploymentCategory, isisConfiguration, servicesInjector, authenticationSessionProvider, adapterManager,
-                transactionStateProvider);
+                transactionStateProviderInternal);
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionInteractionAnnotation.java
index 8b6ea18..4ec448d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromActionInteractionAnnotation.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 
 /**
  * @deprecated
@@ -49,8 +49,8 @@ public class ActionInvocationFacetForDomainEventFromActionInteractionAnnotation
             final ServicesInjector servicesInjector,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final AdapterManager adapterManager,
-            final TransactionStateProvider transactionStateProvider) {
+            final TransactionStateProviderInternal transactionStateProviderInternal) {
         super(eventType, method, onType, returnType, holder, deploymentCategory, isisConfiguration, servicesInjector, authenticationSessionProvider, adapterManager,
-                transactionStateProvider);
+                transactionStateProviderInternal);
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromDefault.java
index 04c3262..bccb50d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventFromDefault.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 
 public class ActionInvocationFacetForDomainEventFromDefault
         extends ActionInvocationFacetForDomainEventAbstract {
@@ -45,9 +45,9 @@ public class ActionInvocationFacetForDomainEventFromDefault
             final ServicesInjector servicesInjector,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final AdapterManager adapterManager,
-            final TransactionStateProvider transactionStateProvider) {
+            final TransactionStateProviderInternal transactionStateProviderInternal) {
         super(eventType, method, onType, returnType, holder,
                 deploymentCategory, isisConfiguration, servicesInjector, authenticationSessionProvider, adapterManager,
-                transactionStateProvider);
+                transactionStateProviderInternal);
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForPostsActionInvokedEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForPostsActionInvokedEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForPostsActionInvokedEventAnnotation.java
index 5f04a10..59beec5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForPostsActionInvokedEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForPostsActionInvokedEventAnnotation.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 
 /**
  * @deprecated
@@ -49,10 +49,10 @@ public class ActionInvocationFacetForPostsActionInvokedEventAnnotation
             final ServicesInjector servicesInjector,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final AdapterManager adapterManager,
-            final TransactionStateProvider transactionStateProvider) {
+            final TransactionStateProviderInternal transactionStateProviderInternal) {
         super(eventType, method, onType, returnType, holder,
                 deploymentCategory, isisConfiguration, servicesInjector, authenticationSessionProvider, adapterManager,
-                transactionStateProvider);
+                transactionStateProviderInternal);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
index dc9c04e..99a605b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
@@ -42,7 +42,7 @@ import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 /**
@@ -67,21 +67,21 @@ public abstract class ChoicesFacetFromBoundedAbstract
 
     private final DeploymentCategory deploymentCategory;
     private final AuthenticationSessionProvider authenticationSessionProvider;
-    private final PersistenceSessionService persistenceSessionService;
+    private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     public ChoicesFacetFromBoundedAbstract(
             final FacetHolder holder,
             final DeploymentCategory deploymentCategory,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final PersistenceSessionService persistenceSessionService) {
+            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
         super(type(), holder, Derivation.NOT_DERIVED);
         this.deploymentCategory = deploymentCategory;
         this.authenticationSessionProvider = authenticationSessionProvider;
-        this.persistenceSessionService = persistenceSessionService;
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
 
-    public PersistenceSessionService getPersistenceSessionService() {
-        return persistenceSessionService;
+    public PersistenceSessionServiceInternal getPersistenceSessionService() {
+        return persistenceSessionServiceInternal;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterface.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterface.java
index 22c7e8b..4e27bac 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterface.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterface.java
@@ -23,7 +23,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.choices.ChoicesFacetFromBoundedAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
 public class ChoicesFacetFromBoundedMarkerInterface extends ChoicesFacetFromBoundedAbstract {
 
@@ -31,8 +31,8 @@ public class ChoicesFacetFromBoundedMarkerInterface extends ChoicesFacetFromBoun
             final FacetHolder holder,
             final DeploymentCategory deploymentCategory,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final PersistenceSessionService persistenceSessionService) {
-        super(holder, deploymentCategory, authenticationSessionProvider, persistenceSessionService);
+            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
+        super(holder, deploymentCategory, authenticationSessionProvider, persistenceSessionServiceInternal);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
index d5f181d..6c8a54f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
@@ -22,8 +22,8 @@ package org.apache.isis.core.metamodel.facets.object.choices.boundedmarkerifc;
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.marker.Bounded;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
 public class ChoicesFacetFromBoundedMarkerInterfaceFactory extends FacetFactoryAbstract implements
         PersistenceSessionServiceAware {
 
-    private PersistenceSessionService persistenceSessionService;
+    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     public ChoicesFacetFromBoundedMarkerInterfaceFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -50,7 +50,8 @@ public class ChoicesFacetFromBoundedMarkerInterfaceFactory extends FacetFactoryA
             final FacetHolder holder) {
         return implementsMarker
                 ? new ChoicesFacetFromBoundedMarkerInterface(
-                    holder, getDeploymentCategory(), getAuthenticationSessionProvider(), persistenceSessionService) : null;
+                    holder, getDeploymentCategory(), getAuthenticationSessionProvider(),
+                persistenceSessionServiceInternal) : null;
     }
 
     public boolean recognizes(final Method method) {
@@ -58,7 +59,7 @@ public class ChoicesFacetFromBoundedMarkerInterfaceFactory extends FacetFactoryA
     }
 
     @Override
-    public void setPersistenceSessionService(final PersistenceSessionService persistenceSessionService) {
-        this.persistenceSessionService = persistenceSessionService;
+    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 855cee5..ea97b8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -81,8 +81,8 @@ import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObjectFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -108,7 +108,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
 
 
     private AdapterManager adapterManager;
-    private PersistenceSessionService persistenceSessionService;
+    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     public DomainObjectAnnotationFacetFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -231,12 +231,12 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
             ChoicesFacetFromBoundedAnnotation.create(annotation, processClassContext.getFacetHolder(),
                     getDeploymentCategory(),
                     getAuthenticationSessionProvider(),
-                    persistenceSessionService));
+                    persistenceSessionServiceInternal));
 
         // else check from @DomainObject(bounded=...)
         if(facet == null) {
             facet = ChoicesFacetForDomainObjectAnnotation.create(domainObject, facetHolder, getDeploymentCategory(),
-                    getAuthenticationSessionProvider(), persistenceSessionService);
+                    getAuthenticationSessionProvider(), persistenceSessionServiceInternal);
         }
 
         // then add
@@ -510,8 +510,8 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
     }
 
     @Override
-    public void setPersistenceSessionService(final PersistenceSessionService persistenceSessionService) {
-        this.persistenceSessionService = persistenceSessionService;
+    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java
index d07271d..2bf23f4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.choices.ChoicesFacetFromBoundedAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
 public class ChoicesFacetForDomainObjectAnnotation extends ChoicesFacetFromBoundedAbstract {
 
@@ -34,7 +34,7 @@ public class ChoicesFacetForDomainObjectAnnotation extends ChoicesFacetFromBound
             final FacetHolder facetHolder,
             final DeploymentCategory deploymentCategory,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final PersistenceSessionService persistenceSessionService) {
+            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
 
         if(domainObject == null) {
             return null;
@@ -43,15 +43,15 @@ public class ChoicesFacetForDomainObjectAnnotation extends ChoicesFacetFromBound
         final boolean bounded = domainObject.bounded();
         return bounded
                 ? new ChoicesFacetForDomainObjectAnnotation(
-                    facetHolder, deploymentCategory, authenticationSessionProvider, persistenceSessionService)
+                    facetHolder, deploymentCategory, authenticationSessionProvider, persistenceSessionServiceInternal)
                 : null;
     }
 
     private ChoicesFacetForDomainObjectAnnotation(
             final FacetHolder holder,
             final DeploymentCategory deploymentCategory,
-            final AuthenticationSessionProvider authenticationSessionProvider, final PersistenceSessionService persistenceSessionService) {
-        super(holder, deploymentCategory, authenticationSessionProvider, persistenceSessionService);
+            final AuthenticationSessionProvider authenticationSessionProvider, final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
+        super(holder, deploymentCategory, authenticationSessionProvider, persistenceSessionServiceInternal);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetFromBoundedAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetFromBoundedAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetFromBoundedAnnotation.java
index 875ae9e..e5af986 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetFromBoundedAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetFromBoundedAnnotation.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.choices.ChoicesFacetFromBoundedAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
 /**
  * @deprecated
@@ -37,8 +37,8 @@ public class ChoicesFacetFromBoundedAnnotation extends ChoicesFacetFromBoundedAb
             final FacetHolder holder,
             final DeploymentCategory deploymentCategory,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final PersistenceSessionService persistenceSessionService) {
-        super(holder, deploymentCategory, authenticationSessionProvider, persistenceSessionService);
+            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
+        super(holder, deploymentCategory, authenticationSessionProvider, persistenceSessionServiceInternal);
     }
 
     public static ChoicesFacet create(
@@ -46,13 +46,13 @@ public class ChoicesFacetFromBoundedAnnotation extends ChoicesFacetFromBoundedAb
             final FacetHolder holder,
             final DeploymentCategory deploymentCategory,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final PersistenceSessionService persistenceSessionService) {
+            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
         if (annotation == null) {
             return null;
         }
 
         return new ChoicesFacetFromBoundedAnnotation(holder, deploymentCategory, authenticationSessionProvider,
-                persistenceSessionService);
+                persistenceSessionServiceInternal);
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ConfigurationServiceInternal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ConfigurationServiceInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ConfigurationServiceInternal.java
index 206b7f3..f30d221 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ConfigurationServiceInternal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ConfigurationServiceInternal.java
@@ -23,7 +23,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 public interface ConfigurationServiceInternal {
 
     /**
-     * Provided by {@link RuntimeContextAbstract} itself, cloned properties from
+     * Provided by {@link RuntimeContextDefault} itself, cloned properties from
      * {@link IsisConfiguration}.
      * 
      * <p>
@@ -32,7 +32,7 @@ public interface ConfigurationServiceInternal {
     String getProperty(String name);
 
     /**
-     * Provided by {@link RuntimeContextAbstract} itself, cloned properties from
+     * Provided by {@link RuntimeContextDefault} itself, cloned properties from
      * {@link IsisConfiguration}.
      * 
      * <p>

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationDefault.java
deleted file mode 100644
index ac6b75d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationDefault.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.runtimecontext;
-
-import java.util.Locale;
-import java.util.TimeZone;
-
-import org.apache.isis.applib.profiles.Localization;
-
-public final class LocalizationDefault implements Localization {
-
-    @Override
-    public Locale getLocale() {
-        return Locale.getDefault();
-    }
-
-    @Override
-    public TimeZone getTimeZone() {
-        return TimeZone.getDefault();
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProvider.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProvider.java
deleted file mode 100644
index 040a90a..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProvider.java
+++ /dev/null
@@ -1,30 +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.runtimecontext;
-
-import org.apache.isis.applib.profiles.Localization;
-
-public interface LocalizationProvider {
-
-    void injectInto(final Object candidate);
-
-    Localization getLocalization();
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProviderAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProviderAbstract.java
deleted file mode 100644
index 1b044dd..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProviderAbstract.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.runtimecontext;
-
-public abstract class LocalizationProviderAbstract implements LocalizationProvider {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (LocalizationProviderAware.class.isAssignableFrom(candidate.getClass())) {
-            final LocalizationProviderAware cast = LocalizationProviderAware.class.cast(candidate);
-            cast.setLocalizationProvider(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProviderAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProviderAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProviderAware.java
deleted file mode 100644
index fe64e29..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/LocalizationProviderAware.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.runtimecontext;
-
-public interface LocalizationProviderAware {
-
-    void setLocalizationProvider(LocalizationProvider localizationProvider);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerService.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerService.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerService.java
deleted file mode 100644
index d33e327..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerService.java
+++ /dev/null
@@ -1,48 +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.runtimecontext;
-
-public interface MessageBrokerService {
-
-    void injectInto(final Object candidate);
-
-    /**
-     * Provided by <tt>MessageBroker</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt>.
-     */
-    void informUser(String message);
-
-    /**
-     * Provided by <tt>MessageBroker</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt>.
-     */
-    void warnUser(String message);
-
-    /**
-     * Provided by <tt>MessageBroker</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt>.
-     */
-    void raiseError(String message);
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerServiceAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerServiceAbstract.java
deleted file mode 100644
index c6d4a22..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerServiceAbstract.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.runtimecontext;
-
-public abstract class MessageBrokerServiceAbstract implements MessageBrokerService {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (MessageBrokerServiceAware.class.isAssignableFrom(candidate.getClass())) {
-            final MessageBrokerServiceAware cast = MessageBrokerServiceAware.class.cast(candidate);
-            cast.setMessageBrokerService(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerServiceAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerServiceAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerServiceAware.java
deleted file mode 100644
index d1c9db0..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/MessageBrokerServiceAware.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.runtimecontext;
-
-public interface MessageBrokerServiceAware {
-
-    public void setMessageBrokerService(final MessageBrokerService messageBrokerService);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionService.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionService.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionService.java
deleted file mode 100644
index d2db00a..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionService.java
+++ /dev/null
@@ -1,140 +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.runtimecontext;
-
-import java.util.List;
-
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService2;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public interface PersistenceSessionService extends AdapterManager {
-
-    void injectInto(final Object candidate);
-
-    // ///////////////////////////////////////////
-    // Instantiate
-    // ///////////////////////////////////////////
-
-    /**
-     * Provided by the <tt>PersistenceSession</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt>.
-     */
-    ObjectAdapter createTransientInstance(ObjectSpecification spec);
-
-    ObjectAdapter createViewModelInstance(ObjectSpecification spec, String memento);
-
-
-    // ///////////////////////////////////////////
-    // retrieve
-    // ///////////////////////////////////////////
-
-    /**
-     * Provided by <tt>PersistenceSession</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt>.
-     */
-    void resolve(Object parent);
-
-    /**
-     * Provided by <tt>PersistenceSession</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt>.
-     */
-    void resolve(Object parent, Object field);
-
-    /**
-     * Provided by <tt>PersistenceSession</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>BookmarkServicesDefault</tt>.
-     * @return
-     */
-    Object lookup(Bookmark bookmark, final BookmarkService2.FieldResetPolicy fieldResetPolicy);
-
-    Bookmark bookmarkFor(Object domainObject);
-
-    Bookmark bookmarkFor(Class<?> cls, String identifier);
-
-
-    // ///////////////////////////////////////////
-    // beginTran, flush, commit
-    // ///////////////////////////////////////////
-
-    void beginTran();
-
-    /**
-     * Provided by <tt>TransactionManager</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt>.
-     */
-    boolean flush();
-
-    /**
-     * Provided by <tt>TransactionManager</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt>.
-     */
-    void commit();
-
-
-    /**
-     * Provided by the <tt>PersistenceSession</tt> when used by framework.
-     * 
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt> and also by
-     * <tt>DomainObjectInvocationHandler#handleSaveMethod()</tt>.
-     */
-    void makePersistent(ObjectAdapter adapter);
-
-    /**
-     * Provided by <tt>UpdateNotifier</tt> and <tt>PersistenceSession</tt> when
-     * used by framework.
-     * 
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt>.
-     */
-    void remove(ObjectAdapter adapter);
-
-
-    /**
-     * Provided by <tt>PersistenceSession</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt> and also by the choices
-     * facets.
-     */
-    <T> List<ObjectAdapter> allMatchingQuery(Query<T> query);
-
-    /**
-     * Provided by <tt>PersistenceSession</tt> when used by framework.
-     *
-     * <p>
-     * Called by <tt>DomainObjectContainerDefault</tt>.
-     */
-    <T> ObjectAdapter firstMatchingQuery(Query<T> query);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionServiceAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionServiceAbstract.java
deleted file mode 100644
index 6924b1a..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionServiceAbstract.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.runtimecontext;
-
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-
-public abstract class PersistenceSessionServiceAbstract implements PersistenceSessionService {
-
-    @Override
-    public void injectInto(final Object candidate) {
-        if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
-            final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
-            cast.setAdapterManager(this);
-        }
-        if (PersistenceSessionServiceAware.class.isAssignableFrom(candidate.getClass())) {
-            final PersistenceSessionServiceAware cast = PersistenceSessionServiceAware.class.cast(candidate);
-            cast.setPersistenceSessionService(this);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionServiceAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionServiceAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionServiceAware.java
deleted file mode 100644
index 69aec02..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/PersistenceSessionServiceAware.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.runtimecontext;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-public interface PersistenceSessionServiceAware {
-
-    @Programmatic
-    public void setPersistenceSessionService(final PersistenceSessionService persistenceSessionService);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/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 0c63162..f7de429 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
@@ -19,41 +19,86 @@
 
 package org.apache.isis.core.metamodel.runtimecontext;
 
+import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
+import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 
-/**
- * Decouples the metamodel from a runtime.
- * 
- */
-public interface RuntimeContext extends ApplicationScopedComponent {
+public class RuntimeContext implements ApplicationScopedComponent {
+
+
+    //region > constructor, fields
+
+    private final ServicesInjector servicesInjector;
+    private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+    private final MessageBrokerServiceInternal messageBrokerServiceInternal;
+    private final LocalizationProviderInternal localizationProvider;
+    private final TransactionStateProviderInternal transactionStateProvider;
+
+    public RuntimeContext(
+            final ServicesInjector servicesInjector) {
+        this.servicesInjector = servicesInjector;
+
+        this.persistenceSessionServiceInternal =
+                servicesInjector.lookupService(PersistenceSessionServiceInternal.class);
+        this.messageBrokerServiceInternal =
+                servicesInjector.lookupService(MessageBrokerServiceInternal.class);
+        this.localizationProvider =
+                servicesInjector.lookupService(LocalizationProviderInternal.class);
+        this.transactionStateProvider =
+                servicesInjector.lookupService(TransactionStateProviderInternal.class);
+
+    }
+
+    //endregion
+
+    @Programmatic
+    public LocalizationProviderInternal getLocalizationProvider() {
+        return localizationProvider;
+    }
 
-    void injectInto(Object candidate);
+    @Programmatic
+    public PersistenceSessionServiceInternal getPersistenceSessionService() {
+        return persistenceSessionServiceInternal;
+    }
 
-    // //////////////////////////////////////
-    // application-scoped
-    // //////////////////////////////////////
+    @Programmatic
+    public MessageBrokerServiceInternal getMessageBrokerService() {
+        return messageBrokerServiceInternal;
+    }
 
-    public ServicesInjector getServicesInjector();
 
-    public SpecificationLoader getSpecificationLoader();
+    @Programmatic
+    public TransactionStateProviderInternal getTransactionStateProvider() {
+        return transactionStateProvider;
+    }
 
-    // //////////////////////////////////////
-    // session-scoped
-    // //////////////////////////////////////
 
-    public LocalizationProvider getLocalizationProvider();
+    @Programmatic
+    public ServicesInjector getServicesInjector() {
+        return servicesInjector;
+    }
 
-    public MessageBrokerService getMessageBrokerService();
 
-    // //////////////////////////////////////
-    // request-scoped
-    // //////////////////////////////////////
+    @Programmatic
+    public void injectInto(final Object candidate) {
+        if (RuntimeContextAware.class.isAssignableFrom(candidate.getClass())) {
+            final RuntimeContextAware cast = RuntimeContextAware.class.cast(candidate);
+            cast.setRuntimeContext(this);
+        }
+        injectSubcomponentsInto(candidate);
+    }
 
-    public PersistenceSessionService getPersistenceSessionService();
+    protected void injectSubcomponentsInto(final Object candidate) {
+        getTransactionStateProvider().injectInto(candidate);
+        getServicesInjector().injectInto(candidate);
+        getLocalizationProvider().injectInto(candidate);
+        getPersistenceSessionService().injectInto(candidate);
+        getMessageBrokerService().injectInto(candidate);
+    }
 
-    public TransactionStateProvider getTransactionStateProvider();
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/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
deleted file mode 100644
index d4a18ed..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/RuntimeContextAbstract.java
+++ /dev/null
@@ -1,67 +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.runtimecontext;
-
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-
-public abstract class RuntimeContextAbstract implements RuntimeContext {
-
-    private final ServicesInjector servicesInjector;
-    private final SpecificationLoader specificationLoader;
-
-    public RuntimeContextAbstract(
-            final ServicesInjector servicesInjector,
-            final SpecificationLoader specificationLoader) {
-        this.servicesInjector = servicesInjector;
-        this.specificationLoader = specificationLoader;
-    }
-
-
-    @Override
-    public ServicesInjector getServicesInjector() {
-        return servicesInjector;
-    }
-
-    @Override
-    public SpecificationLoader getSpecificationLoader() {
-        return specificationLoader;
-    }
-
-
-    //@Override
-    public void injectInto(final Object candidate) {
-        if (RuntimeContextAware.class.isAssignableFrom(candidate.getClass())) {
-            final RuntimeContextAware cast = RuntimeContextAware.class.cast(candidate);
-            cast.setRuntimeContext(this);
-        }
-        injectSubcomponentsInto(candidate);
-    }
-
-    protected void injectSubcomponentsInto(final Object candidate) {
-        getTransactionStateProvider().injectInto(candidate);
-        getServicesInjector().injectInto(candidate);
-        getLocalizationProvider().injectInto(candidate);
-        getPersistenceSessionService().injectInto(candidate);
-        getMessageBrokerService().injectInto(candidate);
-        getSpecificationLoader().injectInto(candidate);
-    }
-
-}


[05/30] isis git commit: ISIS-1407: collapsed SpecificationLoaderSpi and SpecificationLoader interfaces; removed ProgrammableReflector (finally!)

Posted by da...@apache.org.
ISIS-1407: collapsed SpecificationLoaderSpi and SpecificationLoader interfaces; removed ProgrammableReflector (finally!)


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

Branch: refs/heads/ISIS-1408
Commit: 62bc104c114aa44ae5366c6164b55cfd320e2088
Parents: ab2c2ca
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu May 19 18:02:29 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu May 19 18:02:29 2016 +0100

----------------------------------------------------------------------
 .../runtimecontext/RuntimeContextAbstract.java  |   8 +-
 .../noruntime/RuntimeContextNoRuntime.java      |   6 +-
 .../ApplicationFeatureRepositoryDefault.java    |  10 +-
 .../metamodel/spec/SpecificationLoader.java     |  15 ++-
 .../spec/SpecificationLoaderAbstract.java       |  29 -----
 .../metamodel/spec/SpecificationLoaderSpi.java  |  37 ------
 .../spec/SpecificationLoaderSpiAware.java       |  25 ----
 .../specloader/ObjectReflectorDefault.java      |  15 ++-
 .../specloader/ObjectReflectorInstaller.java    |   6 +-
 .../specimpl/FacetedMethodsBuilder.java         |   6 +-
 .../specimpl/FacetedMethodsBuilderContext.java  |   6 +-
 .../validator/MetaModelValidator.java           |   4 +-
 .../validator/MetaModelValidatorAbstract.java   |   8 +-
 .../validator/MetaModelValidatorComposite.java  |   8 +-
 .../validator/MetaModelValidatorVisiting.java   |   2 +-
 .../progmodels/dflt/JavaReflectorHelper.java    |   4 +-
 .../JavaReflectorInstallerNoDecorators.java     |   6 +-
 .../AbstractFacetFactoryJUnit4TestCase.java     |   4 +-
 .../facets/AbstractFacetFactoryTest.java        |  17 ++-
 .../metamodel/facets/ProgrammableReflector.java | 120 -------------------
 .../actions/ActionMethodsFacetFactoryTest.java  |  91 +++++++++-----
 .../ActionAnnotationFacetFactoryTest.java       |   6 +-
 ...tationFacetFactoryTest_actionInvocation.java |  34 ++++--
 ...nLayoutAnnotationFacetFactoryJunit4Test.java |  20 ++--
 ...youtXmlLayoutAnnotationFacetFactoryTest.java |  10 +-
 ...erivedFromDomainServiceFacetFactoryTest.java |  12 +-
 ...erivedFromDomainServiceFacetFactoryTest.java |  12 +-
 .../CollectionFieldMethodsFacetFactoryTest.java |   2 +-
 .../CollectionAnnotationFacetFactoryTest.java   |   8 +-
 ...ClassAnnotationOnMemberFacetFactoryTest.java |   2 +-
 .../named/NamedAnnotationFacetFactoryTest.java  |  10 +-
 ...ssClassFacetOnTypeAnnotationFactoryTest.java |   2 +-
 ...ClassFaFacetOnTypeAnnotationFactoryTest.java |   4 +-
 .../TitleAnnotationFacetFactoryTest.java        |   4 +-
 ...cIdFacetDerivedFromClassNameFactoryTest.java |   2 +-
 .../ParameterAnnotationFacetFactoryTest.java    |   6 +-
 .../PropertyMethodsFacetFactoryTest.java        |  10 +-
 .../PropertyAnnotationFacetFactoryTest.java     |   8 +-
 .../mask/MaskAnnotationFacetFactoryTest.java    |  14 ++-
 .../ValueSemanticsProviderAbstractTestCase.java |   4 +-
 .../ObjectFixtureFilePersistor.java             |   6 +-
 .../isis/core/runtime/memento/Memento.java      |   4 +-
 .../container/DomainObjectContainerResolve.java |   4 +-
 .../internal/RuntimeContextFromSession.java     |   4 +-
 .../query/PersistenceQueryAbstract.java         |   4 +-
 .../background/BackgroundServiceDefault.java    |   4 +-
 .../CommandDtoServiceInternalDefault.java       |   4 +-
 .../isis/core/runtime/system/IsisSystem.java    |   6 +-
 .../core/runtime/system/SystemConstants.java    |   4 +-
 .../runtime/system/context/IsisContext.java     |   4 +-
 .../system/persistence/PersistenceSession.java  |   8 +-
 .../persistence/PersistenceSessionFactory.java  |   4 +-
 .../runtime/system/session/IsisSession.java     |   4 +-
 .../system/session/IsisSessionFactory.java      |  10 +-
 .../IsisComponentProvider.java                  |   6 +-
 .../IsisComponentProviderDefault2.java          |   6 +-
 .../IsisComponentProviderUsingInstallers.java   |   6 +-
 ...ataNucleusPersistenceMechanismInstaller.java |   4 +-
 .../persistence/spi/JdoObjectIdSerializer.java  |   4 +-
 .../jdo/service/RegisterEntities.java           |   4 +-
 .../adapterfactory/pojo/PojoAdapterTest.java    |   4 +-
 .../server/resources/ResourceAbstract.java      |   4 +-
 .../viewer/wicket/model/mementos/SpecUtils.java |   4 +-
 .../model/models/EntityCollectionModel.java     |   4 +-
 .../viewer/wicket/model/models/EntityModel.java |   4 +-
 .../bookmarkedpages/BookmarkedPagesPanel.java   |   4 +-
 .../viewer/wicket/ui/pages/PageAbstract.java    |   4 +-
 .../ObjectResolveAndObjectChangedEnhancer.java  |   4 +-
 .../core/bytecode/cglib/ClassEnhancerTest.java  |   6 +-
 .../ObjectResolveAndObjectChangedEnhancer.java  |   4 +-
 .../isis/objectstore/nosql/ObjectReader.java    |   4 +-
 .../nosql/keys/KeyCreatorDefault.java           |   4 +-
 .../nosql/NoSqlIdentifierGeneratorTest.java     |   4 +-
 .../objectstore/nosql/NoSqlKeyCreatorTest.java  |   6 +-
 .../mongo/ObjectReaderMongoIntegrationTest.java |   4 +-
 .../sql/auto/AbstractAutoMapper.java            |   4 +-
 ...icForeignKeyInChildCollectionBaseMapper.java |   4 +-
 .../jdbc/JdbcAbstractReferenceFieldMapping.java |   4 +-
 .../isis/objectstore/xml/XmlObjectStore.java    |   4 +-
 .../xml/internal/data/xml/XmlDataManager.java   |   4 +-
 .../internal/UserProfileDataHandlerTest.java    |   4 +-
 .../common/fixtures/AbstractFixturePeer.java    |   4 +-
 .../dnd/viewer/basic/ApplicationWorkspace.java  |   4 +-
 .../text/MultilineTextFieldContentTest.java     |   4 +-
 .../dnd/view/text/TextFieldContentTest.java     |   4 +-
 .../viewer/basic/ActionFieldBuilderTest.java    |   4 +-
 .../dnd/viewer/basic/ScrollBorderTest.java      |   4 +-
 .../context/DefaultOidObjectMapping.java        |   4 +-
 .../scimpi/dispatcher/debug/DebugAction.java    |   4 +-
 .../scimpi/dispatcher/view/debug/Debug.java     |   4 +-
 .../DeveloperUtilitiesServiceDefault.java       |  10 +-
 91 files changed, 342 insertions(+), 489 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/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 58443c6..00074a3 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
@@ -19,16 +19,16 @@
 
 package org.apache.isis.core.metamodel.runtimecontext;
 
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 
 public abstract class RuntimeContextAbstract implements RuntimeContext {
 
     private final ServicesInjector servicesInjector;
-    private final SpecificationLoaderSpi specificationLoader;
+    private final SpecificationLoader specificationLoader;
 
     public RuntimeContextAbstract(
             final ServicesInjector servicesInjector,
-            final SpecificationLoaderSpi specificationLoader) {
+            final SpecificationLoader specificationLoader) {
         this.servicesInjector = servicesInjector;
         this.specificationLoader = specificationLoader;
     }
@@ -40,7 +40,7 @@ public abstract class RuntimeContextAbstract implements RuntimeContext {
     }
 
     @Override
-    public SpecificationLoaderSpi getSpecificationLoader() {
+    public SpecificationLoader getSpecificationLoader() {
         return specificationLoader;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/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 da18619..c673643 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
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAb
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 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;
@@ -53,14 +53,14 @@ public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
 
     public RuntimeContextNoRuntime(
             final ServicesInjector servicesInjector,
-            final SpecificationLoaderSpi specificationLoader) {
+            final SpecificationLoader specificationLoader) {
         this(new IsisConfigurationDefault(null), servicesInjector, specificationLoader);
     }
 
     public RuntimeContextNoRuntime(
             final IsisConfigurationDefault isisConfiguration,
             final ServicesInjector servicesInjector,
-            final SpecificationLoaderSpi specificationLoader) {
+            final SpecificationLoader specificationLoader) {
         super(servicesInjector, specificationLoader);
         persistenceSessionService = new PersistenceSessionServiceAbstract() {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index 70fbbb4..f801f83 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -53,8 +53,8 @@ import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySe
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpiAware;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -65,7 +65,7 @@ import org.apache.isis.core.metamodel.specloader.specimpl.ContributeeMember;
         nature = NatureOfService.DOMAIN,
         repositoryFor = ApplicationFeature.class
 )
-public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRepository, SpecificationLoaderSpiAware,
+public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRepository, SpecificationLoaderAware,
         ServicesInjectorAware {
 
     //region > caches
@@ -515,11 +515,11 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
     @Inject
     DomainObjectContainer container;
 
-    private SpecificationLoaderSpi specificationLoader;
+    private SpecificationLoader specificationLoader;
 
     @Programmatic
     @Override
-    public void setSpecificationLoaderSpi(final SpecificationLoaderSpi specificationLoader) {
+    public void setSpecificationLoader(final SpecificationLoader specificationLoader) {
         this.specificationLoader = specificationLoader;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java
index 271a389..bacbd39 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java
@@ -19,10 +19,12 @@ package org.apache.isis.core.metamodel.spec;
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
+import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 
-public interface SpecificationLoader {
+public interface SpecificationLoader extends ApplicationScopedComponent {
 
     ObjectSpecification lookupBySpecId(ObjectSpecId objectSpecId);
 
@@ -85,4 +87,15 @@ public interface SpecificationLoader {
 
 
 
+
+    void injectInto(final Object candidate);
+
+    void init(final RuntimeContext runtimeContext);
+    void shutdown();
+
+    boolean isInitialized();
+
+    void validateAndAssert();
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAbstract.java
deleted file mode 100644
index 5447e12..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAbstract.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.spec;
-
-public abstract class SpecificationLoaderAbstract implements SpecificationLoader {
-
-    public void injectInto(final Object candidate) {
-        if (SpecificationLoaderAware.class.isAssignableFrom(candidate.getClass())) {
-            final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);
-            cast.setSpecificationLoader(this);
-        }
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpi.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpi.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpi.java
deleted file mode 100644
index c1cce08..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpi.java
+++ /dev/null
@@ -1,37 +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.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-
-public interface SpecificationLoaderSpi extends ApplicationScopedComponent, SpecificationLoader {
-
-    void injectInto(final Object candidate);
-
-    void init(final RuntimeContext runtimeContext);
-    void shutdown();
-
-    void invalidateCache(Class<?> domainClass);
-    
-    boolean isInitialized();
-
-    void validateAndAssert();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpiAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpiAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpiAware.java
deleted file mode 100644
index 46b6a19..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpiAware.java
+++ /dev/null
@@ -1,25 +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;
-
-public interface SpecificationLoaderSpiAware {
-
-    public void setSpecificationLoaderSpi(SpecificationLoaderSpi specificationLoader);
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/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 af0be4e..c21fbd3 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
@@ -58,9 +58,8 @@ import org.apache.isis.core.metamodel.spec.FreeStandingList;
 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;
@@ -98,7 +97,7 @@ import static org.hamcrest.Matchers.notNullValue;
  * <p>
  * In addition, the {@link RuntimeContext} can optionally be injected, but will
  * default to {@link RuntimeContextNoRuntime} if not provided prior to
- * {@link SpecificationLoaderSpi#init(RuntimeContext) initialization}. The purpose of {@link RuntimeContext} is to
+ * {@link SpecificationLoader#init(RuntimeContext) initialization}. The purpose of {@link RuntimeContext} is to
  * allow the metamodel to be used standalone, for example in a Maven plugin. The
  * {@link RuntimeContextNoRuntime} implementation will through an exception for
  * any methods (such as finding an {@link ObjectAdapter adapter}) because there
@@ -108,8 +107,8 @@ import static org.hamcrest.Matchers.notNullValue;
  * to its <tt>IsisContext</tt>.
  */
 
-public final class ObjectReflectorDefault
-        implements SpecificationLoaderSpi, ApplicationScopedComponent {
+public class ObjectReflectorDefault
+        implements SpecificationLoader, ApplicationScopedComponent {
 
     private final static Logger LOG = LoggerFactory.getLogger(ObjectReflectorDefault.class);
 
@@ -531,9 +530,9 @@ public final class ObjectReflectorDefault
     @Override
     public void injectInto(final Object candidate) {
         final Class<?> candidateClass = candidate.getClass();
-        if (SpecificationLoaderSpiAware.class.isAssignableFrom(candidateClass)) {
-            final SpecificationLoaderSpiAware cast = SpecificationLoaderSpiAware.class.cast(candidate);
-            cast.setSpecificationLoaderSpi(this);
+        if (SpecificationLoaderAware.class.isAssignableFrom(candidateClass)) {
+            final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);
+            cast.setSpecificationLoader(this);
         }
         if (SpecificationLoaderAware.class.isAssignableFrom(candidateClass)) {
             final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
index a78aec4..e982aab 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
@@ -24,16 +24,16 @@ import org.apache.isis.core.commons.components.Installer;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 
 /**
- * Installs a {@link SpecificationLoaderSpi} during system start up.
+ * Installs a {@link SpecificationLoader} during system start up.
  */
 public interface ObjectReflectorInstaller extends Installer {
 
     static String TYPE = "reflector";
 
-    SpecificationLoaderSpi createReflector(
+    SpecificationLoader createReflector(
             final DeploymentCategory deploymentCategory,
             final Collection<MetaModelRefiner> metaModelRefiners, final ServicesInjectorSpi servicesInjector);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
index b5a1605..2c3f87c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
@@ -53,7 +53,7 @@ import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader.Reader
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader2;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 import org.apache.isis.core.metamodel.specloader.traverser.SpecificationTraverser;
@@ -129,7 +129,7 @@ public class FacetedMethodsBuilder {
     private final SpecificationTraverser specificationTraverser = new SpecificationTraverser();
     private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
 
-    private final SpecificationLoaderSpi specificationLoader;
+    private final SpecificationLoader specificationLoader;
 
     private final List<LayoutMetadataReader> layoutMetadataReaders;
     private final Map<LayoutMetadataReader, LayoutMetadataReader2.Support> supportByReader;
@@ -608,7 +608,7 @@ public class FacetedMethodsBuilder {
     // Dependencies
     // ////////////////////////////////////////////////////////////////////////////
 
-    private SpecificationLoaderSpi getSpecificationLoader() {
+    private SpecificationLoader getSpecificationLoader() {
         return specificationLoader;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java
index a6fc944..c9802c8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java
@@ -18,16 +18,16 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import java.util.List;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 
 public class FacetedMethodsBuilderContext {
-    public final SpecificationLoaderSpi specificationLoader;
+    public final SpecificationLoader specificationLoader;
     public final FacetProcessor facetProcessor;
     public final List<LayoutMetadataReader> layoutMetadataReaders;
 
     public FacetedMethodsBuilderContext(
-            final SpecificationLoaderSpi specificationLoader,
+            final SpecificationLoader specificationLoader,
             final FacetProcessor facetProcessor,
             final List<LayoutMetadataReader> layoutMetadataReaders) {
         this.specificationLoader = specificationLoader;

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
index f90fd9d..17b151f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
@@ -20,9 +20,9 @@
 package org.apache.isis.core.metamodel.specloader.validator;
 
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpiAware;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
 
-public interface MetaModelValidator extends SpecificationLoaderSpiAware, ApplicationScopedComponent {
+public interface MetaModelValidator extends SpecificationLoaderAware, ApplicationScopedComponent {
 
     public void init();
     public void shutdown();

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
index ba9cc93..85224d5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
@@ -23,11 +23,11 @@ import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
 
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 
 public abstract class MetaModelValidatorAbstract implements MetaModelValidator {
 
-    private SpecificationLoaderSpi specificationLoaderSpi;
+    private SpecificationLoader specificationLoaderSpi;
 
     // ////////////////////////////////////////////////////////////////////
     // init, shutdown
@@ -44,12 +44,12 @@ public abstract class MetaModelValidatorAbstract implements MetaModelValidator {
     // Dependencies (due to *Aware)
     // ////////////////////////////////////////////////////////////////////
 
-    public SpecificationLoaderSpi getSpecificationLoaderSpi() {
+    public SpecificationLoader getSpecificationLoader() {
         return specificationLoaderSpi;
     }
 
     @Override
-    public void setSpecificationLoaderSpi(final SpecificationLoaderSpi specificationLoader) {
+    public void setSpecificationLoader(final SpecificationLoader specificationLoader) {
         this.specificationLoaderSpi = specificationLoader;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
index 6fb12ba..053b4d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorComposite.java
@@ -24,7 +24,7 @@ import java.util.List;
 
 import com.google.common.collect.Lists;
 
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 
 public class MetaModelValidatorComposite extends MetaModelValidatorAbstract {
 
@@ -52,10 +52,10 @@ public class MetaModelValidatorComposite extends MetaModelValidatorAbstract {
     }
 
     @Override
-    public void setSpecificationLoaderSpi(final SpecificationLoaderSpi specificationLoader) {
-        super.setSpecificationLoaderSpi(specificationLoader);
+    public void setSpecificationLoader(final SpecificationLoader specificationLoader) {
+        super.setSpecificationLoader(specificationLoader);
         for (final MetaModelValidator validator : validators) {
-            validator.setSpecificationLoaderSpi(specificationLoader);
+            validator.setSpecificationLoader(specificationLoader);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorVisiting.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorVisiting.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorVisiting.java
index 386209e..c493f33 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorVisiting.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorVisiting.java
@@ -42,7 +42,7 @@ public final class MetaModelValidatorVisiting extends MetaModelValidatorAbstract
         
     @Override
     public final void validate(ValidationFailures validationFailures) {
-        final Collection<ObjectSpecification> objectSpecs = getSpecificationLoaderSpi().allSpecifications();
+        final Collection<ObjectSpecification> objectSpecs = getSpecificationLoader().allSpecifications();
         for (final ObjectSpecification objSpec : objectSpecs) {
             if(!visitor.visit(objSpec, validationFailures)) {
                 break;

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
index 745315f..e1ed792 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
@@ -42,7 +42,7 @@ public final class JavaReflectorHelper  {
 
     private JavaReflectorHelper(){}
     
-    public static SpecificationLoaderSpi createObjectReflector(
+    public static SpecificationLoader createObjectReflector(
             final DeploymentCategory deploymentCategory,
             final IsisConfiguration configuration,
             final ProgrammingModel programmingModel,

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
index b50ba23..e4d3379 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java
@@ -38,7 +38,7 @@ import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.ObjectReflectorInstaller;
 import org.apache.isis.core.metamodel.specloader.ReflectorConstants;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
@@ -68,7 +68,7 @@ public class JavaReflectorInstallerNoDecorators extends InstallerAbstract implem
     //region > createReflector, doCreateReflector
 
     @Override
-    public SpecificationLoaderSpi createReflector(
+    public SpecificationLoader createReflector(
             final DeploymentCategory deploymentCategory,
             final Collection<MetaModelRefiner> metaModelRefiners,
             final ServicesInjectorSpi servicesInjector) {
@@ -183,7 +183,7 @@ public class JavaReflectorInstallerNoDecorators extends InstallerAbstract implem
 
     @Override
     public List<Class<?>> getTypes() {
-        return listOf(SpecificationLoaderSpi.class);
+        return listOf(SpecificationLoader.class);
     }
 
     //endregion

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index 6d6084b..75feaff 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.Au
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -56,7 +56,7 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
     @Mock
-    protected SpecificationLoaderSpi mockSpecificationLoaderSpi;
+    protected SpecificationLoader mockSpecificationLoader;
     @Mock
     protected AdapterManager mockAdapterManager;
     @Mock

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index 5a13dd5..5375a62 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -38,6 +38,8 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 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.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import junit.framework.TestCase;
@@ -67,7 +69,7 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
     protected AuthenticationSession mockAuthenticationSession;
 
     protected IsisConfigurationDefault stubConfiguration;
-    protected ProgrammableReflector programmableReflector;
+    protected SpecificationLoader mockSpecificationLoader;
     protected ProgrammableMethodRemover methodRemover;
 
     protected FacetHolder facetHolder;
@@ -92,8 +94,6 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
     protected void setUp() throws Exception {
         super.setUp();
 
-        programmableReflector = new ProgrammableReflector();
-
         facetHolder = new IdentifiedHolderImpl(
                 Identifier.propertyOrCollectionIdentifier(Customer.class, "firstName"));
         facetedMethod = FacetedMethod.createForProperty(Customer.class, "firstName");
@@ -109,6 +109,8 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
         stubConfiguration = new IsisConfigurationDefault();
         mockAuthenticationSession = context.mock(AuthenticationSession.class);
 
+        mockSpecificationLoader = context.mock(SpecificationLoader.class);
+
         context.checking(new Expectations() {{
 
             allowing(mockServicesInjector).lookupService(TranslationService.class);
@@ -131,9 +133,16 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
         }});
     }
 
+    protected void allowing_specificationLoader_loadSpecification_any_willReturn(final ObjectSpecification objectSpecification) {
+        context.checking(new Expectations() {{
+            allowing(mockSpecificationLoader).loadSpecification(with(any(Class.class)));
+            will(returnValue(objectSpecification));
+        }});
+    }
+
     @Override
     protected void tearDown() throws Exception {
-        programmableReflector = null;
+        mockSpecificationLoader = null;
         methodRemover = null;
         facetedMethod = null;
         super.tearDown();

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ProgrammableReflector.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ProgrammableReflector.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ProgrammableReflector.java
deleted file mode 100644
index 913c965..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ProgrammableReflector.java
+++ /dev/null
@@ -1,120 +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;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.commons.exceptions.NotYetImplementedException;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-
-public class ProgrammableReflector extends SpecificationLoaderAbstract implements SpecificationLoaderSpi, ApplicationScopedComponent {
-
-    public void init(final RuntimeContext runtimeContext) {
-    }
-
-    public void shutdown() {
-    }
-
-    @Override
-    public Collection<ObjectSpecification> allSpecifications() {
-        return null;
-    }
-
-    @Override
-    public ObjectSpecification loadSpecification(final Class<?> type) {
-        return loadSpecification(type.getName());
-    }
-
-    private ObjectSpecification loadSpecificationStringReturn;
-
-    public void setLoadSpecificationStringReturn(final ObjectSpecification loadSpecificationStringReturn) {
-        this.loadSpecificationStringReturn = loadSpecificationStringReturn;
-    }
-
-    @Override
-    public ObjectSpecification loadSpecification(final String name) {
-        return loadSpecificationStringReturn;
-    }
-
-    @Override
-    public boolean loaded(final Class<?> cls) {
-        throw new NotYetImplementedException();
-    }
-
-    @Override
-    public boolean loaded(final String fullyQualifiedClassName) {
-        throw new NotYetImplementedException();
-    }
-
-    @Override
-    public void injectInto(final Object candidate) {
-    }
-
-    @Override
-    public boolean loadSpecifications(final List<Class<?>> typesToLoad, final Class<?> typeToIgnore) {
-        return false;
-    }
-
-    @Override
-    public boolean loadSpecifications(final List<Class<?>> typesToLoad) {
-        return false;
-    }
-
-    @Override
-    public ObjectSpecification lookupBySpecId(ObjectSpecId objectSpecId) {
-        return null;
-    }
-
-    @Override
-    public ObjectSpecification introspectIfRequired(ObjectSpecification spec) {
-        throw new NotYetImplementedException();
-    }
-
-    @Override
-    public List<Class<?>> getServiceClasses() {
-        throw new NotYetImplementedException();
-    }
-
-    @Override
-    public boolean isServiceClass(final Class<?> cls) {
-        throw new NotYetImplementedException();
-    }
-
-    @Override
-    public void invalidateCache(Class<?> domainClass) {
-    }
-
-    @Override
-    public boolean isInitialized() {
-        return false;
-    }
-
-    @Override
-    public void validateAndAssert() {
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
index c38a540..cfa7c57 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
@@ -136,7 +136,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     }
 
     private void injectServicesIntoAndAllowingServiceInjectorLookups(final FacetFactoryAbstract facetFactory) {
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
     }
 
@@ -146,7 +146,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -165,12 +166,14 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         assertEquals("An Action With Named Annotation", namedFacet.value());
     }
 
+
     public void testPicksUpDebugPrefixAndSetsNameAppropriatelyAlso() {
         final ActionNamedDebugExplorationFacetFactory facetFactory = new ActionNamedDebugExplorationFacetFactory();
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -196,7 +199,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -222,7 +226,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -245,7 +250,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -268,7 +274,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -299,7 +306,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -330,7 +338,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -361,7 +370,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -398,7 +408,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         }
         final Method actionMethod = findMethod(Customer.class, "someAction", new Class[] { int.class, Long.class });
         final Method choicesMethod = findMethod(Customer.class, "choicesSomeAction", new Class[] {});
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
 
@@ -416,7 +427,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -481,7 +493,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final Method actionMethod = findMethod(CustomerStatic.class, "someAction", new Class[] { int.class, Long.class });
         final Method nameMethod = findMethod(CustomerStatic.class, "nameSomeAction");
@@ -499,8 +512,10 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testInstallsDescribedAsFacetUsingDescriptionAndRemovesMethod() {
         final DescribedAsFacetStaticMethodFactory facetFactory = new DescribedAsFacetStaticMethodFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final Method actionMethod = findMethod(CustomerStatic.class, "someAction", new Class[] { int.class, Long.class });
         final Method descriptionMethod = findMethod(CustomerStatic.class, "descriptionSomeAction");
@@ -523,7 +538,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         final Method actionMethod = findMethod(CustomerStatic.class, "someAction", new Class[] { int.class, Long.class });
         final Method alwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideSomeAction", new Class[] {});
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         facetFactory.process(new ProcessMethodContext(CustomerStatic.class, null, null, actionMethod, methodRemover, facetedMethod));
 
@@ -536,8 +552,10 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testInstallsHiddenFacetUsingAlwaysHideWhenNotAndRemovesMethod() {
         final HiddenFacetStaticMethodFactory facetFactory = new HiddenFacetStaticMethodFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final Method actionMethod = findMethod(CustomerStatic.class, "otherAction", new Class[] { int.class, Long.class });
         final Method alwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideOtherAction", new Class[] {});
@@ -554,7 +572,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final Method actionMethod = findMethod(CustomerStatic.class, "someAction", new Class[] { int.class, Long.class });
         final Method protectMethod = findMethod(CustomerStatic.class, "protectSomeAction", new Class[] {});
@@ -572,8 +591,10 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testDoesNotInstallDisabledFacetUsingProtectWhenNotAndRemovesMethod() {
         final DisabledFacetStaticMethodFacetFactory facetFactory = new DisabledFacetStaticMethodFacetFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
+
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final Method actionMethod = findMethod(CustomerStatic.class, "otherAction", new Class[] { int.class, Long.class });
         final Method protectMethod = findMethod(CustomerStatic.class, "protectOtherAction", new Class[] {});
@@ -591,7 +612,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final Method actionMethod = findMethod(CustomerStatic.class, "someAction", new Class[] { int.class, Long.class });
         final Method hideMethod = findMethod(CustomerStatic.class, "hideSomeAction", new Class[] { UserMemento.class });
@@ -609,10 +631,11 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     public void testInstallsDisabledForSessionFacetAndRemovesMethod() {
         final DisableForSessionFacetViaMethodFactory facetFactory = new DisableForSessionFacetViaMethodFactory();
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final Method actionMethod = findMethod(CustomerStatic.class, "someAction", new Class[] { int.class, Long.class });
         final Method disableMethod = findMethod(CustomerStatic.class, "disableSomeAction", new Class[] { UserMemento.class });
@@ -633,7 +656,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -682,7 +706,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -746,7 +771,8 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -780,13 +806,14 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         final ActionChoicesFacetViaMethodFactory facetFactory = new ActionChoicesFacetViaMethodFactory();
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+//        mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final ActionParameterChoicesFacetViaMethodFactory facetFactoryForParams = new ActionParameterChoicesFacetViaMethodFactory();
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForParams);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+//        mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -827,13 +854,15 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactory);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         final ActionParameterDefaultsFacetViaMethodFactory facetFactoryForParams = new ActionParameterDefaultsFacetViaMethodFactory();
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForParams);
 
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
index 47c815f..02b2317 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
@@ -117,10 +117,10 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
 
     void allowingLoadSpecificationRequestsFor(final Class<?> cls, final Class<?> returnType) {
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(cls);
+            allowing(mockSpecificationLoader).loadSpecification(cls);
             will(returnValue(mockTypeSpec));
 
-            allowing(mockSpecificationLoaderSpi).loadSpecification(returnType);
+            allowing(mockSpecificationLoader).loadSpecification(returnType);
             will(returnValue(mockReturnTypeSpec));
         }});
     }
@@ -146,7 +146,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
 
         actionMethod = findMethod(Customer.class, "someAction");
 
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
index a50cf4e..2c3a616 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
@@ -57,7 +57,7 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
     }
 
     private void injectServicesIntoAndAllowingServiceInjectorLookups(final FacetFactoryAbstract facetFactory) {
-        facetFactory.setSpecificationLoader(programmableReflector);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
         facetFactory.setServicesInjector(mockServicesInjector);
 
         context.checking(new Expectations() {{
@@ -75,7 +75,9 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
     }
 
     public void testActionInvocationFacetIsInstalledAndMethodRemoved() {
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -96,7 +98,9 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
     }
 
     public void testActionReturnTypeWhenVoid() {
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -113,7 +117,9 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
     }
 
     public void testActionReturnTypeWhenNotVoid() {
-        programmableReflector.setLoadSpecificationStringReturn(stringSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(stringSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(stringSpec);
+
 
         class Customer {
             @SuppressWarnings("unused")
@@ -131,7 +137,8 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
     }
 
     public void testActionOnType() {
-        programmableReflector.setLoadSpecificationStringReturn(customerSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(customerSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(customerSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -149,7 +156,9 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
     }
 
     public void testActionsPickedUpFromSuperclass() {
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(voidSpec);
 
         class Customer {
             @SuppressWarnings("unused")
@@ -171,17 +180,20 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
     }
 
     public void testActionsPickedUpFromSuperclassButHelpersFromSubClass() {
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
+        allowing_specificationLoader_loadSpecification_any_willReturn(voidSpec);
+
 
         final ActionParameterChoicesFacetViaMethodFactory facetFactoryForChoices = new ActionParameterChoicesFacetViaMethodFactory();
-        facetFactoryForChoices.setSpecificationLoader(programmableReflector);
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        facetFactoryForChoices.setSpecificationLoader(mockSpecificationLoader);
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
 
         injectServicesIntoAndAllowingServiceInjectorLookups(facetFactoryForChoices);
 
         final DisableForContextFacetViaMethodFactory facetFactoryForDisable = new DisableForContextFacetViaMethodFactory();
-        facetFactoryForDisable.setSpecificationLoader(programmableReflector);
-        programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+        facetFactoryForDisable.setSpecificationLoader(mockSpecificationLoader);
+
+        // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
         facetFactoryForDisable.setServicesInjector(mockServicesInjector);
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryJunit4Test.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryJunit4Test.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryJunit4Test.java
index 865fcb8..2623a5d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryJunit4Test.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryJunit4Test.java
@@ -49,7 +49,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
     @Before
     public void setUp() throws Exception {
         facetFactory = new ActionLayoutFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
     }
 
     public static class Contributing extends ActionLayoutAnnotationFacetFactoryJunit4Test {
@@ -68,7 +68,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
             }
 
             context.checking(new Expectations() {{
-                allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+                allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -102,7 +102,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
             }
 
             context.checking(new Expectations() {{
-                allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+                allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -137,7 +137,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
             }
 
             context.checking(new Expectations() {{
-                allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+                allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -175,7 +175,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
             }
 
             context.checking(new Expectations() {{
-                allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+                allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -211,7 +211,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
             }
 
             context.checking(new Expectations() {{
-                allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+                allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -248,7 +248,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
             }
 
             context.checking(new Expectations() {{
-                allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+                allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -286,7 +286,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
             }
 
             context.checking(new Expectations() {{
-                allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+                allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -324,7 +324,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
             }
 
             context.checking(new Expectations() {{
-                allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+                allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -362,7 +362,7 @@ public class ActionLayoutAnnotationFacetFactoryJunit4Test extends AbstractFacetF
             }
 
             context.checking(new Expectations() {{
-                allowing(mockSpecificationLoaderSpi).loadSpecification(Customer.class);
+                allowing(mockSpecificationLoader).loadSpecification(Customer.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(DomainServiceFacet.class);

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutXmlLayoutAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutXmlLayoutAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutXmlLayoutAnnotationFacetFactoryTest.java
index ebb573d..c39fea7 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutXmlLayoutAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutXmlLayoutAnnotationFacetFactoryTest.java
@@ -48,7 +48,7 @@ public class ActionLayoutXmlLayoutAnnotationFacetFactoryTest extends AbstractFac
     @Before
     public void setUp() throws Exception {
         facetFactory = new ActionLayoutFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
     }
 
     @Test
@@ -65,7 +65,7 @@ public class ActionLayoutXmlLayoutAnnotationFacetFactoryTest extends AbstractFac
 
         context.checking(new Expectations() {
             {
-                allowing(mockSpecificationLoaderSpi).loadSpecification(Customer.class);
+                allowing(mockSpecificationLoader).loadSpecification(Customer.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(MixinFacet.class);
@@ -100,7 +100,7 @@ public class ActionLayoutXmlLayoutAnnotationFacetFactoryTest extends AbstractFac
 
         context.checking(new Expectations() {
             {
-                allowing(mockSpecificationLoaderSpi).loadSpecification(Customer.class);
+                allowing(mockSpecificationLoader).loadSpecification(Customer.class);
                 will(returnValue(mockObjSpec));
 
                 allowing(mockObjSpec).getFacet(MixinFacet.class);
@@ -135,7 +135,7 @@ public class ActionLayoutXmlLayoutAnnotationFacetFactoryTest extends AbstractFac
 
             context.checking(new Expectations() {
                 {
-                    allowing(mockSpecificationLoaderSpi).loadSpecification(Customer.class);
+                    allowing(mockSpecificationLoader).loadSpecification(Customer.class);
                     will(returnValue(mockObjSpec));
 
                     allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -171,7 +171,7 @@ public class ActionLayoutXmlLayoutAnnotationFacetFactoryTest extends AbstractFac
 
             context.checking(new Expectations() {
                 {
-                    allowing(mockSpecificationLoaderSpi).loadSpecification(Customer.class);
+                    allowing(mockSpecificationLoader).loadSpecification(Customer.class);
                     will(returnValue(mockObjSpec));
 
                     allowing(mockObjSpec).getFacet(DomainServiceFacet.class);

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/derived/NotContributedFacetDerivedFromDomainServiceFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/derived/NotContributedFacetDerivedFromDomainServiceFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/derived/NotContributedFacetDerivedFromDomainServiceFacetFactoryTest.java
index 00a8548..a121bd6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/derived/NotContributedFacetDerivedFromDomainServiceFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notcontributed/derived/NotContributedFacetDerivedFromDomainServiceFacetFactoryTest.java
@@ -44,7 +44,7 @@ public class NotContributedFacetDerivedFromDomainServiceFacetFactoryTest extends
     @Before
     public void setUp() throws Exception {
         facetFactory = new NotContributedFacetDerivedFromDomainServiceFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
     }
 
     @Test
@@ -60,7 +60,7 @@ public class NotContributedFacetDerivedFromDomainServiceFacetFactoryTest extends
         }
 
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+            allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
             will(returnValue(mockObjSpec));
 
             allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -96,7 +96,7 @@ public class NotContributedFacetDerivedFromDomainServiceFacetFactoryTest extends
         }
 
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+            allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
             will(returnValue(mockObjSpec));
 
             allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -132,7 +132,7 @@ public class NotContributedFacetDerivedFromDomainServiceFacetFactoryTest extends
         }
 
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+            allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
             will(returnValue(mockObjSpec));
 
             allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -165,7 +165,7 @@ public class NotContributedFacetDerivedFromDomainServiceFacetFactoryTest extends
         }
 
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+            allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
             will(returnValue(mockObjSpec));
 
             allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -197,7 +197,7 @@ public class NotContributedFacetDerivedFromDomainServiceFacetFactoryTest extends
         }
 
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+            allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
             will(returnValue(mockObjSpec));
 
             allowing(mockObjSpec).getFacet(DomainServiceFacet.class);

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest.java
index a450f07..c4001cd 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest.java
@@ -44,7 +44,7 @@ public class NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest exten
     @Before
     public void setUp() throws Exception {
         facetFactory = new NotInServiceMenuFacetDerivedFromDomainServiceFacetFactory();
-        facetFactory.setSpecificationLoader(mockSpecificationLoaderSpi);
+        facetFactory.setSpecificationLoader(mockSpecificationLoader);
     }
 
     @Test
@@ -60,7 +60,7 @@ public class NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest exten
         }
 
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+            allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
             will(returnValue(mockObjSpec));
 
             allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -96,7 +96,7 @@ public class NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest exten
         }
 
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+            allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
             will(returnValue(mockObjSpec));
 
             allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -132,7 +132,7 @@ public class NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest exten
         }
 
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+            allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
             will(returnValue(mockObjSpec));
 
             allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -165,7 +165,7 @@ public class NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest exten
         }
 
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+            allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
             will(returnValue(mockObjSpec));
 
             allowing(mockObjSpec).getFacet(DomainServiceFacet.class);
@@ -197,7 +197,7 @@ public class NotInServiceMenuFacetDerivedFromDomainServiceFacetFactoryTest exten
         }
 
         context.checking(new Expectations() {{
-            allowing(mockSpecificationLoaderSpi).loadSpecification(CustomerService.class);
+            allowing(mockSpecificationLoader).loadSpecification(CustomerService.class);
             will(returnValue(mockObjSpec));
 
             allowing(mockObjSpec).getFacet(DomainServiceFacet.class);

http://git-wip-us.apache.org/repos/asf/isis/blob/62bc104c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
index 2ea9754..5e0ae47 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
@@ -124,7 +124,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
 
     private void injectServicesIntoAndAllowingServiceInjectorLookups(final FacetFactoryAbstract ffa) {
 
-        ffa.setSpecificationLoader(programmableReflector);
+        ffa.setSpecificationLoader(mockSpecificationLoader);
         ffa.setServicesInjector(mockServicesInjector);
 
     }


[18/30] isis git commit: ISIS-1409: internal components of RuntimeContext subclasses are now internal domain services; RuntimeContext hierarchy collapsed into a single class.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
index 17d7134..6232877 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 
@@ -59,7 +59,7 @@ public class IsisSession implements SessionScopedComponent {
     private final IsisSessionFactory isisSessionFactory;
 
     private final AuthenticationSession authenticationSession;
-    private PersistenceSession persistenceSession; // only non-final so can be
+    private PersistenceSessionInternal persistenceSession; // only non-final so can be
     // replaced in tests.
     private final int id;
     private long accessTime;
@@ -69,7 +69,7 @@ public class IsisSession implements SessionScopedComponent {
     public IsisSession(
             final IsisSessionFactory sessionFactory,
             final AuthenticationSession authenticationSession,
-            final PersistenceSession persistenceSession) {
+            final PersistenceSessionInternal persistenceSession) {
 
         // global context
         ensureThatArg(sessionFactory, is(not(nullValue())), "execution context factory is required");
@@ -99,7 +99,7 @@ public class IsisSession implements SessionScopedComponent {
      * Closes session.
      */
     public void close() {
-        final PersistenceSession persistenceSession = getPersistenceSession();
+        final PersistenceSessionInternal persistenceSession = getPersistenceSession();
         if(persistenceSession != null) {
             persistenceSession.close();
         }
@@ -172,9 +172,9 @@ public class IsisSession implements SessionScopedComponent {
 
     //region > Persistence Session
     /**
-     * The {@link PersistenceSession} within this {@link IsisSession}.
+     * The {@link PersistenceSessionInternal} within this {@link IsisSession}.
      */
-    public PersistenceSession getPersistenceSession() {
+    public PersistenceSessionInternal getPersistenceSession() {
         return persistenceSession;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
index 9522be5..d05d199 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
 import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
 
 import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
@@ -114,7 +114,7 @@ public class IsisSessionFactory implements ApplicationScopedComponent {
      * Creates and {@link IsisSession#open() open}s the {@link IsisSession}.
      */
     public IsisSession openSession(final AuthenticationSession authenticationSession) {
-        final PersistenceSession persistenceSession =
+        final PersistenceSessionInternal persistenceSession =
                 persistenceSessionFactory.createPersistenceSession(
                         servicesInjector, getSpecificationLoader(), authenticationSession);
         ensureThatArg(persistenceSession, is(not(nullValue())));
@@ -124,7 +124,7 @@ public class IsisSessionFactory implements ApplicationScopedComponent {
 
     protected IsisSession newIsisSession(
             final AuthenticationSession authenticationSession,
-            final PersistenceSession persistenceSession) {
+            final PersistenceSessionInternal persistenceSession) {
         return new IsisSession(this, authenticationSession, persistenceSession);
     }
 
@@ -190,7 +190,7 @@ public class IsisSessionFactory implements ApplicationScopedComponent {
 
     /**
      * The {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory} that will be used to create
-     * {@link PersistenceSession} {@link IsisSession#getPersistenceSession()
+     * {@link PersistenceSessionInternal} {@link IsisSession#getPersistenceSession()
      * within} the {@link IsisSession}.
      */
     public PersistenceSessionFactory getPersistenceSessionFactory() {

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/IsisConfigurationForJdoIntegTests.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/IsisConfigurationForJdoIntegTests.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/IsisConfigurationForJdoIntegTests.java
index db9b05d..ffc6ba8 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/IsisConfigurationForJdoIntegTests.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/IsisConfigurationForJdoIntegTests.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.resource.ResourceStreamSource;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.runtime.persistence.PersistenceConstants;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.objectstore.jdo.service.RegisterEntities;
 
 /**
@@ -87,7 +87,7 @@ public class IsisConfigurationForJdoIntegTests extends IsisConfigurationDefault
         addDataNucleusProperty("datanucleus.cache.level2.mode","ENABLE_SELECTIVE");
 
         // automatically install any fixtures that might have been registered
-        add(PersistenceSession.INSTALL_FIXTURES_KEY , "true");
+        add(PersistenceSessionInternal.INSTALL_FIXTURES_KEY , "true");
 
         add(PersistenceConstants.ENFORCE_SAFE_SEMANTICS, ""+PersistenceConstants.ENFORCE_SAFE_SEMANTICS_DEFAULT);
 
@@ -98,13 +98,13 @@ public class IsisConfigurationForJdoIntegTests extends IsisConfigurationDefault
 
     @Programmatic
     public final IsisConfigurationForJdoIntegTests addDataNucleusProperty(final String key, final String value) {
-        add(PersistenceSession.DATANUCLEUS_PROPERTIES_ROOT + key, value);
+        add(PersistenceSessionInternal.DATANUCLEUS_PROPERTIES_ROOT + key, value);
         return this;
     }
 
     @Programmatic
     public final IsisConfigurationForJdoIntegTests putDataNucleusProperty(final String key, final String value) {
-        put(PersistenceSession.DATANUCLEUS_PROPERTIES_ROOT + key, value);
+        put(PersistenceSessionInternal.DATANUCLEUS_PROPERTIES_ROOT + key, value);
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
index 47fd736..5dc33fe 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/IsisLifecycleListener.java
@@ -22,7 +22,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.isis.core.runtime.system.persistence.IsisLifecycleListener2;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 /**
  * @deprecated - retained only for backward compatibility of logging (in logging.properties file).
@@ -32,7 +32,7 @@ public class IsisLifecycleListener extends IsisLifecycleListener2 {
 
     public static final Logger LOG = LoggerFactory.getLogger(IsisLifecycleListener.class);
 
-    public IsisLifecycleListener(final PersistenceSession persistenceSession) {
+    public IsisLifecycleListener(final PersistenceSessionInternal persistenceSession) {
         super(persistenceSession);
         throw new RuntimeException("Use IsisLifecycleListener2 instead");
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
index 1ff10a5..83ad191 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/service/support/IsisJdoSupportImpl.java
@@ -48,7 +48,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChec
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.objectstore.jdo.applib.service.support.IsisJdoSupport;
 
 
@@ -192,7 +192,7 @@ public class IsisJdoSupportImpl implements IsisJdoSupport {
 
     // //////////////////////////////////////
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
index 3951bea..25e88d8 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
@@ -61,7 +61,7 @@ public class PojoAdapterTest {
     @Mock
     private AuthenticationSession mockAuthenticationSession;
     @Mock
-    private PersistenceSession mockPersistenceSession;
+    private PersistenceSessionInternal mockPersistenceSession;
     @Mock
     private Localization mockLocalization;
     

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
index 23f4ed5..d58ad58 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
@@ -33,11 +33,11 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 public class PojoAdapterBuilder {
 
-    private PersistenceSession persistenceSession;
+    private PersistenceSessionInternal persistenceSession;
 
     private PojoAdapterBuilder(){
     }
@@ -166,7 +166,7 @@ public class PojoAdapterBuilder {
         return this;
     }
 
-    public PojoAdapterBuilder with(PersistenceSession persistenceSession) {
+    public PojoAdapterBuilder with(PersistenceSessionInternal persistenceSession) {
         this.persistenceSession = persistenceSession;
         return this;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
index 1cb45ec..927466f 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
@@ -27,8 +27,8 @@ import org.junit.Test;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
 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;
@@ -65,9 +65,9 @@ public class ObjectActionLayoutXmlDefaultTest {
     @Mock
     private ServicesInjector mockServicesInjector;
     @Mock
-    private MessageBrokerService mockMessageBrokerService;
+    private MessageBrokerServiceInternal mockMessageBrokerServiceInternal;
     @Mock
-    private PersistenceSessionService mockPersistenceSessionService;
+    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
 
     @Before
     public void setUp() throws Exception {
@@ -81,7 +81,7 @@ public class ObjectActionLayoutXmlDefaultTest {
 
         action = new ObjectActionDefault(mockFacetedMethod, new ObjectMemberDependencies(
                 mockSpecificationLookup, mockServicesInjector,
-                mockPersistenceSessionService));
+                mockPersistenceSessionServiceInternal));
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
index 4c3ae79..42b214d 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
@@ -28,8 +28,8 @@ 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.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
 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;
@@ -75,9 +75,9 @@ public class OneToManyAssociationDefaultTest {
     @Mock
     private AdapterManager mockAdapterManager;
     @Mock
-    private MessageBrokerService mockMessageBrokerService;
+    private MessageBrokerServiceInternal mockMessageBrokerServiceInternal;
     @Mock
-    private PersistenceSessionService mockPersistenceSessionService;
+    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
     @Mock
     private FacetedMethod mockPeer;
     @Mock
@@ -96,7 +96,7 @@ public class OneToManyAssociationDefaultTest {
         allowingSpecLoaderToReturnSpecs();
         association = new OneToManyAssociationDefault(mockPeer, new ObjectMemberDependencies(
                 mockSpecificationLookup, mockServicesInjector,
-                mockPersistenceSessionService));
+                mockPersistenceSessionServiceInternal));
     }
 
     private void allowingSpecLoaderToReturnSpecs() {

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
index 7477085..2f751f1 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer;
 
 public interface RendererContext {
@@ -38,7 +38,7 @@ public interface RendererContext {
 
     IsisConfiguration getConfiguration();
     
-    PersistenceSession getPersistenceSession();
+    PersistenceSessionInternal getPersistenceSession();
 
     /**
      * @deprecated - replaced by {@link #getPersistenceSession()}.

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
index a0314ae..e0aa28b 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseExce
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 
 /**
@@ -845,7 +845,7 @@ public final class JsonValueEncoder {
         return testAdapterManager != null? testAdapterManager: getPersistenceSession();
     }
 
-    private static PersistenceSession getPersistenceSession() {
+    private static PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
index 226ae18..2748019 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
@@ -46,7 +46,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.DomainModel;
@@ -73,7 +73,7 @@ public class ResourceContext implements RendererContext6 {
     private final SpecificationLoader specificationLoader;
     private final AuthenticationSession authenticationSession;
     private final Localization localization;
-    private final PersistenceSession persistenceSession;
+    private final PersistenceSessionInternal persistenceSession;
 
     private List<List<String>> followLinks;
 
@@ -104,7 +104,7 @@ public class ResourceContext implements RendererContext6 {
             final SpecificationLoader specificationLoader,
             final AuthenticationSession authenticationSession,
             final Localization localization,
-            final PersistenceSession persistenceSession,
+            final PersistenceSessionInternal persistenceSession,
             final InteractionInitiatedBy interactionInitiatedBy) {
 
         this.httpHeaders = httpHeaders;
@@ -291,7 +291,7 @@ public class ResourceContext implements RendererContext6 {
     }
 
     @Override
-    public PersistenceSession getPersistenceSession() {
+    public PersistenceSessionInternal getPersistenceSession() {
         return persistenceSession;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
index 783dc6d..325f6af 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
@@ -31,7 +31,7 @@ import org.jboss.resteasy.plugins.providers.jaxb.JAXBXmlRootElementProvider;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.schema.utils.jaxbadapters.PersistentEntityAdapter;
 
 @Provider
@@ -57,7 +57,7 @@ public class RestfulObjectsJaxbWriterForXml extends JAXBXmlRootElementProvider {
         marshaller.setAdapter(PersistentEntityAdapter.class, new PersistentEntityAdapter() {
             @Override
             protected BookmarkService getBookmarkService() {
-                final PersistenceSession persistenceSession = IsisContext.getPersistenceSession();
+                final PersistenceSessionInternal persistenceSession = IsisContext.getPersistenceSession();
                 final ServicesInjector servicesInjector = persistenceSession.getServicesInjector();
                 return servicesInjector.lookupService(BookmarkService.class);
             }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index 916d500..e51c040 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.RendererContext6;
@@ -89,7 +89,7 @@ public class DomainResourceHelper {
         }
 
         @Override
-        public PersistenceSession getPersistenceSession() {
+        public PersistenceSessionInternal getPersistenceSession() {
             return rendererContext.getPersistenceSession();
         }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
index fae5b0c..ae7beda 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
@@ -44,7 +44,7 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
@@ -192,7 +192,7 @@ public abstract class ResourceAbstract {
         return IsisContext.getSpecificationLoader();
     }
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/SwaggerSpecResource.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/SwaggerSpecResource.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/SwaggerSpecResource.java
index d051294..98030e6 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/SwaggerSpecResource.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/SwaggerSpecResource.java
@@ -31,7 +31,7 @@ import javax.ws.rs.core.MediaType;
 import org.apache.isis.applib.services.swagger.SwaggerService;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 @Path("/swagger")
 public class SwaggerSpecResource {
@@ -118,7 +118,7 @@ public class SwaggerSpecResource {
             return getPersistenceSession().getServicesInjector();
         }
 
-        PersistenceSession getPersistenceSession() {
+        PersistenceSessionInternal getPersistenceSession() {
             return IsisContext.getPersistenceSession();
         }
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
index e344dba..ce36146 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
@@ -21,7 +21,7 @@ package org.apache.isis.viewer.restfulobjects.server.util;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
 
 public final class OidUtils {
@@ -55,7 +55,7 @@ public final class OidUtils {
             final String oidStrUnencoded) {
         RootOid rootOid = RootOid.deString(oidStrUnencoded, getOidMarshaller());
 
-        final PersistenceSession persistenceSession = rendererContext.getPersistenceSession();
+        final PersistenceSessionInternal persistenceSession = rendererContext.getPersistenceSession();
 
         return persistenceSession.adapterForAny(rootOid);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
index 226e806..298cab1 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
@@ -28,7 +28,7 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 /**
  * Implementation of a Wicket {@link IConverter} for {@link ObjectAdapter}s,
@@ -68,7 +68,7 @@ public class ConverterForObjectAdapter implements IConverter<ObjectAdapter> {
     // Dependencies (from context)
     // //////////////////////////////////////////////////////////
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
index ba66e40..4859663 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 
 /**
@@ -81,7 +81,7 @@ public class ConverterForObjectAdapterMemento implements IConverter<ObjectAdapte
     // Dependencies (from context)
     // //////////////////////////////////////////////////////////
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/LocalizerForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/LocalizerForIsis.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/LocalizerForIsis.java
index 66be00a..bfb4fa8 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/LocalizerForIsis.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/LocalizerForIsis.java
@@ -35,7 +35,7 @@ import org.apache.wicket.model.IModel;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
 
 /**
@@ -152,7 +152,7 @@ public class LocalizerForIsis extends Localizer {
         return getPersistenceSession().getServicesInjector();
     }
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java
index f5738a8..3b59a46 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java
@@ -36,7 +36,7 @@ import org.apache.isis.applib.services.linking.DeepLinkService;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
@@ -71,7 +71,7 @@ public class DeepLinkServiceWicket implements DeepLinkService {
         }
     }
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/PersistenceSessionProvider.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/PersistenceSessionProvider.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/PersistenceSessionProvider.java
index 3c6d78f..791695a 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/PersistenceSessionProvider.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/PersistenceSessionProvider.java
@@ -20,9 +20,9 @@
 package org.apache.isis.viewer.wicket.model.isis;
 
 
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 public interface PersistenceSessionProvider {
 
-    PersistenceSession getPersistenceSession();
+    PersistenceSessionInternal getPersistenceSession();
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
index ab8d0a3..706360d 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
@@ -42,7 +42,7 @@ import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.runtime.memento.Memento;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 public class ObjectAdapterMemento implements Serializable {
 
@@ -460,7 +460,7 @@ public class ObjectAdapterMemento implements Serializable {
     // Dependencies (from context)
     //////////////////////////////////////////////////
 
-    private static PersistenceSession getPersistenceSession() {
+    private static PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index 58d9ce3..99bf973 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -50,7 +50,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.links.LinksProvider;
@@ -514,7 +514,7 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
         return getPersistenceSessionStatic().getServicesInjector();
     }
 
-    private static PersistenceSession getPersistenceSessionStatic() {
+    private static PersistenceSessionInternal getPersistenceSessionStatic() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
index 52b0d58..44ddf68 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
@@ -24,7 +24,7 @@ import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 
 /**
  * Adapter for {@link LoadableDetachableModel}s, providing access to some of the
@@ -50,7 +50,7 @@ public abstract class ModelAbstract<T> extends LoadableDetachableModel<T> {
         return IsisContext.getAuthenticationSession();
     }
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
index 336f27e..f649cda 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.*;
@@ -92,7 +92,7 @@ public final class EntityActionLinkFactory extends ActionLinkFactoryAbstract {
     // Dependencies (from IsisContext)
     // ///////////////////////////////////////////////////////////////////
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
index e340d72..9489d8c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
 import org.apache.isis.viewer.wicket.model.isis.PersistenceSessionProvider;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
@@ -146,7 +146,7 @@ public abstract class FormComponentPanelAbstract<T> extends FormComponentPanel<T
     // ///////////////////////////////////////////////////////////////////
 
     @Override
-    public PersistenceSession getPersistenceSession() {
+    public PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
index dd0c68d..73cc105 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
@@ -29,7 +29,7 @@ import org.apache.wicket.request.IRequestHandler;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.model.models.ActionPrompt;
@@ -74,7 +74,7 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
                     final ActionPromptProvider promptProvider = ActionPromptProvider.Util.getFrom(getPage());
                     final ActionPrompt actionPrompt = promptProvider.getActionPrompt();
                     final ActionPromptHeaderPanel titlePanel =
-                            PersistenceSession.ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(
+                            PersistenceSessionInternal.ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(
                             new Callable<ActionPromptHeaderPanel>() {
                                 @Override
                                 public ActionPromptHeaderPanel call() throws Exception {

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index b7435ad..8ad0ad4 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -63,7 +63,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.wicket.model.common.PageParametersUtils;
 import org.apache.isis.viewer.wicket.model.hints.IsisEnvelopeEvent;
 import org.apache.isis.viewer.wicket.model.hints.IsisEventLetterAbstract;
@@ -433,7 +433,7 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
         return getPersistenceSession().getServicesInjector();
     }
 
-    protected PersistenceSession getPersistenceSession() {
+    protected PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
index 6f2b7aa..e0a79cf 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
@@ -28,7 +28,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.wicket.model.isis.PersistenceSessionProvider;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
@@ -102,7 +102,7 @@ public abstract class FormAbstract<T> extends Form<T>
     // ///////////////////////////////////////////////////////////////////
 
     @Override
-    public PersistenceSession getPersistenceSession() {
+    public PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
index a3c4235..9953c99 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.system.IsisSystem;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionInternal;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
 import org.apache.isis.viewer.wicket.model.isis.PersistenceSessionProvider;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
@@ -146,7 +146,7 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel
     // ///////////////////////////////////////////////////////////////////
 
     @Override
-    public PersistenceSession getPersistenceSession() {
+    public PersistenceSessionInternal getPersistenceSession() {
         return IsisContext.getPersistenceSession();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
index cc52a94..4c67195 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
@@ -53,8 +53,8 @@ import org.apache.isis.applib.services.wrapper.listeners.InteractionListener;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcher;
 import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcherTypeSafe;
@@ -304,7 +304,7 @@ public class WrapperFactoryDefault implements WrapperFactory,
 
 
     private AdapterManager adapterManager;
-    private PersistenceSessionService persistenceSessionService;
+    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     protected AdapterManager getAdapterManager() {
         return adapterManager;
@@ -317,13 +317,13 @@ public class WrapperFactoryDefault implements WrapperFactory,
 
 
 
-    protected PersistenceSessionService getPersistenceSessionService() {
-        return persistenceSessionService;
+    protected PersistenceSessionServiceInternal getPersistenceSessionService() {
+        return persistenceSessionServiceInternal;
     }
     @Programmatic
     @Override
-    public void setPersistenceSessionService(final PersistenceSessionService persistenceSessionService) {
-        this.persistenceSessionService = persistenceSessionService;
+    public void setPersistenceSessionService(final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/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 7d80efd..3e2db21 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
@@ -60,7 +60,7 @@ import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet.Intent;
 import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
@@ -78,7 +78,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final SpecificationLoader specificationLoader;
     private final AdapterManager adapterManager;
-    private final PersistenceSessionService persistenceSessionService;
+    private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     private final ProxyContextHandler proxy;
     private final ExecutionMode executionMode;
@@ -124,7 +124,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             final AuthenticationSessionProvider authenticationSessionProvider,
             final SpecificationLoader specificationLoader,
             final AdapterManager adapterManager,
-            final PersistenceSessionService persistenceSessionService,
+            final PersistenceSessionServiceInternal persistenceSessionServiceInternal,
             final ProxyContextHandler proxy) {
         super(delegate, wrapperFactory, mode);
 
@@ -132,7 +132,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         this.authenticationSessionProvider = authenticationSessionProvider;
         this.specificationLoader = specificationLoader;
         this.adapterManager = adapterManager;
-        this.persistenceSessionService = persistenceSessionService;
+        this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
         this.executionMode = mode;
 
         try {
@@ -797,8 +797,8 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         return adapterManager;
     }
 
-    protected PersistenceSessionService getPersistenceSessionService() {
-        return persistenceSessionService;
+    protected PersistenceSessionServiceInternal getPersistenceSessionService() {
+        return persistenceSessionServiceInternal;
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
index 2b38ef5..d85fa45 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
@@ -26,7 +26,7 @@ import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.ensure.Ensure;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -51,16 +51,16 @@ public class ProxyContextHandler {
             final AuthenticationSessionProvider authenticationSessionProvider,
             final SpecificationLoader specificationLookup,
             final AdapterManager adapterManager,
-            final PersistenceSessionService persistenceSessionService) {
+            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
 
         Ensure.ensureThatArg(wrapperFactory, is(not(nullValue())));
         Ensure.ensureThatArg(authenticationSessionProvider, is(not(nullValue())));
         Ensure.ensureThatArg(specificationLookup, is(not(nullValue())));
         Ensure.ensureThatArg(adapterManager, is(not(nullValue())));
-        Ensure.ensureThatArg(persistenceSessionService, is(not(nullValue())));
+        Ensure.ensureThatArg(persistenceSessionServiceInternal, is(not(nullValue())));
 
         final DomainObjectInvocationHandler<T> invocationHandler = new DomainObjectInvocationHandler<T>(domainObject, wrapperFactory, mode, authenticationSessionProvider, specificationLookup, adapterManager,
-                persistenceSessionService, this);
+                persistenceSessionServiceInternal, this);
 
         return proxyCreator.instantiateProxy(invocationHandler);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 7cd2c9f..2b43ea3 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -51,8 +51,8 @@ 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.MessageBrokerService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -86,9 +86,9 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Mock
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock
-    private PersistenceSessionService mockPersistenceSessionService;
+    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
     @Mock
-    private MessageBrokerService mockMessageBrokerService;
+    private MessageBrokerServiceInternal mockMessageBrokerServiceInternal;
     @Mock
     private ServicesInjector mockServicesInjector;
     @Mock
@@ -137,7 +137,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         objectMemberDependencies = new ObjectMemberDependencies(
                 mockSpecificationLoader, mockServicesInjector,
-                mockPersistenceSessionService);
+                mockPersistenceSessionServiceInternal);
 
         employeeRepository = new EmployeeRepositoryImpl();
 
@@ -206,7 +206,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         wrapperFactory = createWrapperFactory();
         wrapperFactory.setAdapterManager(mockAdapterManager);
-        wrapperFactory.setPersistenceSessionService(mockPersistenceSessionService);
+        wrapperFactory.setPersistenceSessionService(mockPersistenceSessionServiceInternal);
         wrapperFactory.specificationLoader = mockSpecificationLoader;
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
 
@@ -290,7 +290,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
             allowing(mockAdapterForStringSmith).isDestroyed();
             will(returnValue(false));
 
-            allowing(mockPersistenceSessionService).adapterFor("Smith");
+            allowing(mockPersistenceSessionServiceInternal).adapterFor("Smith");
             will(returnValue(mockAdapterForStringSmith));
         }});
 
@@ -332,7 +332,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockAdapterForStringJones).getSpecification();
                 will(returnValue(mockStringSpec));
 
-                allowing(mockPersistenceSessionService).adapterFor("Jones");
+                allowing(mockPersistenceSessionServiceInternal).adapterFor("Jones");
                 will(returnValue(mockAdapterForStringJones));
 
                 ignoring(mockStringSpec);

http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index dd05e8a..05398f1 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -54,7 +54,7 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
 import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -84,7 +84,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     @Mock
     private IsisConfiguration mockConfiguration;
     @Mock
-    private PersistenceSessionService mockPersistenceSessionService;
+    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
     @Mock
     private SpecificationLoader mockSpecificationLoader;
 
@@ -127,7 +127,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
         wrapperFactory = createWrapperFactory();
         wrapperFactory.setAdapterManager(mockAdapterManager);
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
-        wrapperFactory.setPersistenceSessionService(mockPersistenceSessionService);
+        wrapperFactory.setPersistenceSessionService(mockPersistenceSessionServiceInternal);
         wrapperFactory.specificationLoader = mockSpecificationLoader;
 
         context.checking(new Expectations() {


[08/30] isis git commit: ISIS-1407: SpecificationLoader is now a concrete class (rolled ObjectReflector up into it).

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
index fface56..0d9aa6d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacetAbstract;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
index 22bfeaa..dcbf114 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
@@ -29,7 +29,7 @@ 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;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacetAbstract;
 
 public class PropertyDefaultFacetViaMethod extends PropertyDefaultFacetAbstract implements ImperativeFacet {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
index 1a0494a..9c5c651 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class PropertyDomainEventFacetAbstract
         extends SingleClassValueFacetAbstract implements PropertyDomainEventFacet {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetDefault.java
index 1dcc524..7e9c0d4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetDefault.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class PropertyDomainEventFacetDefault extends PropertyDomainEventFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPostsPropertyChangedEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPostsPropertyChangedEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPostsPropertyChangedEventAnnotation.java
index 3b90bb7..2a70364 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPostsPropertyChangedEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPostsPropertyChangedEventAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyAnnotation.java
index 381616e..2515cda 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class PropertyDomainEventFacetForPropertyAnnotation extends PropertyDomainEventFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyInteractionAnnotation.java
index c0cbbb2..3afdb20 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyInteractionAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 d7ab75b..f1a7ae4 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
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.runtimecontext;
 
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 00074a3..d33c189 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
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.runtimecontext;
 
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class RuntimeContextAbstract implements RuntimeContext {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 c673643..4639058 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
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAb
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
 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.specloader.SpecificationLoader;
 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;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index f801f83..fd8f0c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -53,8 +53,8 @@ import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySe
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 6868e22..aee46d9 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
@@ -64,8 +64,8 @@ import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAw
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 
 @DomainService(nature = NatureOfService.DOMAIN)
 public class DomainObjectContainerDefault

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
index 233bacc..ebdda4f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/factory/FactoryServiceDefault.java
@@ -35,8 +35,8 @@ import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 
 @DomainService(
         nature = NatureOfService.DOMAIN

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
index 0c32add..7904ea9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
@@ -104,8 +104,8 @@ import org.apache.isis.core.metamodel.facets.properties.propertylayout.NamedFace
 import org.apache.isis.core.metamodel.facets.properties.propertylayout.RenderedAdjustedFacetForPropertyXml;
 import org.apache.isis.core.metamodel.facets.properties.propertylayout.TypicalLengthFacetForPropertyXml;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
index 5135f62..89dd2c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
@@ -45,8 +45,8 @@ import org.apache.isis.applib.services.layout.LayoutService;
 import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
 
 @DomainService(

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index c433e45..060fd07 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -40,8 +40,8 @@ import org.apache.isis.applib.services.metamodel.MetaModelService2;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
index aa41824..15dc64b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
@@ -30,8 +30,8 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.swagger.SwaggerService;
 import org.apache.isis.core.metamodel.services.swagger.internal.SwaggerSpecGenerator;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 
 @DomainService(
         nature = NatureOfService.DOMAIN

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java
index d1704c4..d76dfb9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java
@@ -45,7 +45,7 @@ import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/SwaggerSpecGenerator.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/SwaggerSpecGenerator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/SwaggerSpecGenerator.java
index 25cb917..928996e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/SwaggerSpecGenerator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/SwaggerSpecGenerator.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.services.swagger.internal;
 import com.fasterxml.jackson.core.JsonProcessingException;
 
 import org.apache.isis.applib.services.swagger.SwaggerService;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 import io.swagger.models.Swagger;
 import io.swagger.util.Json;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 ffe719a..7ad59bf 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
@@ -51,6 +51,7 @@ import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
 import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionContainer;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationContainer;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 f8def88..40275f3 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
@@ -18,6 +18,7 @@ package org.apache.isis.core.metamodel.spec;
 
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 
 public class ObjectSpecificationDependencies {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java
deleted file mode 100644
index bacbd39..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java
+++ /dev/null
@@ -1,101 +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 java.util.Collection;
-import java.util.List;
-
-import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.facets.FacetFactory;
-import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-
-public interface SpecificationLoader extends ApplicationScopedComponent {
-
-    ObjectSpecification lookupBySpecId(ObjectSpecId objectSpecId);
-
-    /**
-     * Return the specification for the specified class of object.
-     * 
-     * <p>
-     * It is possible for this method to return <tt>null</tt>, for example if
-     * the configured {@link org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor}
-     * has filtered out the class.
-     */
-    ObjectSpecification loadSpecification(String fullyQualifiedClassName);
-
-    /**
-     * @see #loadSpecification(String)
-     */
-    ObjectSpecification loadSpecification(Class<?> cls);
-
-    /**
-     * Loads the specifications of the specified types.
-     */
-    boolean loadSpecifications(List<Class<?>> typesToLoad);
-
-    /**
-     * Loads the specifications of the specified types except the one specified
-     * (to prevent an infinite loop).
-     */
-    boolean loadSpecifications(List<Class<?>> typesToLoad, final Class<?> typeToIgnore);
-
-
-    /**
-     * Typically does not need to be called, but is available for {@link FacetFactory}s to force
-     * early introspection of referenced specs in certain circumstances.
-     * 
-     * <p>
-     * Originally introduced to support {@link AutoCompleteFacet}.
-     */
-    ObjectSpecification introspectIfRequired(final ObjectSpecification spec);
-    
-    
-    Collection<ObjectSpecification> allSpecifications();
-
-
-    List<Class<?>> getServiceClasses();
-
-    boolean isServiceClass(Class<?> cls);
-
-    /**
-     * Whether this class has been loaded.
-     */
-    boolean loaded(Class<?> cls);
-
-    /**
-     * @see #loaded(Class).
-     */
-    boolean loaded(String fullyQualifiedClassName);
-
-
-    void invalidateCache(Class<?> domainClass);
-
-
-
-
-    void injectInto(final Object candidate);
-
-    void init(final RuntimeContext runtimeContext);
-    void shutdown();
-
-    boolean isInitialized();
-
-    void validateAndAssert();
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAware.java
deleted file mode 100644
index 3504a84..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAware.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.spec;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-public interface SpecificationLoaderAware {
-
-    @Programmatic
-    public void setSpecificationLoader(final SpecificationLoader specificationLookup);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 f0b9f94..47d4223 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
@@ -18,7 +18,7 @@ package org.apache.isis.core.metamodel.spec.feature;
 
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ObjectMemberDependencies {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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
deleted file mode 100644
index c21fbd3..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
+++ /dev/null
@@ -1,604 +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.specloader;
-
-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.applib.AppManifest;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-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.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
-import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
-import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-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.FreeStandingList;
-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.feature.ObjectMemberDependencies;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
-import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
-import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilderContext;
-import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract;
-import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract.IntrospectionState;
-import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import org.apache.isis.core.metamodel.specloader.specimpl.standalonelist.ObjectSpecificationOnStandaloneList;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
-import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
-import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
-
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
-import static org.hamcrest.Matchers.emptyCollectionOf;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.not;
-import static org.hamcrest.Matchers.notNullValue;
-
-/**
- * Builds the meta-model.
- * 
- * <p>
- * The implementation provides for a degree of pluggability:
- * <ul>
- * <li>The most important plug-in point is {@link ProgrammingModel} that
- * specifies the set of {@link Facet} that make up programming model. If not
- * specified then defaults to {@link ProgrammingModelFacetsJava5} (which should
- * be used as a starting point for your own customizations).
- * <li>The only mandatory plug-in point is {@link ClassSubstitutor}, which
- * allows the class to be loaded to be substituted if required. This is used in
- * conjunction with some <tt>PersistenceMechanism</tt>s that do class
- * enhancement.
- * </ul>
- * 
- * <p>
- * In addition, the {@link RuntimeContext} can optionally be injected, but will
- * default to {@link RuntimeContextNoRuntime} if not provided prior to
- * {@link SpecificationLoader#init(RuntimeContext) initialization}. The purpose of {@link RuntimeContext} is to
- * allow the metamodel to be used standalone, for example in a Maven plugin. The
- * {@link RuntimeContextNoRuntime} implementation will through an exception for
- * any methods (such as finding an {@link ObjectAdapter adapter}) because there
- * is no runtime session. In the case of the metamodel being used by the
- * framework (that is, when there <i>is</i> a runtime), then the framework
- * injects an implementation of {@link RuntimeContext} that acts like a bridge
- * to its <tt>IsisContext</tt>.
- */
-
-public class ObjectReflectorDefault
-        implements SpecificationLoader, ApplicationScopedComponent {
-
-    private final static Logger LOG = LoggerFactory.getLogger(ObjectReflectorDefault.class);
-
-    private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
-
-    private final DeploymentCategory deploymentCategory;
-    private final ProgrammingModel programmingModel;
-    private final FacetProcessor facetProcessor;
-
-    private final ServicesInjectorSpi servicesInjector;
-
-    private final MetaModelValidator metaModelValidator;
-    private final SpecificationCacheDefault cache = new SpecificationCacheDefault();
-    private final List<LayoutMetadataReader> layoutMetadataReaders;
-
-    /**
-     * Can optionally be injected, but will default (to
-     * {@link RuntimeContextNoRuntime}) otherwise.
-     *
-     * <p>
-     * Should be injected when used by framework, but will default to a no-op implementation if the metamodel is
-     * being used standalone (eg for a code-generator).
-     */
-    private RuntimeContext runtimeContext;
-
-    private boolean initialized = false;
-    private ValidationFailures validationFailures;
-
-    // /////////////////////////////////////////////////////////////
-    // Constructor
-    // /////////////////////////////////////////////////////////////
-
-    public ObjectReflectorDefault(
-            final DeploymentCategory deploymentCategory,
-            final IsisConfiguration configuration,
-            final ProgrammingModel programmingModel,
-            final MetaModelValidator metaModelValidator,
-            final List<LayoutMetadataReader> layoutMetadataReaders,
-            final ServicesInjectorSpi servicesInjector) {
-
-        ensureThatArg(deploymentCategory, is(notNullValue()));
-        ensureThatArg(configuration, is(notNullValue()));
-        ensureThatArg(servicesInjector, is(notNullValue()));
-        ensureThatArg(programmingModel, is(notNullValue()));
-        ensureThatArg(metaModelValidator, is(notNullValue()));
-        ensureThatArg(layoutMetadataReaders, is(notNullValue()));
-        ensureThatArg(layoutMetadataReaders, is(not(emptyCollectionOf(LayoutMetadataReader.class))));
-
-        this.deploymentCategory = deploymentCategory;
-        this.servicesInjector = servicesInjector;
-
-        this.programmingModel = programmingModel;
-
-
-        this.metaModelValidator = metaModelValidator;
-        this.facetProcessor = new FacetProcessor(configuration, programmingModel);
-        this.layoutMetadataReaders = layoutMetadataReaders;
-    }
-
-    @Override
-    protected void finalize() throws Throwable {
-        super.finalize();
-        LOG.info("finalizing reflector factory " + this);
-    }
-
-    // /////////////////////////////////////////////////////////////
-    // init, shutdown
-    // /////////////////////////////////////////////////////////////
-
-    /**
-     * Initializes and wires up, and primes the cache based on any service
-     * classes (provided by the {@link ServicesInjectorSpi}).
-     * @param runtimeContext
-     */
-    public void init(final RuntimeContext runtimeContext) {
-
-        initialize(runtimeContext);
-
-        cacheBySpecId();
-        
-        initialized = true;
-    }
-
-    public void validateAndAssert() {
-        ValidationFailures validationFailures = validate();
-        validationFailures.assertNone();
-
-        cacheBySpecId();
-    }
-
-    public ValidationFailures validate() {
-        if(validationFailures == null) {
-            validationFailures = new ValidationFailures();
-            metaModelValidator.validate(validationFailures);
-        }
-        return validationFailures;
-    }
-
-    public void initialize(final RuntimeContext runtimeContext) {
-        this.runtimeContext = runtimeContext;
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("initialising " + this);
-        }
-
-        // default subcomponents
-        if (this.runtimeContext == null) {
-            servicesInjector.addFallbackIfRequired(ConfigurationServiceInternal.class, new IsisConfigurationDefault(null));
-            this.runtimeContext = new RuntimeContextNoRuntime(servicesInjector, this);
-        }
-
-        injectInto(metaModelValidator);
-
-        // wire subcomponents into each other
-        this.runtimeContext.injectInto(facetProcessor);
-        for (final LayoutMetadataReader layoutMetadataReader : layoutMetadataReaders) {
-            this.runtimeContext.injectInto(layoutMetadataReader);
-        }
-
-        // initialize subcomponents
-        programmingModel.init();
-        facetProcessor.init();
-        metaModelValidator.init();
-
-        loadSpecificationsForServices();
-        loadSpecificationsForMixins();
-    }
-
-    private void loadSpecificationsForServices() {
-        for (final Class<?> serviceClass : getServiceClasses()) {
-            final DomainService domainService = serviceClass.getAnnotation(DomainService.class);
-            if(domainService != null) {
-                if(domainService.nature() == NatureOfService.VIEW || domainService.nature() == NatureOfService.VIEW_CONTRIBUTIONS_ONLY) {
-                    internalLoadSpecification(serviceClass, domainService.nature());
-                }
-            }
-        }
-    }
-
-
-    private void loadSpecificationsForMixins() {
-        final Set<Class<?>> mixinTypes = AppManifest.Registry.instance().getMixinTypes();
-        if(mixinTypes == null) {
-            return;
-        }
-        for (final Class<?> mixinType : mixinTypes) {
-            internalLoadSpecification(mixinType);
-        }
-    }
-
-    private void cacheBySpecId() {
-        final Map<ObjectSpecId, ObjectSpecification> specById = Maps.newHashMap();
-        for (final ObjectSpecification objSpec : allSpecifications()) {
-            final ObjectSpecId objectSpecId = objSpec.getSpecId();
-            if (objectSpecId == null) {
-                continue;
-            }
-            specById.put(objectSpecId, objSpec);
-        }
-
-        getCache().setCacheBySpecId(specById);
-    }
-
-    @Override
-    public boolean isInitialized() {
-        return initialized;
-    }
-
-    public void shutdown() {
-        LOG.info("shutting down " + this);
-
-        initialized = false;
-        
-        getCache().clear();
-    }
-
-
-    @Override
-    public void invalidateCache(final Class<?> cls) {
-        
-        if(!getCache().isInitialized()) {
-            // could be called by JRebel plugin, before we are up-and-running
-            // just ignore.
-            return;
-        }
-        final Class<?> substitutedType = classSubstitutor.getClass(cls);
-        
-        if(substitutedType.isAnonymousClass()) {
-            // JRebel plugin might call us... just ignore 'em.
-            return;
-        }
-        
-        ObjectSpecification spec = loadSpecification(substitutedType);
-        while(spec != null) {
-            final Class<?> type = spec.getCorrespondingClass();
-            getCache().remove(type.getName());
-            if(spec.containsDoOpFacet(ObjectSpecIdFacet.class)) {
-                // umm.  Some specs do not have an ObjectSpecIdFacet...
-                recache(spec);
-            }
-            spec = spec.superclass(); 
-        }
-    }
-
-
-    private void recache(final ObjectSpecification newSpec) {
-        getCache().recache(newSpec);
-    }
-
-    
-
-    // /////////////////////////////////////////////////////////////
-    // install, load, allSpecifications, lookup
-    // /////////////////////////////////////////////////////////////
-
-    /**
-     * API: Return the specification for the specified class of object.
-     */
-    @Override
-    public final ObjectSpecification loadSpecification(final String className) {
-        ensureThatArg(className, is(notNullValue()), "specification class name must be specified");
-
-        try {
-            final Class<?> cls = loadBuiltIn(className);
-            return internalLoadSpecification(cls);
-        } catch (final ClassNotFoundException e) {
-            final ObjectSpecification spec = getCache().get(className);
-            if (spec == null) {
-                throw new IsisException("No such class available: " + className);
-            }
-            return spec;
-        }
-    }
-
-    /**
-     * API: Return specification.
-     */
-    @Override
-    public ObjectSpecification loadSpecification(final Class<?> type) {
-        final ObjectSpecification spec = internalLoadSpecification(type);
-        if(spec == null) {
-            return null;
-        }
-        if(getCache().isInitialized()) {
-            // umm.  It turns out that anonymous inner classes (eg org.estatio.dom.WithTitleGetter$ToString$1)
-            // don't have an ObjectSpecId; hence the guard.
-            if(spec.containsDoOpFacet(ObjectSpecIdFacet.class)) {
-                ObjectSpecId specId = spec.getSpecId();
-                if (getCache().getByObjectType(specId) == null) {
-                    getCache().recache(spec);
-                }
-            }
-        }
-        return spec;
-    }
-
-    private ObjectSpecification internalLoadSpecification(final Class<?> type) {
-        return internalLoadSpecification(type, null);
-    }
-
-    private ObjectSpecification internalLoadSpecification(final Class<?> type, final NatureOfService nature) {
-        final Class<?> substitutedType = classSubstitutor.getClass(type);
-        return substitutedType != null ? loadSpecificationForSubstitutedClass(substitutedType, nature) : null;
-    }
-
-
-    private ObjectSpecification loadSpecificationForSubstitutedClass(final Class<?> type, final NatureOfService nature) {
-        Assert.assertNotNull(type);
-        final String typeName = type.getName();
-
-        final SpecificationCacheDefault specificationCache = getCache();
-        synchronized (specificationCache) {
-            final ObjectSpecification spec = specificationCache.get(typeName);
-            if (spec != null) {
-                return spec;
-            }
-            final ObjectSpecification specification = createSpecification(type);
-            if(nature != null) {
-                specification.markAsService();
-            }
-            if (specification == null) {
-                throw new IsisException("Failed to create specification for class " + typeName);
-            }
-
-            // put into the cache prior to introspecting, to prevent
-            // infinite loops
-            specificationCache.cache(typeName, specification);
-
-            introspectIfRequired(specification);
-
-            return specification;
-        }
-    }
-
-    /**
-     * Loads the specifications of the specified types except the one specified
-     * (to prevent an infinite loop).
-     */
-    @Override
-    public boolean loadSpecifications(final List<Class<?>> typesToLoad, final Class<?> typeToIgnore) {
-        boolean anyLoadedAsNull = false;
-        for (final Class<?> typeToLoad : typesToLoad) {
-            if (typeToLoad != typeToIgnore) {
-                final ObjectSpecification noSpec = internalLoadSpecification(typeToLoad);
-                final boolean loadedAsNull = (noSpec == null);
-                anyLoadedAsNull = loadedAsNull || anyLoadedAsNull;
-            }
-        }
-        return anyLoadedAsNull;
-    }
-
-    /**
-     * Loads the specifications of the specified types.
-     */
-    @Override
-    public boolean loadSpecifications(final List<Class<?>> typesToLoad) {
-        return loadSpecifications(typesToLoad, null);
-    }
-
-    /**
-     * Creates the appropriate type of {@link ObjectSpecification}.
-     */
-    private ObjectSpecification createSpecification(final Class<?> cls) {
-
-        final ServicesInjector servicesInjector = getRuntimeContext().getServicesInjector();
-        final PersistenceSessionService persistenceSessionService = getRuntimeContext().getPersistenceSessionService();
-
-        final ObjectSpecificationDependencies specContext =
-                new ObjectSpecificationDependencies(deploymentCategory, servicesInjector, this, facetProcessor);
-
-        final ObjectMemberDependencies objectMemberDependencies =
-                new ObjectMemberDependencies(this, servicesInjector, persistenceSessionService);
-
-        // ... and create the specs
-        if (FreeStandingList.class.isAssignableFrom(cls)) {
-            return new ObjectSpecificationOnStandaloneList(specContext, objectMemberDependencies);
-        } else {
-            final FacetedMethodsBuilderContext facetedMethodsBuilderContext =
-                    new FacetedMethodsBuilderContext(
-                            this, facetProcessor, layoutMetadataReaders);
-            return new ObjectSpecificationDefault(cls, facetedMethodsBuilderContext, specContext,
-                    objectMemberDependencies);
-        }
-    }
-
-    private Class<?> loadBuiltIn(final String className) throws ClassNotFoundException {
-        final Class<?> builtIn = ClassUtil.getBuiltIn(className);
-        if (builtIn != null) {
-            return builtIn;
-        }
-        return Class.forName(className);
-    }
-
-    /**
-     * Return all the loaded specifications.
-     */
-    @Override
-    public Collection<ObjectSpecification> allSpecifications() {
-        return getCache().allSpecifications();
-    }
-
-    @Override
-    public boolean loaded(final Class<?> cls) {
-        return loaded(cls.getName());
-    }
-
-    @Override
-    public boolean loaded(final String fullyQualifiedClassName) {
-        return getCache().get(fullyQualifiedClassName) != null;
-    }
-
-    public ObjectSpecification introspectIfRequired(final ObjectSpecification spec) {
-
-        final ObjectSpecificationAbstract specSpi = (ObjectSpecificationAbstract)spec;
-        final IntrospectionState introspectionState = specSpi.getIntrospectionState();
-
-        // REVIEW: can't remember why this is done in multiple passes, could it be simplified?
-        if (introspectionState == IntrospectionState.NOT_INTROSPECTED) {
-
-            specSpi.setIntrospectionState(IntrospectionState.BEING_INTROSPECTED);
-            introspect(specSpi);
-
-        } else if (introspectionState == IntrospectionState.BEING_INTROSPECTED) {
-
-            introspect(specSpi);
-
-        } else if (introspectionState == IntrospectionState.INTROSPECTED) {
-            // nothing to do
-        }
-        return spec;
-    }
-
-    private void introspect(final ObjectSpecificationAbstract specSpi) {
-        specSpi.introspectTypeHierarchyAndMembers();
-        specSpi.updateFromFacetValues();
-        specSpi.setIntrospectionState(IntrospectionState.INTROSPECTED);
-
-    }
-
-    @Override
-    public ObjectSpecification lookupBySpecId(ObjectSpecId objectSpecId) {
-        final ObjectSpecification objectSpecification = getCache().getByObjectType(objectSpecId);
-        if(objectSpecification == null) {
-            // fallback
-            return loadSpecification(objectSpecId.asString());
-        }
-        return objectSpecification;
-    }
-
-
-    // ////////////////////////////////////////////////////////////////////
-    // injectInto
-    // ////////////////////////////////////////////////////////////////////
-
-    /**
-     * Injects self into candidate if required, and instructs its subcomponents
-     * to do so also.
-     */
-    @Override
-    public void injectInto(final Object candidate) {
-        final Class<?> candidateClass = candidate.getClass();
-        if (SpecificationLoaderAware.class.isAssignableFrom(candidateClass)) {
-            final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);
-            cast.setSpecificationLoader(this);
-        }
-        if (SpecificationLoaderAware.class.isAssignableFrom(candidateClass)) {
-            final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);
-            cast.setSpecificationLoader(this);
-        }
-        if (ServicesInjectorAware.class.isAssignableFrom(candidateClass)) {
-            final ServicesInjectorAware cast = ServicesInjectorAware.class.cast(candidate);
-            cast.setServicesInjector(this.servicesInjector);
-        }
-    }
-
-
-    // /////////////////////////////////////////////////////////////
-    // Helpers (were previously injected, but no longer required)
-    // /////////////////////////////////////////////////////////////
-
-    /**
-     * Provides access to the registered {@link Facet}s.
-     */
-    public FacetProcessor getFacetProcessor() {
-        return facetProcessor;
-    }
-
-    private SpecificationCacheDefault getCache() {
-        return cache;
-    }
-
-    // ////////////////////////////////////////////////////////////////////
-    // Dependencies (injected by setter due to *Aware)
-    // ////////////////////////////////////////////////////////////////////
-
-    /**
-     * Injected in {@link #initialize(RuntimeContext)}.
-     */
-    public RuntimeContext getRuntimeContext() {
-        return runtimeContext;
-    }
-
-
-    // ////////////////////////////////////////////////////////////////////
-    // Dependencies (setters, optional)
-    // ////////////////////////////////////////////////////////////////////
-
-    public List<Class<?>> getServiceClasses() {
-        List<Class<?>> serviceClasses = Lists.transform(this.servicesInjector.getRegisteredServices(), new Function<Object, Class<?>>(){
-            public Class<?> apply(Object o) {
-                return o.getClass();
-            }
-        });
-        // take a copy, to allow eg I18nFacetFactory to add in default implementations of missing services.
-        return Collections.unmodifiableList(Lists.newArrayList(serviceClasses));
-    }
-
-    public boolean isServiceClass(Class<?> cls) {
-        return this.servicesInjector.isRegisteredService(cls);
-    }
-
-    // ////////////////////////////////////////////////////////////////////
-    // Dependencies (injected from constructor)
-    // ////////////////////////////////////////////////////////////////////
-
-    protected MetaModelValidator getMetaModelValidator() {
-        return metaModelValidator;
-    }
-
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
deleted file mode 100644
index e982aab..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
+++ /dev/null
@@ -1,40 +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.specloader;
-
-import java.util.Collection;
-import org.apache.isis.core.commons.components.Installer;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-
-/**
- * Installs a {@link SpecificationLoader} during system start up.
- */
-public interface ObjectReflectorInstaller extends Installer {
-
-    static String TYPE = "reflector";
-
-    SpecificationLoader createReflector(
-            final DeploymentCategory deploymentCategory,
-            final Collection<MetaModelRefiner> metaModelRefiners, final ServicesInjectorSpi servicesInjector);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
new file mode 100644
index 0000000..f16375a
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -0,0 +1,584 @@
+/**
+ *  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.specloader;
+
+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.applib.AppManifest;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.core.commons.components.ApplicationScopedComponent;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
+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.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.FacetFactory;
+import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
+import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
+import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
+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.FreeStandingList;
+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.feature.ObjectMemberDependencies;
+import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
+import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
+import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilderContext;
+import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract;
+import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
+import org.apache.isis.core.metamodel.specloader.specimpl.standalonelist.ObjectSpecificationOnStandaloneList;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
+import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
+import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
+
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
+import static org.hamcrest.Matchers.emptyCollectionOf;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Builds the meta-model.
+ *
+ * <p>
+ * The implementation provides for a degree of pluggability:
+ * <ul>
+ * <li>The most important plug-in point is {@link ProgrammingModel} that
+ * specifies the set of {@link Facet} that make up programming model. If not
+ * specified then defaults to {@link ProgrammingModelFacetsJava5} (which should
+ * be used as a starting point for your own customizations).
+ * <li>The only mandatory plug-in point is {@link ClassSubstitutor}, which
+ * allows the class to be loaded to be substituted if required. This is used in
+ * conjunction with some <tt>PersistenceMechanism</tt>s that do class
+ * enhancement.
+ * </ul>
+ *
+ * <p>
+ * In addition, the {@link RuntimeContext} can optionally be injected, but will
+ * default to {@link RuntimeContextNoRuntime} if not provided prior to
+ * {@link SpecificationLoader#init(RuntimeContext) initialization}. The purpose of {@link RuntimeContext} is to
+ * allow the metamodel to be used standalone, for example in a Maven plugin. The
+ * {@link RuntimeContextNoRuntime} implementation will through an exception for
+ * any methods (such as finding an {@link ObjectAdapter adapter}) because there
+ * is no runtime session. In the case of the metamodel being used by the
+ * framework (that is, when there <i>is</i> a runtime), then the framework
+ * injects an implementation of {@link RuntimeContext} that acts like a bridge
+ * to its <tt>IsisContext</tt>.
+ */
+public class SpecificationLoader implements ApplicationScopedComponent {
+
+    private final static Logger LOG = LoggerFactory.getLogger(SpecificationLoader.class);
+
+    //region > constructor, fields
+    private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
+
+    private final DeploymentCategory deploymentCategory;
+    private final ProgrammingModel programmingModel;
+    private final FacetProcessor facetProcessor;
+
+    private final ServicesInjectorSpi servicesInjector;
+
+    private final MetaModelValidator metaModelValidator;
+    private final SpecificationCacheDefault cache = new SpecificationCacheDefault();
+    private final List<LayoutMetadataReader> layoutMetadataReaders;
+
+    public SpecificationLoader(
+            final DeploymentCategory deploymentCategory,
+            final IsisConfiguration configuration,
+            final ProgrammingModel programmingModel,
+            final MetaModelValidator metaModelValidator,
+            final List<LayoutMetadataReader> layoutMetadataReaders,
+            final ServicesInjectorSpi servicesInjector) {
+
+        ensureThatArg(deploymentCategory, is(notNullValue()));
+        ensureThatArg(configuration, is(notNullValue()));
+        ensureThatArg(servicesInjector, is(notNullValue()));
+        ensureThatArg(programmingModel, is(notNullValue()));
+        ensureThatArg(metaModelValidator, is(notNullValue()));
+        ensureThatArg(layoutMetadataReaders, is(notNullValue()));
+        ensureThatArg(layoutMetadataReaders, is(not(emptyCollectionOf(LayoutMetadataReader.class))));
+
+        this.deploymentCategory = deploymentCategory;
+        this.servicesInjector = servicesInjector;
+
+        this.programmingModel = programmingModel;
+
+
+        this.metaModelValidator = metaModelValidator;
+        this.facetProcessor = new FacetProcessor(configuration, programmingModel);
+        this.layoutMetadataReaders = layoutMetadataReaders;
+    }
+
+    @Override
+    protected void finalize() throws Throwable {
+        super.finalize();
+        LOG.info("finalizing reflector factory " + this);
+    }
+
+    //endregion
+
+    //region > init
+
+    /**
+     * Can optionally be injected, but will default (to
+     * {@link RuntimeContextNoRuntime}) otherwise.
+     *
+     * <p>
+     * Should be injected when used by framework, but will default to a no-op implementation if the metamodel is
+     * being used standalone (eg for a code-generator).
+     */
+    private RuntimeContext runtimeContext;
+
+    private boolean initialized = false;
+
+    /**
+     * Initializes and wires up, and primes the cache based on any service
+     * classes (provided by the {@link ServicesInjectorSpi}).
+     * @param runtimeContext
+     */
+    public void init(final RuntimeContext runtimeContext) {
+        this.runtimeContext = runtimeContext;
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("initialising {}", this);
+        }
+
+        // default subcomponents
+        if (runtimeContext == null) {
+            servicesInjector.addFallbackIfRequired(
+                    ConfigurationServiceInternal.class, new IsisConfigurationDefault(null));
+            this.runtimeContext = new RuntimeContextNoRuntime(servicesInjector, this);
+        }
+
+        injectInto(metaModelValidator);
+
+        // wire subcomponents into each other
+        this.runtimeContext.injectInto(facetProcessor);
+        for (final LayoutMetadataReader layoutMetadataReader : layoutMetadataReaders) {
+            this.runtimeContext.injectInto(layoutMetadataReader);
+        }
+
+        // initialize subcomponents
+        programmingModel.init();
+        facetProcessor.init();
+        metaModelValidator.init();
+
+        loadSpecificationsForServices();
+        loadSpecificationsForMixins();
+        cacheBySpecId();
+        initialized = true;
+    }
+
+    private void loadSpecificationsForServices() {
+        for (final Class<?> serviceClass : allServiceClasses()) {
+            final DomainService domainService = serviceClass.getAnnotation(DomainService.class);
+            if(domainService != null) {
+                if(domainService.nature() == NatureOfService.VIEW || domainService.nature() == NatureOfService.VIEW_CONTRIBUTIONS_ONLY) {
+                    internalLoadSpecification(serviceClass, domainService.nature());
+                }
+            }
+        }
+    }
+
+    private void loadSpecificationsForMixins() {
+        final Set<Class<?>> mixinTypes = AppManifest.Registry.instance().getMixinTypes();
+        if(mixinTypes == null) {
+            return;
+        }
+        for (final Class<?> mixinType : mixinTypes) {
+            internalLoadSpecification(mixinType);
+        }
+    }
+
+    private void cacheBySpecId() {
+        final Map<ObjectSpecId, ObjectSpecification> specById = Maps.newHashMap();
+        for (final ObjectSpecification objSpec : allSpecifications()) {
+            final ObjectSpecId objectSpecId = objSpec.getSpecId();
+            if (objectSpecId == null) {
+                continue;
+            }
+            specById.put(objectSpecId, objSpec);
+        }
+
+        cache.setCacheBySpecId(specById);
+    }
+
+    public boolean isInitialized() {
+        return initialized;
+    }
+
+
+    /**
+     * Set using {@link #init(RuntimeContext)}.
+     */
+    public RuntimeContext getRuntimeContext() {
+        return runtimeContext;
+    }
+
+    //endregion
+
+    //region > shutdown
+
+    public void shutdown() {
+        LOG.info("shutting down " + this);
+
+        initialized = false;
+
+        cache.clear();
+    }
+
+    //endregion
+
+    //region > invalidateCache
+
+    public void invalidateCache(final Class<?> cls) {
+
+        if(!cache.isInitialized()) {
+            // could be called by JRebel plugin, before we are up-and-running
+            // just ignore.
+            return;
+        }
+        final Class<?> substitutedType = classSubstitutor.getClass(cls);
+
+        if(substitutedType.isAnonymousClass()) {
+            // JRebel plugin might call us... just ignore 'em.
+            return;
+        }
+
+        ObjectSpecification spec = loadSpecification(substitutedType);
+        while(spec != null) {
+            final Class<?> type = spec.getCorrespondingClass();
+            cache.remove(type.getName());
+            if(spec.containsDoOpFacet(ObjectSpecIdFacet.class)) {
+                // umm.  Some specs do not have an ObjectSpecIdFacet...
+                recache(spec);
+            }
+            spec = spec.superclass();
+        }
+    }
+
+
+    private void recache(final ObjectSpecification newSpec) {
+        cache.recache(newSpec);
+    }
+
+    //endregion
+
+    //region > validation
+
+    private ValidationFailures validationFailures;
+
+    public void validateAndAssert() {
+        ValidationFailures validationFailures = validate();
+        validationFailures.assertNone();
+
+        cacheBySpecId();
+    }
+
+    public ValidationFailures validate() {
+        if(validationFailures == null) {
+            validationFailures = new ValidationFailures();
+            metaModelValidator.validate(validationFailures);
+        }
+        return validationFailures;
+    }
+
+    //endregion
+
+
+    //region > loadSpecification, loadSpecifications
+
+    /**
+     * Return the specification for the specified class of object.
+     *
+     * <p>
+     * It is possible for this method to return <tt>null</tt>, for example if
+     * the configured {@link org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor}
+     * has filtered out the class.
+     */
+    public ObjectSpecification loadSpecification(final String className) {
+        ensureThatArg(className, is(notNullValue()), "specification class name must be specified");
+
+        try {
+            final Class<?> cls = loadBuiltIn(className);
+            return internalLoadSpecification(cls);
+        } catch (final ClassNotFoundException e) {
+            final ObjectSpecification spec = cache.get(className);
+            if (spec == null) {
+                throw new IsisException("No such class available: " + className);
+            }
+            return spec;
+        }
+    }
+
+    /**
+     * @see #loadSpecification(String)
+     */
+    public ObjectSpecification loadSpecification(final Class<?> type) {
+        final ObjectSpecification spec = internalLoadSpecification(type);
+        if(spec == null) {
+            return null;
+        }
+        if(cache.isInitialized()) {
+            // umm.  It turns out that anonymous inner classes (eg org.estatio.dom.WithTitleGetter$ToString$1)
+            // don't have an ObjectSpecId; hence the guard.
+            if(spec.containsDoOpFacet(ObjectSpecIdFacet.class)) {
+                ObjectSpecId specId = spec.getSpecId();
+                if (cache.getByObjectType(specId) == null) {
+                    cache.recache(spec);
+                }
+            }
+        }
+        return spec;
+    }
+
+    private ObjectSpecification internalLoadSpecification(final Class<?> type) {
+        return internalLoadSpecification(type, null);
+    }
+
+    private ObjectSpecification internalLoadSpecification(final Class<?> type, final NatureOfService nature) {
+        final Class<?> substitutedType = classSubstitutor.getClass(type);
+        return substitutedType != null ? loadSpecificationForSubstitutedClass(substitutedType, nature) : null;
+    }
+
+    private ObjectSpecification loadSpecificationForSubstitutedClass(final Class<?> type, final NatureOfService nature) {
+        Assert.assertNotNull(type);
+        final String typeName = type.getName();
+
+        final SpecificationCacheDefault specificationCache = cache;
+        synchronized (specificationCache) {
+            final ObjectSpecification spec = specificationCache.get(typeName);
+            if (spec != null) {
+                return spec;
+            }
+            final ObjectSpecification specification = createSpecification(type);
+            if(nature != null) {
+                specification.markAsService();
+            }
+            if (specification == null) {
+                throw new IsisException("Failed to create specification for class " + typeName);
+            }
+
+            // put into the cache prior to introspecting, to prevent
+            // infinite loops
+            specificationCache.cache(typeName, specification);
+
+            introspectIfRequired(specification);
+
+            return specification;
+        }
+    }
+
+    /**
+     * Loads the specifications of the specified types except the one specified
+     * (to prevent an infinite loop).
+     */
+    public boolean loadSpecifications(final List<Class<?>> typesToLoad, final Class<?> typeToIgnore) {
+        boolean anyLoadedAsNull = false;
+        for (final Class<?> typeToLoad : typesToLoad) {
+            if (typeToLoad != typeToIgnore) {
+                final ObjectSpecification noSpec = internalLoadSpecification(typeToLoad);
+                final boolean loadedAsNull = (noSpec == null);
+                anyLoadedAsNull = loadedAsNull || anyLoadedAsNull;
+            }
+        }
+        return anyLoadedAsNull;
+    }
+
+    /**
+     * Loads the specifications of the specified types.
+     */
+    public boolean loadSpecifications(final List<Class<?>> typesToLoad) {
+        return loadSpecifications(typesToLoad, null);
+    }
+
+    /**
+     * Creates the appropriate type of {@link ObjectSpecification}.
+     */
+    private ObjectSpecification createSpecification(final Class<?> cls) {
+
+        final ServicesInjector servicesInjector = getRuntimeContext().getServicesInjector();
+        final PersistenceSessionService persistenceSessionService = getRuntimeContext().getPersistenceSessionService();
+
+        final ObjectSpecificationDependencies specContext =
+                new ObjectSpecificationDependencies(deploymentCategory, servicesInjector, this, facetProcessor);
+
+        final ObjectMemberDependencies objectMemberDependencies =
+                new ObjectMemberDependencies(this, servicesInjector, persistenceSessionService);
+
+        // ... and create the specs
+        if (FreeStandingList.class.isAssignableFrom(cls)) {
+            return new ObjectSpecificationOnStandaloneList(specContext, objectMemberDependencies);
+        } else {
+            final FacetedMethodsBuilderContext facetedMethodsBuilderContext =
+                    new FacetedMethodsBuilderContext(
+                            this, facetProcessor, layoutMetadataReaders);
+            return new ObjectSpecificationDefault(cls, facetedMethodsBuilderContext, specContext,
+                    objectMemberDependencies);
+        }
+    }
+
+    private Class<?> loadBuiltIn(final String className) throws ClassNotFoundException {
+        final Class<?> builtIn = ClassUtil.getBuiltIn(className);
+        if (builtIn != null) {
+            return builtIn;
+        }
+        return Class.forName(className);
+    }
+
+    /**
+     * Typically does not need to be called, but is available for {@link FacetFactory}s to force
+     * early introspection of referenced specs in certain circumstances.
+     *
+     * <p>
+     * Originally introduced to support {@link AutoCompleteFacet}.
+     */
+    private ObjectSpecification introspectIfRequired(final ObjectSpecification spec) {
+
+        final ObjectSpecificationAbstract specSpi = (ObjectSpecificationAbstract)spec;
+        final ObjectSpecificationAbstract.IntrospectionState introspectionState = specSpi.getIntrospectionState();
+
+        // REVIEW: can't remember why this is done in multiple passes, could it be simplified?
+        if (introspectionState == ObjectSpecificationAbstract.IntrospectionState.NOT_INTROSPECTED) {
+
+            specSpi.setIntrospectionState(ObjectSpecificationAbstract.IntrospectionState.BEING_INTROSPECTED);
+            introspect(specSpi);
+
+        } else if (introspectionState == ObjectSpecificationAbstract.IntrospectionState.BEING_INTROSPECTED) {
+
+            introspect(specSpi);
+
+        } else if (introspectionState == ObjectSpecificationAbstract.IntrospectionState.INTROSPECTED) {
+            // nothing to do
+        }
+        return spec;
+    }
+
+    private void introspect(final ObjectSpecificationAbstract specSpi) {
+        specSpi.introspectTypeHierarchyAndMembers();
+        specSpi.updateFromFacetValues();
+        specSpi.setIntrospectionState(ObjectSpecificationAbstract.IntrospectionState.INTROSPECTED);
+
+    }
+
+    //endregion
+
+    //region > allSpecifications
+    /**
+     * Return all the loaded specifications.
+     */
+    public Collection<ObjectSpecification> allSpecifications() {
+        return cache.allSpecifications();
+    }
+
+    //endregion
+
+    //region > getServiceClasses, isServiceClass
+
+    public List<Class<?>> allServiceClasses() {
+        List<Class<?>> serviceClasses = Lists
+                .transform(this.servicesInjector.getRegisteredServices(), new Function<Object, Class<?>>(){
+                    public Class<?> apply(Object o) {
+                        return o.getClass();
+                    }
+                });
+        // take a copy, to allow eg I18nFacetFactory to add in default implementations of missing services.
+        return Collections.unmodifiableList(Lists.newArrayList(serviceClasses));
+    }
+
+    public boolean isServiceClass(Class<?> cls) {
+        return this.servicesInjector.isRegisteredService(cls);
+    }
+
+    //endregion
+
+    //region > loaded
+    /**
+     * Whether this class has been loaded.
+     */
+    public boolean loaded(final Class<?> cls) {
+        return loaded(cls.getName());
+    }
+
+    /**
+     * @see #loaded(Class).
+     */
+    public boolean loaded(final String fullyQualifiedClassName) {
+        return cache.get(fullyQualifiedClassName) != null;
+    }
+
+    //endregion
+
+    //region > lookupBySpecId
+    public ObjectSpecification lookupBySpecId(ObjectSpecId objectSpecId) {
+        final ObjectSpecification objectSpecification = cache.getByObjectType(objectSpecId);
+        if(objectSpecification == null) {
+            // fallback
+            return loadSpecification(objectSpecId.asString());
+        }
+        return objectSpecification;
+    }
+    //endregion
+
+
+
+    /**
+     * Injects self into candidate if required, and instructs its subcomponents
+     * to do so also.
+     */
+    public void injectInto(final Object candidate) {
+        final Class<?> candidateClass = candidate.getClass();
+        if (SpecificationLoaderAware.class.isAssignableFrom(candidateClass)) {
+            final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);
+            cast.setSpecificationLoader(this);
+        }
+        if (SpecificationLoaderAware.class.isAssignableFrom(candidateClass)) {
+            final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);
+            cast.setSpecificationLoader(this);
+        }
+        if (ServicesInjectorAware.class.isAssignableFrom(candidateClass)) {
+            final ServicesInjectorAware cast = ServicesInjectorAware.class.cast(candidate);
+            cast.setServicesInjector(this.servicesInjector);
+        }
+    }
+
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderAware.java
new file mode 100644
index 0000000..8f60a85
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderAware.java
@@ -0,0 +1,29 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.core.metamodel.specloader;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+public interface SpecificationLoaderAware {
+
+    @Programmatic
+    public void setSpecificationLoader(final SpecificationLoader specificationLookup);
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderInstaller.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderInstaller.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderInstaller.java
new file mode 100644
index 0000000..cd6a86c
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderInstaller.java
@@ -0,0 +1,40 @@
+/*
+ *  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.specloader;
+
+import java.util.Collection;
+import org.apache.isis.core.commons.components.Installer;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
+import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+
+/**
+ * Installs a {@link SpecificationLoader} during system start up.
+ */
+public interface SpecificationLoaderInstaller extends Installer {
+
+    static String TYPE = "reflector";
+
+    SpecificationLoader createReflector(
+            final DeploymentCategory deploymentCategory,
+            final Collection<MetaModelRefiner> metaModelRefiners,
+            final ServicesInjectorSpi servicesInjector);
+
+}


[28/30] isis git commit: ISIS-1408: removing RuntimeContext, ObjectSpecificationDependencies, ObjectMemberDependencies (WIP)

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index c65c0fb..769b83e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -50,16 +50,15 @@ import org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetI
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.facets.object.wizard.WizardFacet;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.ObjectSpecificationDependencies;
-import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
+import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder;
 import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilderContext;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault;
@@ -99,9 +98,10 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
     public ObjectSpecificationDefault(
             final Class<?> correspondingClass,
             final FacetedMethodsBuilderContext facetedMethodsBuilderContext,
-            final ObjectSpecificationDependencies specContext,
-            final ObjectMemberDependencies objectMemberDependencies) {
-        super(correspondingClass, determineShortName(correspondingClass), specContext, objectMemberDependencies);
+            final ServicesInjector servicesInjector,
+            final FacetProcessor facetProcessor) {
+        super(correspondingClass, determineShortName(correspondingClass),
+                servicesInjector, facetProcessor);
 
         this.facetedMethodsBuilder = new FacetedMethodsBuilder(this, facetedMethodsBuilderContext);
     }
@@ -222,9 +222,9 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
 
     private ObjectAssociation createAssociation(final FacetedMethod facetMethod) {
         if (facetMethod.getFeatureType().isCollection()) {
-            return new OneToManyAssociationDefault(facetMethod, objectMemberDependencies);
+            return new OneToManyAssociationDefault(facetMethod, servicesInjector);
         } else if (facetMethod.getFeatureType().isProperty()) {
-            return new OneToOneAssociationDefault(facetMethod, objectMemberDependencies);
+            return new OneToOneAssociationDefault(facetMethod, servicesInjector);
         } else {
             return null;
         }
@@ -245,7 +245,7 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
 
     private ObjectAction createAction(final FacetedMethod facetedMethod) {
         if (facetedMethod.getFeatureType().isAction()) {
-            return new ObjectActionDefault(facetedMethod, objectMemberDependencies);
+            return new ObjectActionDefault(facetedMethod, servicesInjector);
         } else {
             return null;
         }
@@ -266,32 +266,6 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
         isService = true;
     }
 
-    private void ensureServiceHasNoAssociations() {
-        final List<ObjectAssociation> associations = getAssociations(Contributed.EXCLUDED);
-        final StringBuilder buf = new StringBuilder();
-        for (final ObjectAssociation association : associations) {
-            final String name = association.getId();
-            // services are allowed to have one association, called 'id'
-            if (!isValidAssociationForService(name)) {
-                appendAssociationName(buf, name);
-            }
-        }
-        if (buf.length() > 0) {
-            throw new ObjectSpecificationException("Service object " + getFullIdentifier() + " should have no fields, but has: " + buf);
-        }
-    }
-
-    /**
-     * Services are allowed to have one association, called 'id'.
-     */
-    private boolean isValidAssociationForService(final String associationId) {
-        return "id".indexOf(associationId) != -1;
-    }
-
-    private void appendAssociationName(final StringBuilder fieldNames, final String name) {
-        fieldNames.append(fieldNames.length() > 0 ? ", " : "");
-        fieldNames.append(name);
-    }
 
 
     // //////////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
index a963d6e..e810f58 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
@@ -19,20 +19,19 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl.standalonelist;
 
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.isis.applib.profiles.Localization;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetDefaultToObject;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.ObjectSpecificationDependencies;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
+import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract;
 
 /**
@@ -50,9 +49,9 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
     private static final String ICON_NAME = "instances";
 
     public ObjectSpecificationOnStandaloneList(
-            final ObjectSpecificationDependencies objectSpecificationDependencies,
-            final ObjectMemberDependencies objectMemberDependencies) {
-        super(FreeStandingList.class, NAME, objectSpecificationDependencies, objectMemberDependencies);
+            final ServicesInjector servicesInjector,
+            final FacetProcessor facetProcessor) {
+        super(FreeStandingList.class, NAME, servicesInjector, facetProcessor);
     }
 
     // /////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
index be088af..4c75458 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
@@ -25,7 +25,6 @@ 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.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
@@ -65,8 +64,7 @@ public class AuditableAnnotationInJdoApplibFacetFactory extends FacetFactoryAbst
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = (IsisConfiguration) servicesInjector
-                .lookupService(ConfigurationServiceInternal.class);
+        IsisConfiguration configuration = (IsisConfiguration) servicesInjector.getConfigurationServiceInternal();
         validator.setConfiguration(configuration);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index cf53416..a07d2b0 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -39,9 +39,9 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
@@ -58,7 +58,7 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
     @Mock
     protected SpecificationLoader mockSpecificationLoader;
     @Mock
-    protected PersistenceSessionServiceInternal mockAdapterManager;
+    protected PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
     @Mock
     protected MethodRemover mockMethodRemover;
     @Mock
@@ -67,6 +67,8 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
     protected ServicesInjector mockServicesInjector;
     @Mock
     protected TranslationService mockTranslationService;
+    @Mock
+    protected TransactionStateProviderInternal mockTransactionStateProviderInternal;
 
     @Mock
     protected IsisConfigurationDefault mockConfiguration;
@@ -111,19 +113,25 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
             allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
             will(returnValue(mockDeploymentCategoryProvider));
 
+            allowing(mockServicesInjector).lookupService(TransactionStateProviderInternal.class);
+            will(returnValue(mockTransactionStateProviderInternal));
+
             allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
             will(returnValue(DeploymentCategory.PRODUCTION));
 
-            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
+            allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(mockConfiguration));
 
+            allowing(mockServicesInjector).getPersistenceSessionServiceInternal();
+            will(returnValue(mockPersistenceSessionServiceInternal));
+
             allowing(mockServicesInjector).lookupService(TranslationService.class);
             will(returnValue(mockTranslationService));
 
             allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
             will(returnValue(mockAuthenticationSessionProvider));
 
-            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            allowing(mockServicesInjector).getSpecificationLoader();
             will(returnValue(mockSpecificationLoader));
 
         }});

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index 6e8805a..aa026ed 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -36,8 +36,9 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.transtate.TransactionStateProviderInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -68,6 +69,9 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
     protected AuthenticationSessionProvider mockAuthenticationSessionProvider;
     protected AuthenticationSession mockAuthenticationSession;
 
+    protected TransactionStateProviderInternal mockTransactionStateProviderInternal;
+    protected PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+
     protected IsisConfigurationDefault stubConfiguration;
     protected SpecificationLoader mockSpecificationLoader;
     protected ProgrammableMethodRemover methodRemover;
@@ -109,6 +113,9 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
         stubConfiguration = new IsisConfigurationDefault();
         mockAuthenticationSession = context.mock(AuthenticationSession.class);
 
+        mockPersistenceSessionServiceInternal = context.mock(PersistenceSessionServiceInternal.class);
+        mockTransactionStateProviderInternal = context.mock(TransactionStateProviderInternal.class);
+
         mockSpecificationLoader = context.mock(SpecificationLoader.class);
 
         context.checking(new Expectations() {{
@@ -116,13 +123,13 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
             allowing(mockServicesInjector).lookupService(TranslationService.class);
             will(returnValue(mockTranslationService));
 
-            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
+            allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(stubConfiguration));
 
             allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
             will(returnValue(mockAuthenticationSessionProvider));
 
-            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            allowing(mockServicesInjector).getSpecificationLoader();
             will(returnValue(mockSpecificationLoader));
 
             allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
@@ -133,7 +140,22 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
 
             allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
             will(returnValue(mockAuthenticationSession));
+
+            allowing(mockServicesInjector).getPersistenceSessionServiceInternal();
+            will(returnValue(mockPersistenceSessionServiceInternal));
+
+            allowing(mockServicesInjector).lookupService(TransactionStateProviderInternal.class);
+            will(returnValue(mockTransactionStateProviderInternal));
+
+            allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
+            will(returnValue(mockAuthenticationSession));
+
+            allowing(mockServicesInjector).lookupService(TranslationService.class);
+            will(returnValue(mockTranslationService));
+
         }});
+
+
     }
 
     protected void allowing_specificationLoader_loadSpecification_any_willReturn(final ObjectSpecification objectSpecification) {

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
index c965186..841f0a3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
@@ -80,8 +80,8 @@ import org.apache.isis.core.metamodel.facets.param.defaults.methodnum.ActionPara
 import org.apache.isis.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethodFactory;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.testspec.ObjectSpecificationStub;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
@@ -98,11 +98,14 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     private ConfigurationServiceInternal stubConfigurationServiceInternal;
     private TranslationService mockTranslationService;
+    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+
 
     public void setUp() throws Exception {
         super.setUp();
         mockServicesInjector = context.mock(ServicesInjector.class);
         mockTranslationService = context.mock(TranslationService.class);
+        mockPersistenceSessionServiceInternal = context.mock(PersistenceSessionServiceInternal.class);
 
         mockDeploymentCategoryProvider = context.mock(DeploymentCategoryProvider.class);
         mockAuthenticationSessionProvider = context.mock(AuthenticationSessionProvider.class);
@@ -123,20 +126,20 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
             allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
             will(returnValue(mockAuthenticationSessionProvider));
 
-            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
+            allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(stubConfigurationServiceInternal));
 
             allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
             will(returnValue(mockDeploymentCategoryProvider));
 
-            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            allowing(mockServicesInjector).getSpecificationLoader();
             will(returnValue(mockSpecificationLoader));
 
             allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
             will(returnValue(DeploymentCategory.PRODUCTION));
 
-            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
-            will(returnValue(mockSpecificationLoader));
+            allowing(mockServicesInjector).getPersistenceSessionServiceInternal();
+            will(returnValue(mockPersistenceSessionServiceInternal));
 
         }});
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
index ef2bf37..cac11d7 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
@@ -88,7 +88,6 @@ import org.apache.isis.core.metamodel.facets.actions.publish.PublishedActionPayl
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
@@ -133,7 +132,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
             will(returnValue(mockAuthenticationSessionProvider));
 
-            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
+            allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(mockConfiguration));
 
             allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
index b72a0e7..5e105a7 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
@@ -39,7 +39,6 @@ import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoice
 import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod;
 import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethodFactory;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.testspec.ObjectSpecificationStub;
 
 public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractFacetFactoryTest {
@@ -53,25 +52,6 @@ public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractF
         super.setUp();
         this.facetFactory =  new ActionAnnotationFacetFactory();;
 
-        context.checking(new Expectations() {{
-
-            allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
-            will(returnValue(mockAuthenticationSessionProvider));
-
-            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
-            will(returnValue(mockSpecificationLoader));
-
-            allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
-            will(returnValue(mockDeploymentCategoryProvider));
-
-            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-            will(returnValue(DeploymentCategory.PRODUCTION));
-
-            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
-            will(returnValue(mockSpecificationLoader));
-
-        }});
-
         facetFactory.setServicesInjector(mockServicesInjector);
 
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
index 9666789..1b06fc7 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
@@ -73,57 +73,15 @@ import org.apache.isis.core.metamodel.facets.members.hidden.staticmethod.HiddenF
 import org.apache.isis.core.metamodel.facets.members.named.staticmethod.NamedFacetStaticMethod;
 import org.apache.isis.core.metamodel.facets.members.named.staticmethod.NamedFacetStaticMethodFactory;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     private JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
 
-    private ServicesInjector mockServicesInjector;
-    private TranslationService mockTranslationService;
-    private DeploymentCategoryProvider mockDeploymentCategoryProvider;
-    private AuthenticationSessionProvider mockAuthenticationSessionProvider;
-
     public void setUp() throws Exception {
         super.setUp();
 
-        mockServicesInjector = context.mock(ServicesInjector.class);
-        mockTranslationService = context.mock(TranslationService.class);
-
-        mockDeploymentCategoryProvider = context.mock(DeploymentCategoryProvider.class);
-        mockAuthenticationSessionProvider = context.mock(AuthenticationSessionProvider.class);
-
-        final AuthenticationSession mockAuthenticationSession = context.mock(AuthenticationSession.class);
-
-        context.checking(new Expectations() {{
-            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-            will(returnValue(DeploymentCategory.PRODUCTION));
-
-            allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
-            will(returnValue(mockAuthenticationSession));
-
-            allowing(mockServicesInjector).lookupService(TranslationService.class);
-            will(returnValue(mockTranslationService));
-
-            allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
-            will(returnValue(mockAuthenticationSessionProvider));
-
-            allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
-            will(returnValue(mockDeploymentCategoryProvider));
-
-            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-            will(returnValue(DeploymentCategory.PRODUCTION));
-
-            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
-            will(returnValue(stubConfiguration));
-
-            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
-            will(returnValue(mockSpecificationLoader));
-
-        }});
 
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
index 2512efb..b9a7fd6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
@@ -123,7 +123,7 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
             FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(holder, mockDeploymentCategoryProvider.getDeploymentCategory(),
                     mockConfiguration,
                     mockSpecificationLoader, mockAuthenticationSessionProvider,
-                    mockAdapterManager
+                    mockPersistenceSessionServiceInternal
             ) {
                 @Override
                 public Object getProperty(

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
index 5898a53..4f601c3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
@@ -28,7 +28,6 @@ import org.apache.isis.applib.RecreatableDomainObject;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
@@ -73,7 +72,7 @@ public class ViewModelSemanticCheckingFacetFactoryTest {
         facetFactory = new ViewModelSemanticCheckingFacetFactory();
 
         context.checking(new Expectations() {{
-            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
+            allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(mockConfiguration));
         }});
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
index 418262e..7d18c7f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
@@ -46,8 +46,6 @@ import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetV
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation.TitleComponent;
 import org.apache.isis.core.metamodel.services.l10n.LocalizationDefault;
 import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Allowing;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -90,11 +88,11 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
                 allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
                 will(returnValue(mockAuthenticationSession));
 
-                allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+                allowing(mockServicesInjector).getSpecificationLoader();
                 will(returnValue(mockSpecificationLoader));
 
-                allowing(mockServicesInjector).lookupService(PersistenceSessionServiceInternal.class);
-                will(returnValue(mockAdapterManager));
+                allowing(mockServicesInjector).getPersistenceSessionServiceInternal();
+                will(returnValue(mockPersistenceSessionServiceInternal));
             }
         });
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
index b34235c..2b5c1e7 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
@@ -36,7 +36,6 @@ import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter;
 import org.apache.isis.core.metamodel.facets.propparam.specification.DomainObjectWithMustSatisfyAnnotations;
 import org.apache.isis.core.metamodel.facets.propparam.specification.DomainObjectWithoutMustSatisfyAnnotations;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
@@ -77,7 +76,7 @@ public class MustSatisfySpecificationFacetFactoryProcessParameterTest {
             allowing(mockServicesInjector).lookupService(TranslationService.class);
             will(returnValue(mockTranslationService));
 
-            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
+            allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(stubConfiguration));
 
             allowing(mockServicesInjector).injectServicesInto(with(any(List.class)));

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
index a244d7c..f811212 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
@@ -37,7 +37,6 @@ import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.properties.property.mustsatisfy.MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty;
 import org.apache.isis.core.metamodel.facets.propparam.specification.DomainObjectWithMustSatisfyAnnotations;
 import org.apache.isis.core.metamodel.facets.propparam.specification.DomainObjectWithoutMustSatisfyAnnotations;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
@@ -76,7 +75,7 @@ public class MustSatisfySpecificationFacetFactoryProcessPropertyTest {
             allowing(mockServicesInjector).lookupService(TranslationService.class);
             will(returnValue(mockTranslationService));
 
-            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
+            allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(mockConfiguration));
 
             allowing(mockServicesInjector).injectServicesInto(with(any(List.class)));

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index c617fdb..8d6b41e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -129,7 +129,7 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
             FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(holder, mockDeploymentCategoryProvider.getDeploymentCategory(),
                     mockConfiguration,
                     mockSpecificationLoader, mockAuthenticationSessionProvider,
-                    mockAdapterManager
+                    mockPersistenceSessionServiceInternal
             ) {
                 @Override
                 public Object getProperty(

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
index 9a92858..b5a2dc0 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -43,8 +43,6 @@ import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson;
 import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.l10n.LocalizationProviderInternal;
 import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
@@ -63,8 +61,6 @@ public abstract class SpecificationLoaderTestAbstract {
     @Rule
     public ExpectedException expectedException = ExpectedException.none();
 
-    private RuntimeContext runtimeContext;
-
     @Mock
     private IsisConfigurationDefault mockConfiguration;
     @Mock
@@ -96,7 +92,7 @@ public abstract class SpecificationLoaderTestAbstract {
         context.checking(new Expectations() {{
             ignoring(mockConfiguration);
 
-            allowing(mockServicesInjector).lookupService(ConfigurationServiceInternal.class);
+            allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(new IsisConfigurationDefault(null)));
 
             allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
@@ -108,7 +104,7 @@ public abstract class SpecificationLoaderTestAbstract {
             allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
             will(returnValue(mockAuthenticationSessionProvider));
 
-            allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+            allowing(mockServicesInjector).getSpecificationLoader();
             will(returnValue(mockSpecificationLoader));
 
             allowing(mockServicesInjector).lookupService(GridService.class);
@@ -129,13 +125,6 @@ public abstract class SpecificationLoaderTestAbstract {
 
         }});
 
-        final SpecificationLoader reflector =
-                new SpecificationLoader(DeploymentCategory.PRODUCTION,
-                        mockConfiguration,
-                        new ProgrammingModelFacetsJava5(),
-                        new MetaModelValidatorDefault(),
-                        Lists.<LayoutMetadataReader>newArrayList(
-                                new LayoutMetadataReaderFromJson()), mockServicesInjector);
         final ServicesInjector servicesInjector =
                 new ServicesInjector(Lists.newArrayList(
                         mockPersistenceSessionServiceInternal,
@@ -146,8 +135,15 @@ public abstract class SpecificationLoaderTestAbstract {
                         mockConfiguration,
                         mockSpecificationLoader,
                         mockDeploymentCategoryProvider));
-        runtimeContext = new RuntimeContext(servicesInjector);
-        reflector.init(runtimeContext);
+
+        final SpecificationLoader reflector =
+                new SpecificationLoader(DeploymentCategory.PRODUCTION,
+                        mockConfiguration,
+                        new ProgrammingModelFacetsJava5(),
+                        new MetaModelValidatorDefault(),
+                        Lists.<LayoutMetadataReader>newArrayList(
+                                new LayoutMetadataReaderFromJson()), servicesInjector);
+        reflector.init();
         
         specification = loadSpecification(reflector);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
index 766fb04..aeb7377 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
@@ -36,8 +36,9 @@ import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedF
 import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacet;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
@@ -56,6 +57,10 @@ public class ObjectAssociationAbstractTest {
 
     @Mock
     private ObjectSpecification objectSpecification;
+    @Mock
+    private ServicesInjector mockServicesInjector;
+    @Mock
+    private SpecificationLoader mockSpecificationLoader;
 
 
     public static class Customer {
@@ -69,9 +74,13 @@ public class ObjectAssociationAbstractTest {
     @Before
     public void setup() {
         facetedMethod = FacetedMethod.createForProperty(Customer.class, "firstName");
-        
-        objectAssociation = new ObjectAssociationAbstract(facetedMethod, FeatureType.PROPERTY, objectSpecification, new ObjectMemberDependencies(
-                null, null, null)) {
+
+        context.checking(new Expectations() {{
+            allowing(mockServicesInjector).getSpecificationLoader();
+            will(returnValue(mockSpecificationLoader));
+        }});
+
+        objectAssociation = new ObjectAssociationAbstract(facetedMethod, FeatureType.PROPERTY, objectSpecification, mockServicesInjector) {
 
             @Override
             public ObjectAdapter get(

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
index 375c636..999ec2a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
+import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.Before;
 import org.junit.Rule;
@@ -36,8 +37,9 @@ import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
@@ -55,6 +57,11 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
     @Mock
     private ObjectSpecification mockObjectSpecification;
 
+    @Mock
+    private ServicesInjector mockServicesInjector;
+    @Mock
+    private SpecificationLoader mockSpecificationLoader;
+
     public static class Customer {
         public String getFirstName() {
             return null;
@@ -64,10 +71,15 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
     @Before
     public void setup() {
         facetedMethod = FacetedMethod.createForProperty(Customer.class, "firstName");
-        
+
+        context.checking(new Expectations() {{
+            allowing(mockServicesInjector).getSpecificationLoader();
+            will(returnValue(mockSpecificationLoader));
+        }});
+
         objectAssociation = new ObjectAssociationAbstract(
                 facetedMethod, FeatureType.PROPERTY, mockObjectSpecification,
-                new ObjectMemberDependencies(null, null, null)) {
+                mockServicesInjector) {
 
             @Override
             public ObjectAdapter get(

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/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 ef42b18..e921400 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
@@ -42,7 +42,6 @@ import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFac
 import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
 import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -69,14 +68,13 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
     private Persistability persistable;
     private boolean isEncodeable;
 
-    private RuntimeContext runtimeContext;
+    private ServicesInjector servicesInjector;
 
     public ObjectSpecificationStub(final Class<?> type) {
         this(type.getName());
-        ServicesInjector servicesInjector = new ServicesInjector(Collections.emptyList());
+        this.servicesInjector = new ServicesInjector(Collections.emptyList());
         servicesInjector.addFallbackIfRequired(
                 ConfigurationServiceInternal.class, new IsisConfigurationDefault(null));
-        runtimeContext = new RuntimeContext(servicesInjector);
     }
 
     @Override
@@ -366,14 +364,6 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
         return null;
     }
 
-    /**
-     * @deprecated - unused ?
-     * @return
-     */
-    @Deprecated
-    public RuntimeContext getRuntimeContext() {
-        return runtimeContext;
-    }
 
     // /////////////////////////////////////////////////////////////
     // introspection

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
index bac3ad4..a207537 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
@@ -24,20 +24,21 @@ import java.util.Properties;
 import javax.activation.DataSource;
 import javax.annotation.PostConstruct;
 
+import com.google.common.base.Strings;
+
 import org.apache.commons.mail.DefaultAuthenticator;
 import org.apache.commons.mail.EmailException;
 import org.apache.commons.mail.ImageHtmlEmail;
 import org.apache.commons.mail.resolver.DataSourceClassPathResolver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.email.EmailService;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Strings;
 
 /**
  * A service that sends email notifications when specific events occur
@@ -193,6 +194,4 @@ public class EmailServiceDefault implements EmailService {
     }
     //endregion
 
-
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
index 3a2048c..1a5c1a6 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystem.java
@@ -40,7 +40,6 @@ import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.lang.ListExtensions;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
@@ -174,9 +173,6 @@ public class IsisSystem implements ApplicationScopedComponent {
                             deploymentType, servicesInjector);
             servicesInjector.addFallbackIfRequired(PersistenceSessionFactory.class, persistenceSessionFactory);
 
-            // runtimeContext
-            final RuntimeContext runtimeContext = new RuntimeContext(servicesInjector);
-
             // wire up components and components into services...
             for (Object service : servicesInjector.getRegisteredServices()) {
                 // inject itself into each service (if implements ServiceInjectorAware).
@@ -189,14 +185,14 @@ public class IsisSystem implements ApplicationScopedComponent {
                     authenticationManager, authorizationManager, persistenceSessionFactory);
 
             // temporarily make a configuration available
-            // TODO: REVIEW: would rather inject this, or perhaps even the ConfigurationBuilder
+            // TODO: REVIEW: would rather inject this
             IsisContext.setConfiguration(configuration);
 
             // set up the "appropriate" IsisContext (usually IsisContextThreadLocal) to hold
             // a reference to the sessionFactory just created
             deploymentType.initContext(sessionFactory);
 
-            specificationLoader.init(runtimeContext);
+            specificationLoader.init();
 
             try {
                 // validate here after all entities have been registered in the persistence session factory

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
index 927466f..426c070 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
@@ -27,15 +27,14 @@ import org.junit.Test;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
 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.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
@@ -79,9 +78,7 @@ public class ObjectActionLayoutXmlDefaultTest {
             }
         });
 
-        action = new ObjectActionDefault(mockFacetedMethod, new ObjectMemberDependencies(
-                mockSpecificationLookup, mockServicesInjector,
-                mockPersistenceSessionServiceInternal));
+        action = new ObjectActionDefault(mockFacetedMethod, mockServicesInjector);
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index 9ca1ae0..ff616aa 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -47,10 +47,10 @@ import org.apache.isis.core.metamodel.interactions.PropertyUsabilityContext;
 import org.apache.isis.core.metamodel.interactions.PropertyVisibilityContext;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder.Persistence;
@@ -83,6 +83,8 @@ public class ObjectMemberAbstractTest {
     @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
+    ServicesInjector mockServicesInjector;
+    @Mock
     private ObjectSpecification mockSpecForCustomer;
 
     @Mock
@@ -270,8 +272,7 @@ class ObjectMemberAbstractImpl extends ObjectMemberAbstract {
     }
 
     protected ObjectMemberAbstractImpl(final String id) {
-        super(FacetedMethod.createForProperty(Customer.class, "firstName"), FeatureType.PROPERTY, new ObjectMemberDependencies(
-                null, null, null));
+        super(FacetedMethod.createForProperty(Customer.class, "firstName"), FeatureType.PROPERTY, null);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
index 42b214d..25076ce 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
@@ -28,8 +28,6 @@ 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.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
 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;
@@ -37,10 +35,11 @@ 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.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.specimpl.OneToManyAssociationDefault;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
@@ -94,9 +93,7 @@ public class OneToManyAssociationDefaultTest {
         allowingPeerToReturnCollectionType();
         allowingPeerToReturnIdentifier();
         allowingSpecLoaderToReturnSpecs();
-        association = new OneToManyAssociationDefault(mockPeer, new ObjectMemberDependencies(
-                mockSpecificationLookup, mockServicesInjector,
-                mockPersistenceSessionServiceInternal));
+        association = new OneToManyAssociationDefault(mockPeer, mockServicesInjector);
     }
 
     private void allowingSpecLoaderToReturnSpecs() {

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 2c66f00..276631e 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -51,13 +51,12 @@ 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.services.msgbroker.MessageBrokerServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
+import org.apache.isis.core.metamodel.services.msgbroker.MessageBrokerServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
@@ -104,8 +103,6 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Mock
     private IsisConfiguration mockConfiguration;
 
-    private ObjectMemberDependencies objectMemberDependencies;
-
     @Mock
     private ObjectSpecificationDefault mockEmployeeSpec;
     private ObjectMember employeeNameMember;
@@ -134,11 +131,6 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Before
     public void setUp() {
 
-
-        objectMemberDependencies = new ObjectMemberDependencies(
-                mockSpecificationLoader, mockServicesInjector,
-                mockPersistenceSessionServiceInternal);
-
         employeeRepository = new EmployeeRepositoryImpl();
 
         employeeDO = new Employee();
@@ -171,7 +163,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
                 will(returnValue(DeploymentCategory.PRODUCTION));
 
-                allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+                allowing(mockServicesInjector).getSpecificationLoader();
                 will(returnValue(mockSpecificationLoader));
 
                 allowing(mockSpecificationLoader).loadSpecification(String.class);
@@ -219,7 +211,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
         employeeNameMember = new OneToOneAssociationDefault(
                 facetedMethodForProperty(
                         employeeSetNameMethod, employeeGetNameMethod, employeeModifyNameMethod, employeeClearNameMethod, employeeHideNameMethod, employeeDisableNameMethod, employeeValidateNameMethod),
-                objectMemberDependencies);
+                mockServicesInjector);
 
         context.checking(new Expectations() {
             {

http://git-wip-us.apache.org/repos/asf/isis/blob/03a1bd1c/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index ffacc15..66f5eaf 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -131,7 +131,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
 
         context.checking(new Expectations() {
             {
-                allowing(mockServicesInjector).lookupService(SpecificationLoader.class);
+                allowing(mockServicesInjector).getSpecificationLoader();
                 will(returnValue(mockSpecificationLoader));
 
                 allowing(mockDeploymentCategoryProvider).getDeploymentCategory();


[15/30] isis git commit: ISIS-1407: removed SpecificationLoaderAware.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
index 668df64..090463d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
@@ -32,8 +32,6 @@ import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.fallback.FallbackFacetFactory;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 
 public class TitleFacetViaMethodsFactory extends MethodPrefixBasedFacetFactoryAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java
index 01373de..ded2641 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class TitleFacetUsingParser extends FacetAbstract implements TitleFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java
index d3d6332..be4790a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet.java
index f8cc8dc..a9fa87e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facets.objectvalue.mustsatisfyspec.Specifi
 import org.apache.isis.core.metamodel.interactions.ProposedHolder;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory.java
index 27178b9..1cad584 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacetFactory.java
@@ -33,7 +33,7 @@ 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.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
index 0cc54f8..97c13e4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
@@ -30,8 +30,6 @@ import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 
 public class ValidateObjectFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/MaxLengthFacetUsingParser2.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/MaxLengthFacetUsingParser2.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/MaxLengthFacetUsingParser2.java
index 78194ba..ab1a1a7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/MaxLengthFacetUsingParser2.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/MaxLengthFacetUsingParser2.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.value;
 import org.apache.isis.applib.adapters.Parser2;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class MaxLengthFacetUsingParser2 extends MaxLengthFacetAbstract{
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/TypicalLengthFacetUsingParser.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/TypicalLengthFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/TypicalLengthFacetUsingParser.java
index 9190863..48e1f8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/TypicalLengthFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/TypicalLengthFacetUsingParser.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class TypicalLengthFacetUsingParser extends FacetAbstract implements TypicalLengthFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
index 2a8262c..85df238 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facets.MultipleValueFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderContext;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider;
 import org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder;
 import org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
index f4ed69a..c14fce1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
@@ -19,17 +19,13 @@
 
 package org.apache.isis.core.metamodel.facets.object.value.vsp;
 
-import org.apache.isis.core.commons.config.IsisConfiguration;
 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.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 
-public abstract class ValueFacetUsingSemanticsProviderFactory<T> extends FacetFactoryAbstract implements AdapterManagerAware, ServicesInjectorAware {
+public abstract class ValueFacetUsingSemanticsProviderFactory<T> extends FacetFactoryAbstract implements AdapterManagerAware {
 
     private AdapterManager adapterManager;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index 1711f78..a182114 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.InvalidEntryException;
 import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
index ac8612d..af78a81 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
@@ -18,7 +18,7 @@ package org.apache.isis.core.metamodel.facets.object.value.vsp;
 
 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.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class ValueSemanticsProviderContext {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
index 755338b..1e98748 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.interactions.ProposedHolder;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public abstract class MustSatisfySpecificationFacetAbstract extends FacetAbstract implements MustSatisfySpecificationFacet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/multiline/annotation/MultiLineFacetOnParameterAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/multiline/annotation/MultiLineFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/multiline/annotation/MultiLineFacetOnParameterAnnotationFactory.java
index 4cc5b3f..30b6952 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/multiline/annotation/MultiLineFacetOnParameterAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/multiline/annotation/MultiLineFacetOnParameterAnnotationFactory.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacetInferredFromMultiLineFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotationFactory.java
index f08e880..d573080 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotationFactory.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
index 2dd6f61..f2f939d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
@@ -46,7 +46,7 @@ import org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy.MustSat
 import org.apache.isis.core.metamodel.facets.param.parameter.regex.RegExFacetForParameterAnnotation;
 import org.apache.isis.core.metamodel.facets.param.parameter.regex.RegExFacetFromRegExAnnotationOnParameter;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java
index 937d027..2755d87 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java
@@ -26,7 +26,7 @@ import org.apache.isis.applib.spec.Specification;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java
index c597fa6..1a099ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java
@@ -26,7 +26,7 @@ import org.apache.isis.applib.spec.Specification;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class MustSatisfySpecificationFacetForParameterAnnotation extends MustSatisfySpecificationFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java
index b3ba65e..ebc17c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.RenderedAdjustedFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java
index 8888033..9ee85f0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maskannot/MaskFacetOnParameterAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maskannot/MaskFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maskannot/MaskFacetOnParameterAnnotationFactory.java
index 2f261be..6dcbcfc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maskannot/MaskFacetOnParameterAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maskannot/MaskFacetOnParameterAnnotationFactory.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.facets.object.mask.MaskFacet;
 import org.apache.isis.core.metamodel.facets.object.mask.TitleFacetBasedOnMask;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 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.MetaModelValidatorForDeprecatedAnnotation;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java
index 72e3c82..8a404cd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstra
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java
index 6638d5a..1a4a5e7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacetInferredFromMultiLineFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
index 6f0282a..ba09aee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
@@ -86,7 +86,7 @@ import org.apache.isis.core.metamodel.facets.properties.publish.PublishedPropert
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 import org.apache.isis.core.metamodel.util.EventUtil;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromDefault.java
index 8a32335..0bb49a5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromDefault.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class PropertyClearFacetForDomainEventFromDefault
         extends PropertySetterOrClearFacetForDomainEventAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromPropertyAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromPropertyAnnotation.java
index 3d19439..7d4aa4f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromPropertyAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class PropertyClearFacetForDomainEventFromPropertyAnnotation
         extends PropertySetterOrClearFacetForDomainEventAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromPropertyInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromPropertyInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromPropertyInteractionAnnotation.java
index 3b18c76..4fe6a8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromPropertyInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventFromPropertyInteractionAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForPostsPropertyChangedEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForPostsPropertyChangedEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForPostsPropertyChangedEventAnnotation.java
index 0138d9b..38c8f7b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForPostsPropertyChangedEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForPostsPropertyChangedEventAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
index 9c5c651..14080bf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.metamodel.interactions.ProposedHolder;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class PropertyDomainEventFacetAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetDefault.java
index 7e9c0d4..43cb32d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetDefault.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.properties.property.modify;
 import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class PropertyDomainEventFacetDefault extends PropertyDomainEventFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPostsPropertyChangedEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPostsPropertyChangedEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPostsPropertyChangedEventAnnotation.java
index 2a70364..d848833 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPostsPropertyChangedEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPostsPropertyChangedEventAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.properties.property.modify;
 import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyAnnotation.java
index 2515cda..a31c90a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.properties.property.modify;
 import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class PropertyDomainEventFacetForPropertyAnnotation extends PropertyDomainEventFacetAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyInteractionAnnotation.java
index 3afdb20..1e49c31 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetForPropertyInteractionAnnotation.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.properties.property.modify;
 import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromDefault.java
index 796186c..2abf22a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromDefault.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class PropertySetterFacetForDomainEventFromDefault
         extends PropertySetterOrClearFacetForDomainEventAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromPropertyAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromPropertyAnnotation.java
index deb059d..1b39525 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromPropertyAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class PropertySetterFacetForDomainEventFromPropertyAnnotation
         extends PropertySetterOrClearFacetForDomainEventAbstract

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromPropertyInteractionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromPropertyInteractionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromPropertyInteractionAnnotation.java
index cd757cb..0f653bd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromPropertyInteractionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventFromPropertyInteractionAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForPostsPropertyChangedEventAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForPostsPropertyChangedEventAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForPostsPropertyChangedEventAnnotation.java
index b97fc54..edb19ce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForPostsPropertyChangedEventAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForPostsPropertyChangedEventAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
index 482513a..c1e4ba6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollect
 import org.apache.isis.core.metamodel.facets.properties.publish.PublishedPropertyFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal;
 import org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java
index a5d93be..4fd0542 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java
@@ -26,7 +26,7 @@ import org.apache.isis.applib.spec.Specification;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
  * @deprecated

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java
index 549ecfa..40c10fd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java
@@ -26,7 +26,7 @@ import org.apache.isis.applib.spec.Specification;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 public class MustSatisfySpecificationFacetForPropertyAnnotation extends MustSatisfySpecificationFacetAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java
index 5b5db86..24521eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.RenderedAdjustedFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/typicallen/annotation/TypicalLengthOnPropertyFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/typicallen/annotation/TypicalLengthOnPropertyFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/typicallen/annotation/TypicalLengthOnPropertyFacetFactory.java
index b6991ce..be6ccf4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/typicallen/annotation/TypicalLengthOnPropertyFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/typicallen/annotation/TypicalLengthOnPropertyFacetFactory.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maskannot/MaskFacetOnPropertyAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maskannot/MaskFacetOnPropertyAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maskannot/MaskFacetOnPropertyAnnotationFactory.java
index af1ce53..59f6d0f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maskannot/MaskFacetOnPropertyAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maskannot/MaskFacetOnPropertyAnnotationFactory.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.facets.object.mask.MaskFacet;
 import org.apache.isis.core.metamodel.facets.object.mask.TitleFacetBasedOnMask;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ConfigurationServiceInternal;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 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.MetaModelValidatorForDeprecatedAnnotation;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
index 75fe978..3b48d1e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
@@ -79,8 +79,8 @@ import org.apache.isis.core.metamodel.layoutmetadata.PagedFacetRepr;
 import org.apache.isis.core.metamodel.layoutmetadata.PropertyLayoutFacetRepr;
 import org.apache.isis.core.metamodel.layoutmetadata.RenderFacetRepr;
 import org.apache.isis.core.metamodel.layoutmetadata.TypicalLengthFacetRepr;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjectorAware;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.Hint;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 f1a7ae4..0c63162 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
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.runtimecontext;
 
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.transactions.TransactionStateProvider;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 d33c189..d4a18ed 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
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.metamodel.runtimecontext;
 
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class RuntimeContextAbstract implements RuntimeContext {

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ServicesInjector.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ServicesInjector.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ServicesInjector.java
deleted file mode 100644
index 5a2439d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ServicesInjector.java
+++ /dev/null
@@ -1,74 +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.runtimecontext;
-
-import java.util.List;
-
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
-import org.apache.isis.applib.services.publish.PublishingService;
-
-public interface ServicesInjector {
-
-    void injectInto(final Object candidate);
-
-    /**
-     * All registered services, as an immutable {@link List}.
-     */
-    List<Object> getRegisteredServices();
-
-    /**
-     * Provided by the <tt>ServicesInjectorDefault</tt> when used by framework.
-     * 
-     * <p>
-     * Called in multiple places from metamodel and facets.
-     */
-    void injectServicesInto(final Object domainObject);
-
-    /**
-     * As per {@link #injectServicesInto(Object)}, but for all objects in the
-     * list.
-     */
-    void injectServicesInto(List<Object> objects);
-
-    /**
-     * Returns the first registered domain service implementing the requested type.
-     * 
-     * <p>
-     * Typically there will only ever be one domain service implementing a given type,
-     * (eg {@link PublishingService}), but for some services there can be more than one
-     * (eg {@link ExceptionRecognizer}).
-     * 
-     * @see #lookupServices(Class)
-     */
-    @Programmatic
-    <T> T lookupService(Class<T> serviceClass);
-    
-    /**
-     * Returns all domain services implementing the requested type, in the order
-     * that they were registered in <tt>isis.properties</tt>.
-     * 
-     * <p>
-     * Typically there will only ever be one domain service implementing a given type,
-     * (eg {@link PublishingService}), but for some services there can be more than one
-     * (eg {@link ExceptionRecognizer}).
-     * 
-     * @see #lookupService(Class)
-     */
-    @Programmatic
-    <T> List<T> lookupServices(Class<T> serviceClass);
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ServicesInjectorAware.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ServicesInjectorAware.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ServicesInjectorAware.java
deleted file mode 100644
index 57c5917..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/ServicesInjectorAware.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.runtimecontext;
-
-public interface ServicesInjectorAware {
-
-    public void setServicesInjector(ServicesInjector servicesInjector);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/6e3495f4/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 4639058..36aba77 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
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerServiceAbstrac
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAbstract;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;


[06/30] isis git commit: ISIS-1407: SpecificationLoader is now a concrete class (rolled ObjectReflector up into it).

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
index 34f9032..c8aa4e5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
@@ -22,8 +22,8 @@ package org.apache.isis.core.runtime.system;
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.core.commons.config.ConfigurationConstants;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.ObjectReflectorInstaller;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.AuthenticationManagerInstaller;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
@@ -47,12 +47,12 @@ public final class SystemConstants {
     /**
      * Key used to lookup {@link SpecificationLoader specification Loader} in
      * {@link IsisConfiguration}, and root for any
-     * {@link ObjectReflectorInstaller reflector}-specific configuration keys.
+     * {@link SpecificationLoaderInstaller reflector}-specific configuration keys.
      *
      * @deprecated
      */
     @Deprecated
-    public final static String REFLECTOR_KEY = ConfigurationConstants.ROOT + ObjectReflectorInstaller.TYPE;
+    public final static String REFLECTOR_KEY = ConfigurationConstants.ROOT + SpecificationLoaderInstaller.TYPE;
     
     /**
      * Default for {@link #REFLECTOR_KEY}

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index 885e841..610df72 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.commons.config.IsisConfigurationException;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.runtimecontext.LocalizationDefault;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.system.DeploymentType;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java
index 5302bcf..ea9d675 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.query.*;
 
 public class PersistenceQueryFactory {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 c2dcad5..428568d 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
@@ -98,7 +98,7 @@ import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index ec15042..63da828 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
index 892f2d4..17d7134 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.components.SessionScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
index 761a6ed..881bb98 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.installerregistry.InstallerLookup;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
index 27a31af..20d9337 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.fixtures.FixturesInstaller;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
index 0c364ad..2af84d9 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderDefault2.java
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFr
 import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
index db407ce..dd8bb72 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
@@ -28,8 +28,8 @@ import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.ObjectReflectorInstaller;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderInstaller;
 import org.apache.isis.core.runtime.authentication.AuthenticationManagerInstaller;
 import org.apache.isis.core.runtime.authorization.AuthorizationManagerInstaller;
 import org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration;
@@ -51,7 +51,7 @@ public class IsisComponentProviderUsingInstallers extends IsisComponentProviderA
 
     private final InstallerLookup installerLookup;
 
-    private ObjectReflectorInstaller reflectorInstaller;
+    private SpecificationLoaderInstaller reflectorInstaller;
     private PersistenceMechanismInstaller persistenceMechanismInstaller;
 
     public IsisComponentProviderUsingInstallers(

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
index e29190e..6ff1c64 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
@@ -26,7 +26,7 @@ import org.slf4j.LoggerFactory;
 import org.apache.isis.core.commons.components.InstallerAbstract;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
index 46d8766..b634cf2 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
@@ -35,7 +35,7 @@ import org.datanucleus.identity.DatastoreId;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
index 70d327e..21d99a2 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
@@ -39,7 +39,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.AppManifest;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
 public class RegisterEntities {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/main/resources/org/apache/isis/core/runtime/installer-registry.properties
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/resources/org/apache/isis/core/runtime/installer-registry.properties b/core/runtime/src/main/resources/org/apache/isis/core/runtime/installer-registry.properties
index 8ebe53c..7ee6aef 100644
--- a/core/runtime/src/main/resources/org/apache/isis/core/runtime/installer-registry.properties
+++ b/core/runtime/src/main/resources/org/apache/isis/core/runtime/installer-registry.properties
@@ -17,18 +17,18 @@
 
 
 # ObjectReflectorInstaller
-org.apache.isis.progmodels.dflt.JavaReflectorInstaller   # "java"
+org.apache.isis.progmodels.dflt.JavaReflectorInstaller                                  # "java"
 
 # AuthenticationManagerInstaller
-org.apache.isis.core.security.authentication.BypassAuthenticationManagerInstaller # "bypass"
-org.apache.isis.security.shiro.authentication.ShiroAuthenticationManagerInstaller # "shiro"
+org.apache.isis.core.security.authentication.BypassAuthenticationManagerInstaller       # "bypass"
+org.apache.isis.security.shiro.authentication.ShiroAuthenticationManagerInstaller       # "shiro"
 
 # AuthorizationManagerInstaller
-org.apache.isis.core.security.authorization.BypassAuthorizationManagerInstaller   # "bypass"
-org.apache.isis.security.shiro.authorization.ShiroAuthorizationManagerInstaller   # "shiro"
+org.apache.isis.core.security.authorization.BypassAuthorizationManagerInstaller         # "bypass"
+org.apache.isis.security.shiro.authorization.ShiroAuthorizationManagerInstaller         # "shiro"
 
 # FixturesInstaller
-org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration  "configuration"
+org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration                # "configuration"
 
 # ServicesInstaller
 org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration                # "configuration"
@@ -36,8 +36,5 @@ org.apache.isis.core.runtime.services.ServicesInstallerFromAnnotation
 org.apache.isis.core.runtime.services.ServicesInstallerFromConfigurationAndAnnotation   # "configuration-and-annotation"
 
 # PersistenceMechanismInstaller
-org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller # datanucleus
-
-
-####### END #########
+org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller    # datanucleus
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
index a28cfd1..3951bea 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
index e496be2..23f4ed5 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
index 3bdb185..3e1e4ab 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
@@ -34,7 +34,7 @@ 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.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index 6a7d078..9ca1ae0 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -49,7 +49,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
index ee4253d..e9dab8f 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
@@ -38,7 +38,7 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToF
 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.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.specloader.specimpl.OneToManyAssociationDefault;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
index 8233ea9..0f11391 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
@@ -19,7 +19,7 @@
 package org.apache.isis.viewer.restfulobjects.rendering;
 
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * TODO: roll-up in the future (introduced only so that API does not break)

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
index a485073..3267ab9 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
@@ -44,7 +44,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index 8e42cbf..44a4d0b 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
index 32bc869..ad14fc4 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
@@ -40,7 +40,7 @@ import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/SpecUtils.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/SpecUtils.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/SpecUtils.java
index 7e3886d..d541d8a 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/SpecUtils.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/SpecUtils.java
@@ -20,7 +20,7 @@ package org.apache.isis.viewer.wicket.model.mementos;
 
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
 public final class SpecUtils {

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNodeComparator.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNodeComparator.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNodeComparator.java
index 638968e..a0a16b3 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNodeComparator.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNodeComparator.java
@@ -26,7 +26,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index 50ad207..d8daeac 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -46,7 +46,7 @@ import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.runtime.system.context.IsisContext;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 5818cb7..1c3a074 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.common.PageParametersUtils;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
index c981222..5110b73 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
@@ -22,7 +22,7 @@ package org.apache.isis.viewer.wicket.ui.components.bookmarkedpages;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.models.BookmarkTreeNode;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index cd0eff9..87d142c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -61,7 +61,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.MessageBroker;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.model.common.PageParametersUtils;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
index b6ccdfa..52aa5e9 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
@@ -55,8 +55,8 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoaderAware;
 import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcher;
 import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcherTypeSafe;
 import org.apache.isis.core.wrapper.handlers.ProxyContextHandler;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/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 18a3f26..7d80efd 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
@@ -62,7 +62,7 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet.Intent;
 import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
index 049fdd8..945a274 100644
--- a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
@@ -28,7 +28,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.commons.ensure.Ensure;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.wrapper.proxy.ProxyCreator;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 21cdddb..55342aa 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -51,7 +51,7 @@ import org.apache.isis.core.metamodel.facets.properties.validating.method.Proper
 import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
 import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault;

http://git-wip-us.apache.org/repos/asf/isis/blob/04bf1f22/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index 47f6471..225162c 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -55,7 +55,7 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstr
 import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
 import org.apache.isis.core.runtime.authentication.standard.SimpleSession;


[21/30] isis git commit: ISIS-1409: internal components of RuntimeContext subclasses are now internal domain services; RuntimeContext hierarchy collapsed into a single class.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/a2a9f519/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
deleted file mode 100644
index 8292615..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ /dev/null
@@ -1,2341 +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.system.persistence;
-
-import java.lang.reflect.Array;
-import java.lang.reflect.Modifier;
-import java.text.MessageFormat;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import javax.jdo.FetchGroup;
-import javax.jdo.FetchPlan;
-import javax.jdo.PersistenceManager;
-import javax.jdo.PersistenceManagerFactory;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import org.datanucleus.enhancement.Persistable;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.isis.applib.RecoverableException;
-import org.apache.isis.applib.profiles.Localization;
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService2;
-import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.eventbus.AbstractLifecycleEvent;
-import org.apache.isis.applib.services.eventbus.EventBusService;
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer2;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.components.SessionScopedComponent;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.commons.ensure.Assert;
-import org.apache.isis.core.commons.ensure.Ensure;
-import org.apache.isis.core.commons.ensure.IsisAssertException;
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.commons.factory.InstanceUtil;
-import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-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;
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
-import org.apache.isis.core.metamodel.adapter.version.Version;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.ElementSpecificationProviderFromTypeOfFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
-import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.LifecycleEventFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet;
-import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerServiceAware;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionServiceAware;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
-import org.apache.isis.core.metamodel.spec.FreeStandingList;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.Contributed;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
-import org.apache.isis.core.runtime.persistence.NotPersistableException;
-import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
-import org.apache.isis.core.runtime.persistence.PojoRecreationException;
-import org.apache.isis.core.runtime.persistence.PojoRefreshException;
-import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
-import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
-import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerResolve;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource;
-import org.apache.isis.core.runtime.persistence.query.PersistenceQueryFindAllInstances;
-import org.apache.isis.core.runtime.persistence.query.PersistenceQueryFindUsingApplibQueryDefault;
-import org.apache.isis.core.runtime.runner.opts.OptionHandlerFixtureAbstract;
-import org.apache.isis.core.runtime.services.changes.ChangedObjectsServiceInternal;
-import org.apache.isis.core.runtime.services.metrics.MetricsServiceDefault;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.adaptermanager.OidAdapterHashMap;
-import org.apache.isis.core.runtime.system.persistence.adaptermanager.PojoAdapterHashMap;
-import org.apache.isis.core.runtime.system.persistence.adaptermanager.RootAndCollectionAdapters;
-import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
-import org.apache.isis.core.runtime.system.transaction.TransactionalClosureWithReturn;
-import org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusCreateObjectCommand;
-import org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusDeleteObjectCommand;
-import org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindAllInstancesProcessor;
-import org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindUsingApplibQueryProcessor;
-import org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryProcessor;
-import org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryProcessorAbstract;
-import org.apache.isis.objectstore.jdo.datanucleus.persistence.spi.JdoObjectIdSerializer;
-
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatContext;
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.CoreMatchers.nullValue;
-
-/**
- * A wrapper around the JDO {@link PersistenceManager}, which also manages concurrency
- * and maintains an identity map of {@link ObjectAdapter adapter}s and {@link Oid
- * identities} for each and every POJO that is being used by the framework.
- */
-public class PersistenceSession implements
-        TransactionalResource,
-        SessionScopedComponent,
-        AdapterManager,
-        MessageBrokerService,
-        PersistenceSessionService,
-        IsisLifecycleListener2.PersistenceSessionLifecycleManagement,
-        IsisTransactionManager.PersistenceSessionTransactionManagement,
-        PersistenceQueryProcessorAbstract.PersistenceSessionQueryProcessorManagement {
-
-    //region > constants
-    private static final Logger LOG = LoggerFactory.getLogger(PersistenceSession.class);
-
-    /**
-     * @see #isFixturesInstalled()
-     */
-    public static final String INSTALL_FIXTURES_KEY = OptionHandlerFixtureAbstract.DATANUCLEUS_INSTALL_FIXTURES_KEY;
-    public static final boolean INSTALL_FIXTURES_DEFAULT = false;
-
-    private static final String ROOT_KEY = OptionHandlerFixtureAbstract.DATANUCLEUS_ROOT_KEY;
-
-    /**
-     * Append regular <a href="http://www.datanucleus.org/products/accessplatform/persistence_properties.html">datanucleus properties</a> to this key
-     */
-    public static final String DATANUCLEUS_PROPERTIES_ROOT = ROOT_KEY + "impl.";
-    //endregion
-
-    //region > constructor, fields, finalize()
-
-    private final FixturesInstalledFlag fixturesInstalledFlag;
-
-    private final PersistenceQueryFactory persistenceQueryFactory;
-    private final IsisConfigurationDefault configuration;
-    private final SpecificationLoader specificationLoader;
-    private final AuthenticationSession authenticationSession;
-
-    private final ServicesInjector servicesInjector;
-    /**
-     * Used to create the {@link #persistenceManager} when {@link #open()}ed.
-     */
-    private final PersistenceManagerFactory jdoPersistenceManagerFactory;
-
-    // not final only for testing purposes
-    private IsisTransactionManager transactionManager;
-
-    private final OidMarshaller oidMarshaller = new OidMarshaller();
-
-    /**
-     * populated only when {@link #open()}ed.
-     */
-    private PersistenceManager persistenceManager;
-
-    /**
-     * populated only when {@link #open()}ed.
-     */
-    private final Map<Class<?>, PersistenceQueryProcessor<?>> persistenceQueryProcessorByClass = Maps.newHashMap();
-
-    private final Map<ObjectSpecId, RootOid> registeredServices = Maps.newHashMap();
-
-    private final boolean concurrencyCheckingGloballyEnabled;
-
-
-    /**
-     * Initialize the object store so that calls to this object store access
-     * persisted objects and persist changes to the object that are saved.
-     */
-    public PersistenceSession(
-            final IsisConfigurationDefault configuration,
-            final ServicesInjector servicesInjector,
-            final SpecificationLoader specificationLoader,
-            final AuthenticationSession authenticationSession,
-            final PersistenceManagerFactory jdoPersistenceManagerFactory,
-            final FixturesInstalledFlag fixturesInstalledFlag) {
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("creating " + this);
-        }
-
-        // injected
-        this.configuration = configuration;
-        this.specificationLoader = specificationLoader;
-        this.authenticationSession = authenticationSession;
-        this.fixturesInstalledFlag = fixturesInstalledFlag;
-
-        this.servicesInjector = servicesInjector;
-        this.jdoPersistenceManagerFactory = jdoPersistenceManagerFactory;
-
-        // sub-components
-        final AdapterManager adapterManager = this;
-        this.persistenceQueryFactory = new PersistenceQueryFactory(adapterManager, specificationLoader);
-        final IsisTransactionManager.PersistenceSessionTransactionManagement psTranManagement = this;
-        this.transactionManager = new IsisTransactionManager(psTranManagement, servicesInjector);
-
-        setState(State.NOT_INITIALIZED);
-
-        final boolean concurrencyCheckingGloballyDisabled =
-                configuration.getBoolean("isis.persistor.disableConcurrencyChecking", false);
-        this.concurrencyCheckingGloballyEnabled = !concurrencyCheckingGloballyDisabled;
-
-    }
-
-    @Override
-    protected void finalize() throws Throwable {
-        super.finalize();
-        LOG.debug("finalizing persistence session");
-    }
-
-    //endregion
-
-
-    //region > open
-
-    /**
-     * Only populated once {@link #open()}'d
-     */
-    public PersistenceManager getPersistenceManager() {
-        return persistenceManager;
-    }
-
-    /**
-     * Injects components, calls open on subcomponents, and then creates service
-     * adapters.
-     */
-    public void open() {
-        ensureNotOpened();
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("opening " + this);
-        }
-
-        oidAdapterMap.open();
-        pojoAdapterMap.open();
-
-        persistenceManager = jdoPersistenceManagerFactory.getPersistenceManager();
-
-        final IsisLifecycleListener2.PersistenceSessionLifecycleManagement psLifecycleMgmt = this;
-        final IsisLifecycleListener2 isisLifecycleListener = new IsisLifecycleListener2(psLifecycleMgmt);
-        persistenceManager.addInstanceLifecycleListener(isisLifecycleListener, (Class[]) null);
-
-        final PersistenceQueryProcessorAbstract.PersistenceSessionQueryProcessorManagement psQueryProcessorMgmt = this;
-        persistenceQueryProcessorByClass.put(
-                PersistenceQueryFindAllInstances.class,
-                new PersistenceQueryFindAllInstancesProcessor(psQueryProcessorMgmt));
-        persistenceQueryProcessorByClass.put(
-                PersistenceQueryFindUsingApplibQueryDefault.class,
-                new PersistenceQueryFindUsingApplibQueryProcessor(psQueryProcessorMgmt));
-
-        initServices();
-
-        final MetricsServiceDefault metricsServiceDefault = servicesInjector.lookupService(MetricsServiceDefault.class);
-        persistenceManager.addInstanceLifecycleListener(metricsServiceDefault, (Class[])null);
-
-        setState(State.OPEN);
-    }
-
-
-    /**
-     * Creates {@link ObjectAdapter adapters} for the service list.
-     */
-    private void initServices() {
-        final List<Object> registeredServices = servicesInjector.getRegisteredServices();
-        for (final Object service : registeredServices) {
-            final ObjectSpecification serviceSpecification =
-                    specificationLoader.loadSpecification(service.getClass());
-            serviceSpecification.markAsService();
-            final RootOid existingOid = getOidForService(serviceSpecification);
-            final ObjectAdapter serviceAdapter =
-                    existingOid == null
-                            ? adapterFor(service)
-                            : mapRecreatedPojo(existingOid, service);
-            if (serviceAdapter.getOid().isTransient()) {
-                remapAsPersistent(serviceAdapter, null);
-            }
-
-            if (existingOid == null) {
-                final RootOid persistentOid = (RootOid) serviceAdapter.getOid();
-                this.registeredServices.put(persistentOid.getObjectSpecId(), persistentOid);
-            }
-        }
-    }
-
-    //endregion
-
-    //region > close
-
-    /**
-     * Closes the subcomponents.
-     *
-     * <p>
-     * Automatically {@link IsisTransactionManager#endTransaction() ends
-     * (commits)} the current (Isis) {@link IsisTransaction}. This in turn commits the underlying
-     * JDO transaction.
-     *
-     * <p>
-     * The corresponding DataNucleus entity is then closed.
-     */
-    public void close() {
-
-        if (getState() == State.CLOSED) {
-            // nothing to do
-            return;
-        }
-
-        try {
-            final IsisTransaction currentTransaction = transactionManager.getTransaction();
-            if (currentTransaction != null && !currentTransaction.getState().isComplete()) {
-                if(currentTransaction.getState().canCommit()) {
-                    transactionManager.endTransaction();
-                } else if(currentTransaction.getState().canAbort()) {
-                    transactionManager.abortTransaction();
-                }
-            }
-        } catch(final Throwable ex) {
-            // ignore
-            LOG.error("close: failed to end transaction; continuing to avoid memory leakage");
-        }
-
-        try {
-            persistenceManager.close();
-        } catch(final Throwable ex) {
-            // ignore
-            LOG.error(
-                "close: failed to close JDO persistenceManager; continuing to avoid memory leakage");
-        }
-        // TODO: REVIEW ... ??? this is a guess: don't set to null, because we need for -> transactionManager -> transaction -> messageBroker
-        // persistenceManager = null;
-
-        try {
-            oidAdapterMap.close();
-        } catch(final Throwable ex) {
-            // ignore
-            LOG.error("close: oidAdapterMap#close() failed; continuing to avoid memory leakage");
-        }
-
-        try {
-            pojoAdapterMap.close();
-        } catch(final Throwable ex) {
-            // ignore
-            LOG.error("close: pojoAdapterMap#close() failed; continuing to avoid memory leakage");
-        }
-
-        setState(State.CLOSED);
-    }
-
-    //endregion
-
-    //region > Injectable
-    @Override
-    public void injectInto(final Object candidate) {
-        if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
-            final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
-            cast.setAdapterManager(this);
-        }
-        if (MessageBrokerServiceAware.class.isAssignableFrom(candidate.getClass())) {
-            final MessageBrokerServiceAware cast = MessageBrokerServiceAware.class.cast(candidate);
-            cast.setMessageBrokerService(this);
-        }
-        if (PersistenceSessionServiceAware.class.isAssignableFrom(candidate.getClass())) {
-            final PersistenceSessionServiceAware cast = PersistenceSessionServiceAware.class.cast(candidate);
-            cast.setPersistenceSessionService(this);
-        }
-    }
-    //endregion
-
-    //region > QuerySubmitter impl, findInstancesInTransaction
-
-    @Override
-    public <T> List<ObjectAdapter> allMatchingQuery(final Query<T> query) {
-        final ObjectAdapter instances = findInstancesInTransaction(query, QueryCardinality.MULTIPLE);
-        return CollectionFacetUtils.convertToAdapterList(instances);
-    }
-
-    @Override
-    public <T> ObjectAdapter firstMatchingQuery(final Query<T> query) {
-        final ObjectAdapter instances = findInstancesInTransaction(query, QueryCardinality.SINGLE);
-        final List<ObjectAdapter> list = CollectionFacetUtils.convertToAdapterList(instances);
-        return list.size() > 0 ? list.get(0) : null;
-    }
-
-    /**
-     * Finds and returns instances that match the specified query.
-     *
-     * <p>
-     * The {@link QueryCardinality} determines whether all instances or just the
-     * first matching instance is returned.
-     *
-     * @throws org.apache.isis.core.runtime.persistence.UnsupportedFindException
-     *             if the criteria is not support by this persistor
-     */
-    private <T> ObjectAdapter findInstancesInTransaction(final Query<T> query, final QueryCardinality cardinality) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("findInstances using (applib) Query: " + query);
-        }
-
-        // TODO: unify PersistenceQuery and PersistenceQueryProcessor
-        final PersistenceQuery persistenceQuery = createPersistenceQueryFor(query, cardinality);
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("maps to (core runtime) PersistenceQuery: " + persistenceQuery);
-        }
-
-        final PersistenceQueryProcessor<? extends PersistenceQuery> processor = lookupProcessorFor(persistenceQuery);
-
-        final List<ObjectAdapter> instances = transactionManager.executeWithinTransaction(
-                new TransactionalClosureWithReturn<List<ObjectAdapter>>() {
-                    @Override
-                    public List<ObjectAdapter> execute() {
-                        return processPersistenceQuery(processor, persistenceQuery);
-                    }
-                });
-        final ObjectSpecification specification = persistenceQuery.getSpecification();
-        final FreeStandingList results = new FreeStandingList(specification, instances);
-        return adapterFor(results);
-    }
-
-    /**
-     * Converts the {@link Query applib representation of a query} into the
-     * {@link PersistenceQuery NOF-internal representation}.
-     */
-    private final PersistenceQuery createPersistenceQueryFor(
-            final Query<?> query,
-            final QueryCardinality cardinality) {
-
-        final PersistenceQuery persistenceQuery =
-                persistenceQueryFactory.createPersistenceQueryFor(query, cardinality);
-        if (persistenceQuery == null) {
-            throw new IllegalArgumentException("Unknown Query type: " + query.getDescription());
-        }
-
-        return persistenceQuery;
-    }
-
-    private PersistenceQueryProcessor<? extends PersistenceQuery> lookupProcessorFor(final PersistenceQuery persistenceQuery) {
-        final Class<? extends PersistenceQuery> persistenceQueryClass = persistenceQuery.getClass();
-        final PersistenceQueryProcessor<? extends PersistenceQuery> processor =
-                persistenceQueryProcessorByClass.get(persistenceQueryClass);
-        if (processor == null) {
-            throw new UnsupportedFindException(MessageFormat.format(
-                    "Unsupported PersistenceQuery class: {0}", persistenceQueryClass.getName()));
-        }
-        return processor;
-    }
-    @SuppressWarnings("unchecked")
-    private <Q extends PersistenceQuery> List<ObjectAdapter> processPersistenceQuery(
-            final PersistenceQueryProcessor<Q> persistenceQueryProcessor,
-            final PersistenceQuery persistenceQuery) {
-        return persistenceQueryProcessor.process((Q) persistenceQuery);
-    }
-
-    public IsisConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    public OidMarshaller getOidMarshaller() {
-        return oidMarshaller;
-    }
-
-
-    //endregion
-
-    //region > State
-
-    private enum State {
-        NOT_INITIALIZED, OPEN, CLOSED
-    }
-
-    private State state;
-
-    private State getState() {
-        return state;
-    }
-    
-    private void setState(final State state) {
-        this.state = state;
-    }
-    
-    protected void ensureNotOpened() {
-        if (getState() != State.NOT_INITIALIZED) {
-            throw new IllegalStateException("Persistence session has already been initialized");
-        }
-    }
-
-    public void ensureOpened() {
-        ensureStateIs(State.OPEN);
-    }
-
-    private void ensureStateIs(final State stateRequired) {
-        if (state == stateRequired) {
-            return;
-        }
-        throw new IllegalStateException("State is: " + state + "; should be: " + stateRequired);
-    }
-
-
-
-    //endregion
-
-    //region > createTransientInstance, createViewModelInstance
-
-    /**
-     * Create a root or standalone {@link ObjectAdapter adapter}.
-     *
-     * <p>
-     * Creates a new instance of the specified type and returns it in an adapter.
-     *
-     * <p>
-     * The returned object will be initialised (had the relevant callback
-     * lifecycle methods invoked).
-     *
-     * <p>
-     * While creating the object it will be initialised with default values and
-     * its created lifecycle method (its logical constructor) will be invoked.
-     *
-     * <p>
-     * This method is ultimately delegated to by the
-     * {@link org.apache.isis.applib.DomainObjectContainer}.
-     */
-    public ObjectAdapter createTransientInstance(final ObjectSpecification objectSpec) {
-        return createInstance(objectSpec, Variant.TRANSIENT, null);
-    }
-
-    public ObjectAdapter createViewModelInstance(final ObjectSpecification objectSpec, final String memento) {
-        return createInstance(objectSpec, Variant.VIEW_MODEL, memento);
-    }
-
-    private enum Variant {
-        TRANSIENT,
-        VIEW_MODEL
-    }
-
-    private ObjectAdapter createInstance(
-            final ObjectSpecification spec,
-            final Variant variant,
-            final String memento) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("creating " + variant + " instance of " + spec);
-        }
-        final Object pojo;
-
-        if(variant == Variant.VIEW_MODEL) {
-            pojo = recreateViewModel(spec, memento);
-        } else {
-            pojo = instantiateAndInjectServices(spec);
-
-        }
-
-        final ObjectAdapter adapter = adapterFor(pojo);
-        return initializePropertiesAndDoCallback(adapter);
-    }
-
-    private Object recreateViewModel(final ObjectSpecification spec, final String memento) {
-        final ViewModelFacet facet = spec.getFacet(ViewModelFacet.class);
-        if(facet == null) {
-            throw new IllegalArgumentException("spec does not have ViewModelFacet; spec is " + spec.getFullIdentifier());
-        }
-
-        final Object viewModelPojo;
-        if(facet.getRecreationMechanism().isInitializes()) {
-            viewModelPojo = instantiateAndInjectServices(spec);
-            facet.initialize(viewModelPojo, memento);
-        } else {
-            viewModelPojo = facet.instantiate(spec.getCorrespondingClass(), memento);
-        }
-        return viewModelPojo;
-    }
-
-    public Object instantiateAndInjectServices(final ObjectSpecification objectSpec) {
-
-        final Class<?> correspondingClass = objectSpec.getCorrespondingClass();
-        if (correspondingClass.isArray()) {
-            return Array.newInstance(correspondingClass.getComponentType(), 0);
-        }
-
-        final Class<?> cls = correspondingClass;
-        if (Modifier.isAbstract(cls.getModifiers())) {
-            throw new IsisException("Cannot create an instance of an abstract class: " + cls);
-        }
-        final Object newInstance;
-        if (Modifier.isAbstract(cls.getModifiers())) {
-            throw new IsisException("Cannot create an instance of an abstract class: " + cls);
-        }
-
-        try {
-            newInstance = cls.newInstance();
-        } catch (final IllegalAccessException | InstantiationException e) {
-            throw new IsisException("Failed to create instance of type " + objectSpec.getFullIdentifier(), e);
-        }
-
-        servicesInjector.injectServicesInto(newInstance);
-        return newInstance;
-
-    }
-
-    private ObjectAdapter initializePropertiesAndDoCallback(final ObjectAdapter adapter) {
-
-        // initialize new object
-        final List<ObjectAssociation> fields = adapter.getSpecification().getAssociations(Contributed.EXCLUDED);
-        for (ObjectAssociation field : fields) {
-            field.toDefault(adapter);
-        }
-        final Object pojo = adapter.getObject();
-        servicesInjector.injectServicesInto(pojo);
-
-        CallbackFacet.Util.callCallback(adapter, CreatedCallbackFacet.class);
-
-        if (Command.class.isAssignableFrom(pojo.getClass())) {
-
-            // special case... the command object is created while the transaction is being started and before
-            // the event bus service is initialized (nb: we initialize services *within* a transaction).  To resolve
-            // this catch-22 situation, we simply suppress the posting of this event for this domain class.
-
-            // this seems the least unpleasant of the various options available:
-            // * we could have put a check in the EventBusService to ignore the post if not yet initialized;
-            //   however this might hide other genuine errors
-            // * we could have used the thread-local in JdoStateManagerForIsis and the "skip(...)" hook in EventBusServiceJdo
-            //   to have this event be skipped; but that seems like co-opting some other design
-            // * we could have the transaction initialize the EventBusService as a "special case" before creating the Command;
-            //   but then do we worry about it being re-init'd later by the ServicesInitializer?
-
-            // so, doing it this way is this simplest, least obscure.
-
-            if(LOG.isDebugEnabled()) {
-                LOG.debug("Skipping postEvent for creation of Command pojo");
-            }
-
-        } else {
-            postLifecycleEventIfRequired(adapter, CreatedLifecycleEventFacet.class);
-        }
-
-        return adapter;
-    }
-
-
-    //endregion
-
-    //region > getServices, getService
-
-    public List<ObjectAdapter> getServices() {
-        final List<Object> services = servicesInjector.getRegisteredServices();
-        final List<ObjectAdapter> serviceAdapters = Lists.newArrayList();
-        for (final Object servicePojo : services) {
-            serviceAdapters.add(getService(servicePojo));
-        }
-        return serviceAdapters;
-    }
-
-    private ObjectAdapter getService(final Object servicePojo) {
-        final ObjectSpecification serviceSpecification =
-                specificationLoader.loadSpecification(servicePojo.getClass());
-        final RootOid oid = getOidForService(serviceSpecification);
-        final ObjectAdapter serviceAdapter = mapRecreatedPojo(oid, servicePojo);
-
-        return serviceAdapter;
-    }
-
-    /**
-     * Returns the OID for the adapted service. This allows a service object to
-     * be given the same OID that it had when it was created in a different
-     * session.
-     */
-    private RootOid getOidForService(final ObjectSpecification serviceSpec) {
-        final ObjectSpecId serviceSpecId = serviceSpec.getSpecId();
-        final RootOid oid = this.registeredServices.get(serviceSpecId);
-        return oid;
-    }
-
-    //endregion
-
-    //region > helper: postEvent
-
-    void postLifecycleEventIfRequired(
-            final ObjectAdapter adapter,
-            final Class<? extends LifecycleEventFacet> lifecycleEventFacetClass) {
-        final LifecycleEventFacet facet = adapter.getSpecification().getFacet(lifecycleEventFacetClass);
-        if(facet != null) {
-            final Class<? extends AbstractLifecycleEvent<?>> eventType = facet.getEventType();
-            final Object instance = InstanceUtil.createInstance(eventType);
-            final Object pojo = adapter.getObject();
-            postEvent((AbstractLifecycleEvent) instance, pojo);
-        }
-    }
-
-    void postEvent(final AbstractLifecycleEvent<Object> event, final Object pojo) {
-        final EventBusService eventBusService = getServicesInjector().lookupService(EventBusService.class);
-        event.setSource(pojo);
-        eventBusService.post(event);
-    }
-    //endregion
-
-
-
-    //region > fixture installation
-
-    /**
-     * Determine if the object store has been initialized with its set of start
-     * up objects.
-     * 
-     * <p>
-     * This method is called only once after the init has been called. If this flag
-     * returns <code>false</code> the framework will run the fixtures to
-     * initialise the persistor.
-     * 
-     * <p>
-     * Returns the cached value of {@link #isFixturesInstalled()
-     * whether fixtures are installed} from the
-     * {@link PersistenceSessionFactory}.
-     * <p>
-     * This caching is important because if we've determined, for a given run,
-     * that fixtures are not installed, then we don't want to change our mind by
-     * asking the object store again in another session.
-     * 
-     * @see FixturesInstalledFlag
-     */
-    public boolean isFixturesInstalled() {
-        if (fixturesInstalledFlag.isFixturesInstalled() == null) {
-            fixturesInstalledFlag.setFixturesInstalled(objectStoreIsFixturesInstalled());
-        }
-        return fixturesInstalledFlag.isFixturesInstalled();
-    }
-
-
-    /**
-     * Determine if the object store has been initialized with its set of start
-     * up objects.
-     *
-     * <p>
-     * This method is called only once after the session is opened called. If it returns <code>false</code> then the
-     * framework will run the fixtures to initialise the object store.
-     *
-     * <p>
-     * Implementation looks for the {@link #INSTALL_FIXTURES_KEY} in the injected {@link #configuration configuration}.
-     *
-     * <p>
-     * By default this is not expected to be there, but utilities can add in on
-     * the fly during bootstrapping if required.
-     */
-    public boolean objectStoreIsFixturesInstalled() {
-        final boolean installFixtures = configuration.getBoolean(INSTALL_FIXTURES_KEY, INSTALL_FIXTURES_DEFAULT);
-        LOG.info("isFixturesInstalled: {} = {}", INSTALL_FIXTURES_KEY, installFixtures);
-        return !installFixtures;
-    }
-
-    //endregion
-
-    //region > loadObject
-
-    /**
-     * Loads the object identified by the specified {@link RootOid}.
-     *
-     * <p>
-     * That is, it retrieves the object identified by the specified {@link RootOid} from the object
-     * store, {@link AdapterManager#mapRecreatedPojo(org.apache.isis.core.metamodel.adapter.oid.Oid, Object) mapped by
-     * the adapter manager}.
-     *
-     * <p>The cache should be checked first and, if the object is cached,
-     * the cached version should be returned. It is important that if this
-     * method is called again, while the originally returned object is in
-     * working memory, then this method must return that same Java object.
-     *
-     * <p>
-     * Assuming that the object is not cached then the data for the object
-     * should be retrieved from the persistence mechanism and the object
-     * recreated (as describe previously). The specified OID should then be
-     * assigned to the recreated object by calling its <method>setOID </method>.
-     * Before returning the object its resolved flag should also be set by
-     * calling its <method>setResolved </method> method as well.
-     *
-     * <p>
-     * If the persistence mechanism does not known of an object with the
-     * specified {@link RootOid} then a {@link org.apache.isis.core.runtime.persistence.ObjectNotFoundException} should be
-     * thrown.
-     *
-     * <p>
-     * Note that the OID could be for an internal collection, and is
-     * therefore related to the parent object (using a {@link ParentedCollectionOid}).
-     * The elements for an internal collection are commonly stored as
-     * part of the parent object, so to get element the parent object needs to
-     * be retrieved first, and the internal collection can be got from that.
-     *
-     * <p>
-     * Returns the stored {@link ObjectAdapter} object.
-     *
-     *
-     * @return the requested {@link ObjectAdapter} that has the specified
-     *         {@link RootOid}.
-     *
-     * @throws org.apache.isis.core.runtime.persistence.ObjectNotFoundException
-     *             when no object corresponding to the oid can be found
-     */
-    public ObjectAdapter loadObjectInTransaction(final RootOid oid) {
-        
-        // REVIEW: 
-        // this method does not account for the oid possibly being a view model
-        // alternatively, can call #adapterFor(oid); this code
-        // delegates to the PojoRecreator which *does* take view models into account
-        //
-        // it's possible, therefore, that existing callers to this method (the Scimpi viewer)
-        // could be refactored to use #adapterFor(...)
-        ensureThatArg(oid, is(notNullValue()));
-
-        final ObjectAdapter adapter = getAdapterFor(oid);
-        if (adapter != null) {
-            return adapter;
-        }
-
-        return transactionManager.executeWithinTransaction(
-                new TransactionalClosureWithReturn<ObjectAdapter>() {
-                    @Override
-                    public ObjectAdapter execute() {
-                        if (LOG.isDebugEnabled()) {
-                            LOG.debug("getObject; oid=" + oid);
-                        }
-
-                        final Object pojo = loadPojo(oid);
-                        return mapRecreatedPojo(oid, pojo);
-                    }
-                });
-    }
-
-
-    //endregion
-
-    //region > loadPojo
-
-    public Object loadPojo(final RootOid rootOid) {
-
-        Object result;
-        try {
-            final Class<?> cls = clsOf(rootOid);
-            final Object jdoObjectId = JdoObjectIdSerializer.toJdoObjectId(rootOid);
-            FetchPlan fetchPlan = persistenceManager.getFetchPlan();
-            fetchPlan.addGroup(FetchGroup.DEFAULT);
-            result = persistenceManager.getObjectById(cls, jdoObjectId);
-        } catch (final RuntimeException e) {
-
-            final List<ExceptionRecognizer> exceptionRecognizers = getServicesInjector().lookupServices(ExceptionRecognizer.class);
-            for (ExceptionRecognizer exceptionRecognizer : exceptionRecognizers) {
-                if(exceptionRecognizer instanceof ExceptionRecognizer2) {
-                    final ExceptionRecognizer2 recognizer = (ExceptionRecognizer2) exceptionRecognizer;
-                    final ExceptionRecognizer2.Recognition recognition = recognizer.recognize2(e);
-                    if(recognition != null) {
-                        if(recognition.getCategory() == ExceptionRecognizer2.Category.NOT_FOUND) {
-                            throw new ObjectNotFoundException(rootOid, e);
-                        }
-                    }
-                }
-            }
-
-            throw e;
-        }
-
-        if (result == null) {
-            throw new ObjectNotFoundException(rootOid);
-        }
-        return result;
-    }
-
-    private Class<?> clsOf(final RootOid oid) {
-        final ObjectSpecification objectSpec = getSpecificationLoader().lookupBySpecId(oid.getObjectSpecId());
-        return objectSpec.getCorrespondingClass();
-    }
-
-    //endregion
-
-    //region > lazilyLoaded
-
-
-    public ObjectAdapter mapPersistent(final Persistable pojo) {
-        if (persistenceManager.getObjectId(pojo) == null) {
-            return null;
-        }
-        final RootOid oid = createPersistentOrViewModelOid(pojo);
-        final ObjectAdapter adapter = mapRecreatedPojo(oid, pojo);
-        return adapter;
-    }
-
-
-    //endregion
-
-    //region > refreshRootInTransaction, refreshRoot
-
-    /**
-     * Re-initialises the fields of an object. If the object is unresolved then
-     * the object's missing data should be retrieved from the persistence
-     * mechanism and be used to set up the value objects and associations.
-     */
-    public void refreshRootInTransaction(final ObjectAdapter adapter) {
-        Assert.assertTrue("only resolve object that is persistent", adapter, adapter.representsPersistent());
-        getTransactionManager().executeWithinTransaction(new TransactionalClosure() {
-
-            @Override
-            public void execute() {
-
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("resolveImmediately; oid=" + adapter.getOid().enString(oidMarshaller));
-                }
-
-                if (!adapter.representsPersistent()) {
-                    if (LOG.isDebugEnabled()) {
-                        LOG.debug("; not persistent - ignoring");
-                    }
-                    return;
-                }
-
-                refreshRoot(adapter);
-            }
-
-        });
-    }
-
-    /**
-     * Forces a reload (refresh in JDO terminology) of the domain object wrapped in the {@link ObjectAdapter}.
-     */
-    public void refreshRoot(final ObjectAdapter adapter) {
-
-        final Object domainObject = adapter.getObject();
-        if (domainObject == null) {
-            // REVIEW: is this possible?
-            throw new PojoRefreshException(adapter.getOid());
-        }
-
-        try {
-            persistenceManager.refresh(domainObject);
-        } catch (final RuntimeException e) {
-            throw new PojoRefreshException(adapter.getOid(), e);
-        }
-
-        // possibly redundant because also called in the post-load event
-        // listener, but (with JPA impl) found it was required if we were ever to
-        // get an eager left-outer-join as the result of a refresh (sounds possible).
-        initializeMapAndCheckConcurrency((Persistable) domainObject);
-    }
-    //endregion
-
-    //region > makePersistent
-
-    /**
-     * Makes an {@link ObjectAdapter} persistent. The specified object should be
-     * stored away via this object store's persistence mechanism, and have a
-     * new and unique OID assigned to it. The object, should also be added to
-     * the {@link PersistenceSession} as the object is implicitly 'in use'.
-     *
-     * <p>
-     * If the object has any associations then each of these, where they aren't
-     * already persistent, should also be made persistent by recursively calling
-     * this method.
-     *
-     * <p>
-     * If the object to be persisted is a collection, then each element of that
-     * collection, that is not already persistent, should be made persistent by
-     * recursively calling this method.
-     */
-    public void makePersistentInTransaction(final ObjectAdapter adapter) {
-        if (adapter.representsPersistent()) {
-            throw new NotPersistableException("Object already persistent: " + adapter);
-        }
-        if (!adapter.getSpecification().persistability().isPersistable()) {
-            throw new NotPersistableException("Object is not persistable: " + adapter);
-        }
-        final ObjectSpecification specification = adapter.getSpecification();
-        if (specification.isService()) {
-            throw new NotPersistableException("Cannot persist services: " + adapter);
-        }
-
-        getTransactionManager().executeWithinTransaction(new TransactionalClosure() {
-
-            @Override
-            public void execute() {
-                makePersistentTransactionAssumed(adapter);
-
-                // clear out the map of transient -> persistent
-                PersistenceSession.this.persistentByTransient.clear();
-            }
-
-        });
-    }
-
-    private void makePersistentTransactionAssumed(final ObjectAdapter adapter) {
-        if (alreadyPersistedOrNotPersistable(adapter)) {
-            return;
-        }
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("persist " + adapter);
-        }
-
-        // previously we called the PersistingCallback here.
-        // this is now done in the JDO framework synchronizer.
-        //
-        // the guard below used to be because (apparently)
-        // the callback might have caused the adapter to become persistent.
-        // leaving it in as think it does no harm...
-        if (alreadyPersistedOrNotPersistable(adapter)) {
-            return;
-        }
-        addCreateObjectCommand(adapter);
-    }
-
-    /**
-     * {@link #newCreateObjectCommand(ObjectAdapter) Create}s a {@link CreateObjectCommand}, and adds to the
-     * {@link IsisTransactionManager}.
-     */
-    private void addCreateObjectCommand(final ObjectAdapter object) {
-        final CreateObjectCommand createObjectCommand = newCreateObjectCommand(object);
-        transactionManager.addCommand(createObjectCommand);
-    }
-
-
-
-    private static boolean alreadyPersistedOrNotPersistable(final ObjectAdapter adapter) {
-        return adapter.representsPersistent() || objectSpecNotPersistable(adapter);
-    }
-
-
-    private static boolean objectSpecNotPersistable(final ObjectAdapter adapter) {
-        return !adapter.getSpecification().persistability().isPersistable() || adapter.isParentedCollection();
-    }
-
-
-    //endregion
-
-    //region > ObjectPersistor impl
-    @Override
-    public void makePersistent(final ObjectAdapter adapter) {
-        makePersistentInTransaction(adapter);
-    }
-
-    @Override
-    public void remove(final ObjectAdapter adapter) {
-        destroyObjectInTransaction(adapter);
-    }
-    //endregion
-
-
-    //region > destroyObjectInTransaction
-
-    /**
-     * Removes the specified object from the system. The specified object's data
-     * should be removed from the persistence mechanism.
-     */
-    public void destroyObjectInTransaction(final ObjectAdapter adapter) {
-        final ObjectSpecification spec = adapter.getSpecification();
-        if (spec.isParented()) {
-            return;
-        }
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("destroyObject " + adapter);
-        }
-        transactionManager.executeWithinTransaction(new TransactionalClosure() {
-            @Override
-            public void execute() {
-                final DestroyObjectCommand command = newDestroyObjectCommand(adapter);
-                transactionManager.addCommand(command);
-            }
-        });
-    }
-
-    //endregion
-
-    //region > newXxxCommand
-    /**
-     * Makes an {@link ObjectAdapter} persistent. The specified object should be
-     * stored away via this object store's persistence mechanism, and have an
-     * new and unique OID assigned to it (by calling the object's
-     * <code>setOid</code> method). The object, should also be added to the
-     * cache as the object is implicitly 'in use'.
-     *
-     * <p>
-     * If the object has any associations then each of these, where they aren't
-     * already persistent, should also be made persistent by recursively calling
-     * this method.
-     * </p>
-     *
-     * <p>
-     * If the object to be persisted is a collection, then each element of that
-     * collection, that is not already persistent, should be made persistent by
-     * recursively calling this method.
-     * </p>
-     *
-     */
-    private CreateObjectCommand newCreateObjectCommand(final ObjectAdapter adapter) {
-        ensureOpened();
-        ensureInSession();
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("create object - creating command for: " + adapter);
-        }
-        if (adapter.representsPersistent()) {
-            throw new IllegalArgumentException("Adapter is persistent; adapter: " + adapter);
-        }
-        return new DataNucleusCreateObjectCommand(adapter, persistenceManager);
-    }
-
-    private void ensureInSession() {
-        ensureThatContext(IsisContext.inSession(), is(true));
-    }
-
-    private DestroyObjectCommand newDestroyObjectCommand(final ObjectAdapter adapter) {
-        ensureOpened();
-        ensureInSession();
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("destroy object - creating command for: " + adapter);
-        }
-        if (!adapter.representsPersistent()) {
-            throw new IllegalArgumentException("Adapter is not persistent; adapter: " + adapter);
-        }
-        return new DataNucleusDeleteObjectCommand(adapter, persistenceManager);
-    }
-    //endregion
-
-    //region > execute
-    public void execute(final List<PersistenceCommand> commands) {
-
-        ensureOpened();
-        ensureInTransaction();
-
-        // previously we used to check that there were some commands, and skip processing otherwise.
-        // we no longer do that; it could be (is quite likely) that DataNucleus has some dirty objects anyway that
-        // don't have commands wrapped around them...
-
-        executeCommands(commands);
-    }
-
-    private void executeCommands(final List<PersistenceCommand> commands) {
-
-        for (final PersistenceCommand command : commands) {
-            command.execute(null);
-        }
-        persistenceManager.flush();
-    }
-    //endregion
-
-    //region > getAggregateRoot, remappedFrom
-
-    private Map<Oid, Oid> persistentByTransient = Maps.newHashMap();
-
-    public ObjectAdapter getAggregateRoot(final ParentedCollectionOid collectionOid) {
-        final Oid rootOid = collectionOid.getRootOid();
-        ObjectAdapter rootadapter = getAdapterFor(rootOid);
-        if(rootadapter == null) {
-            final Oid parentOidNowPersisted = remappedFrom(rootOid);
-            rootadapter = getAdapterFor(parentOidNowPersisted);
-        }
-        return rootadapter;
-    }
-
-    /**
-     * To support ISIS-234; keep track, for the duration of the transaction only,
-     * of the old transient {@link Oid}s and their corresponding persistent {@link Oid}s.
-     */
-    private Oid remappedFrom(final Oid transientOid) {
-        return persistentByTransient.get(transientOid);
-    }
-
-
-    //endregion
-
-    //region > transactions
-    public void startTransaction() {
-        final javax.jdo.Transaction transaction = persistenceManager.currentTransaction();
-        if (transaction.isActive()) {
-            throw new IllegalStateException("Transaction already active");
-        }
-        transaction.begin();
-    }
-
-    public void endTransaction() {
-        final javax.jdo.Transaction transaction = persistenceManager.currentTransaction();
-        if (transaction.isActive()) {
-            transaction.commit();
-        }
-    }
-
-    public void abortTransaction() {
-        final javax.jdo.Transaction transaction = persistenceManager.currentTransaction();
-        if (transaction.isActive()) {
-            transaction.rollback();
-        }
-    }
-
-    private void ensureInTransaction() {
-        ensureThatContext(IsisContext.inTransaction(), is(true));
-        javax.jdo.Transaction currentTransaction = persistenceManager.currentTransaction();
-        ensureThatState(currentTransaction, is(notNullValue()));
-        ensureThatState(currentTransaction.isActive(), is(true));
-    }
-
-    //endregion
-
-
-    //region > dependencies (from constructor)
-
-    protected SpecificationLoader getSpecificationLoader() {
-        return specificationLoader;
-    }
-    protected AuthenticationSession getAuthenticationSession() {
-        return authenticationSession;
-    }
-
-    /**
-     * The configured {@link ServicesInjector}.
-     */
-    public ServicesInjector getServicesInjector() {
-        return servicesInjector;
-    }
-
-
-    //endregion
-
-    //region > transactionManager
-
-
-    /**
-     * The configured {@link IsisTransactionManager}.
-     */
-    public IsisTransactionManager getTransactionManager() {
-        return transactionManager;
-    }
-
-    // for testing only
-    void setTransactionManager(final IsisTransactionManager transactionManager) {
-        this.transactionManager = transactionManager;
-    }
-
-
-    //endregion
-
-
-    //region > jdoPersistenceManager delegate methods
-    public javax.jdo.Query newJdoQuery(Class<?> cls) {
-        return persistenceManager.newQuery(cls);
-    }
-
-    public javax.jdo.Query newJdoNamedQuery (Class<?> cls, String queryName) {
-        return persistenceManager.newNamedQuery(cls, queryName);
-    }
-
-    public javax.jdo.Query newJdoQuery (Class<?> cls, String filter) {
-        return persistenceManager.newQuery(cls, filter);
-    }
-    // endregion
-
-    //region > AdapterManager implementation
-
-    private final PojoAdapterHashMap pojoAdapterMap = new PojoAdapterHashMap();
-    private final OidAdapterHashMap oidAdapterMap = new OidAdapterHashMap();
-
-    /**
-     * @deprecated
-     * @return - simply returns this {@link PersistenceSession}.
-     */
-    @Deprecated
-    public AdapterManager getAdapterManager() {
-        return this;
-    }
-
-    @Override
-    public ObjectAdapter getAdapterFor(final Object pojo) {
-        ensureThatArg(pojo, is(notNullValue()));
-
-        return pojoAdapterMap.getAdapter(pojo);
-    }
-
-    @Override
-    public ObjectAdapter getAdapterFor(final Oid oid) {
-        ensureThatArg(oid, is(notNullValue()));
-        ensureMapsConsistent(oid);
-
-        return oidAdapterMap.getAdapter(oid);
-    }
-
-
-    private ObjectAdapter existingOrValueAdapter(Object pojo) {
-
-        // attempt to locate adapter for the pojo
-        ObjectAdapter adapter = getAdapterFor(pojo);
-        if (adapter != null) {
-            return adapter;
-        }
-
-        // pojo may have been lazily loaded by object store, but we haven't yet seen it
-        if (pojo instanceof Persistable) {
-            adapter = mapPersistent((Persistable) pojo);
-
-            // TODO: could return null if the pojo passed in !dnIsPersistent() || !dnIsDetached()
-            // in which case, we would ought to map as a transient object, rather than fall through and treat as a value?
-        } else {
-            adapter = null;
-        }
-
-        if(adapter != null) {
-            return adapter;
-        }
-
-        // need to create (and possibly map) the adapter.
-        final ObjectSpecification objSpec = specificationLoader.loadSpecification(pojo.getClass());
-
-        // we create value facets as standalone (so not added to maps)
-        if (objSpec.containsFacet(ValueFacet.class)) {
-            adapter = createStandaloneAdapter(pojo);
-            return adapter;
-        }
-
-        return null;
-    }
-
-
-
-    /**
-     * Fail early if any problems.
-     */
-    private void ensureMapsConsistent(final ObjectAdapter adapter) {
-        if (adapter.isValue()) {
-            return;
-        }
-        if (adapter.isParentedCollection()) {
-            return;
-        }
-        ensurePojoAdapterMapConsistent(adapter);
-        ensureOidAdapterMapConsistent(adapter);
-    }
-
-    /**
-     * Fail early if any problems.
-     */
-    private void ensureMapsConsistent(final Oid oid) {
-        ensureThatArg(oid, is(notNullValue()));
-
-        final ObjectAdapter adapter = oidAdapterMap.getAdapter(oid);
-        if (adapter == null) {
-            return;
-        }
-        ensureOidAdapterMapConsistent(adapter);
-        ensurePojoAdapterMapConsistent(adapter);
-    }
-
-    private void ensurePojoAdapterMapConsistent(final ObjectAdapter adapter) {
-        final Object adapterPojo = adapter.getObject();
-        final ObjectAdapter adapterAccordingToMap = pojoAdapterMap.getAdapter(adapterPojo);
-
-        if(adapterPojo == null) {
-            // nothing to check
-            return;
-        }
-        ensureMapConsistent(adapter, adapterAccordingToMap, "PojoAdapterMap");
-    }
-
-    private void ensureOidAdapterMapConsistent(final ObjectAdapter adapter) {
-        final Oid adapterOid = adapter.getOid();
-        final ObjectAdapter adapterAccordingToMap = oidAdapterMap.getAdapter(adapterOid);
-
-        if(adapterOid == null) {
-            // nothing to check
-            return;
-        }
-        ensureMapConsistent(adapter, adapterAccordingToMap, "OidAdapterMap");
-    }
-
-    private void ensureMapConsistent(
-            final ObjectAdapter adapter,
-            final ObjectAdapter adapterAccordingToMap,
-            final String mapName) {
-
-        final Oid adapterOid = adapter.getOid();
-
-        // take care not to touch the pojo, since it might have been deleted.
-
-        if(adapterAccordingToMap == null) {
-            throw new IllegalStateException("mismatch in "
-                    + mapName
-                    + ": provided adapter's OID: " + adapterOid + "; but no adapter found in map");
-        }
-        ensureThatArg(
-                adapter, is(adapterAccordingToMap),
-                "mismatch in "
-                        + mapName
-                        + ": provided adapter's OID: " + adapterOid + ", \n"
-                        + "but map's adapter's OID was: " + adapterAccordingToMap.getOid());
-    }
-
-    public ObjectAdapter adapterForAny(RootOid rootOid) {
-
-        final ObjectSpecId specId = rootOid.getObjectSpecId();
-        final ObjectSpecification spec = getSpecificationLoader().lookupBySpecId(specId);
-        if(spec == null) {
-            // eg "NONEXISTENT:123"
-            return null;
-        }
-
-        if(spec.containsFacet(ViewModelFacet.class)) {
-
-            // this is a hack; the RO viewer when rendering the URL for the view model loses the "view model" indicator
-            // ("*") from the specId, meaning that the marshalling logic above in RootOidDefault.deString() creates an
-            // oid in the wrong state.  The code below checks for this and recreates the oid with the current state of 'view model'
-            if(!rootOid.isViewModel()) {
-                rootOid = new RootOid(rootOid.getObjectSpecId(), rootOid.getIdentifier(), Oid.State.VIEWMODEL);
-            }
-
-            try {
-                return adapterFor(rootOid);
-            } catch(final ObjectNotFoundException ex) {
-                return null;
-            } catch(final PojoRecreationException ex) {
-                return null;
-            }
-        } else {
-            try {
-                ObjectAdapter objectAdapter = loadObjectInTransaction(rootOid);
-                return objectAdapter.isTransient() ? null : objectAdapter;
-            } catch(final ObjectNotFoundException ex) {
-                return null;
-            }
-        }
-    }
-
-    /**
-     * As per {@link #adapterFor(RootOid, ConcurrencyChecking)}, with
-     * {@link ConcurrencyChecking#NO_CHECK no checking}.
-     *
-     * <p>
-     * This method  will <i>always</i> return an object, possibly indicating it is persistent; so make sure that you
-     * know that the oid does indeed represent an object you know exists.
-     * </p>
-     */
-    public ObjectAdapter adapterFor(final RootOid rootOid) {
-        return adapterFor(rootOid, ConcurrencyChecking.NO_CHECK);
-    }
-
-
-    /**
-     * Either returns an existing {@link ObjectAdapter adapter} (as per
-     * {@link #getAdapterFor(Oid)}), otherwise re-creates an adapter with the
-     * specified (persistent) {@link Oid}.
-     *
-     * <p>
-     * Typically called when the {@link Oid} is already known, that is, when
-     * resolving an already-persisted object. Is also available for
-     * <tt>Memento</tt> support however, so {@link Oid} could also represent a
-     * {@link Oid#isTransient() transient} object.
-     *
-     * <p>
-     * The pojo itself is recreated by delegating to a {@link AdapterManager}.
-     *
-     * <p>
-     * The {@link ConcurrencyChecking} parameter determines whether concurrency checking is performed.
-     * If it is requested, then a check is made to ensure that the {@link Oid#getVersion() version}
-     * of the {@link RootOid oid} of the recreated adapter is the same as that of the provided {@link RootOid oid}.
-     * If the version differs, then a {@link ConcurrencyException} is thrown.
-     *
-     * <p>
-     * ALSO, even if a {@link ConcurrencyException}, then the provided {@link RootOid oid}'s {@link Version version}
-     * will be {@link RootOid#setVersion(Version) set} to the current
-     * value.  This allows the client to retry if they wish.
-     *
-     * @throws {@link org.apache.isis.core.runtime.persistence.ObjectNotFoundException} if the object does not exist.
-     */
-    public ObjectAdapter adapterFor(
-            final RootOid rootOid,
-            final ConcurrencyChecking concurrencyChecking) {
-
-        // attempt to locate adapter for the Oid
-        ObjectAdapter adapter = getAdapterFor(rootOid);
-        if (adapter == null) {
-            // else recreate
-            try {
-                final Object pojo = recreatePojo(rootOid);
-                adapter = mapRecreatedPojo(rootOid, pojo);
-            } catch(ObjectNotFoundException ex) {
-                throw ex; // just rethrow
-            } catch(RuntimeException ex) {
-                throw new PojoRecreationException(rootOid, ex);
-            }
-        }
-
-        // sync versions of original, with concurrency checking if required
-        Oid adapterOid = adapter.getOid();
-        if(adapterOid instanceof RootOid) {
-            final RootOid recreatedOid = (RootOid) adapterOid;
-            final RootOid originalOid = rootOid;
-
-            try {
-                if(concurrencyChecking.isChecking()) {
-
-                    // check for exception, but don't throw if suppressed through thread-local
-                    final Version otherVersion = originalOid.getVersion();
-                    final Version thisVersion = recreatedOid.getVersion();
-                    if( thisVersion != null &&
-                        otherVersion != null &&
-                        thisVersion.different(otherVersion)) {
-
-                        if(concurrencyCheckingGloballyEnabled && ConcurrencyChecking.isCurrentlyEnabled()) {
-                            LOG.info("concurrency conflict detected on " + recreatedOid + " (" + otherVersion + ")");
-                            final String currentUser = authenticationSession.getUserName();
-                            throw new ConcurrencyException(currentUser, recreatedOid, thisVersion, otherVersion);
-                        } else {
-                            LOG.info("concurrency conflict detected but suppressed, on " + recreatedOid + " (" + otherVersion + ")");
-                        }
-                    }
-                }
-            } finally {
-                final Version originalVersion = originalOid.getVersion();
-                final Version recreatedVersion = recreatedOid.getVersion();
-                if(recreatedVersion != null && (
-                        originalVersion == null ||
-                                recreatedVersion.different(originalVersion))
-                        ) {
-                    if(LOG.isDebugEnabled()) {
-                        LOG.debug("updating version in oid, on " + originalOid + " (" + originalVersion + ") to (" + recreatedVersion +")");
-                    }
-                    originalOid.setVersion(recreatedVersion);
-                }
-            }
-        }
-
-        return adapter;
-    }
-
-
-    private Object recreatePojo(RootOid oid) {
-        if(oid.isTransient() || oid.isViewModel()) {
-            return recreatePojoDefault(oid);
-        } else {
-            return loadPojo(oid);
-        }
-    }
-
-    private Object recreatePojoDefault(final RootOid rootOid) {
-        final ObjectSpecification spec =
-                specificationLoader.lookupBySpecId(rootOid.getObjectSpecId());
-        final Object pojo;
-
-        if(rootOid.isViewModel()) {
-
-            final String memento = rootOid.getIdentifier();
-            pojo = recreateViewModel(spec, memento);
-
-        } else {
-            pojo = instantiateAndInjectServices(spec);
-
-        }
-        return pojo;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ObjectAdapter adapterFor(final Object pojo) {
-
-        if(pojo == null) {
-            return null;
-        }
-        final ObjectAdapter existingOrValueAdapter = existingOrValueAdapter(pojo);
-        if(existingOrValueAdapter != null) {
-            return existingOrValueAdapter;
-        }
-
-        final ObjectAdapter newAdapter = createTransientOrViewModelRootAdapter(pojo);
-
-        return mapAndInjectServices(newAdapter);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ObjectAdapter adapterFor(final Object pojo, final ObjectAdapter parentAdapter, final OneToManyAssociation collection) {
-
-        Ensure.ensureThatArg(parentAdapter, is(not(nullValue())));
-        Ensure.ensureThatArg(collection, is(not(nullValue())));
-
-        final ObjectAdapter existingOrValueAdapter = existingOrValueAdapter(pojo);
-        if(existingOrValueAdapter != null) {
-            return existingOrValueAdapter;
-        }
-
-        // the List, Set etc. instance gets wrapped in its own adapter
-        final ObjectAdapter newAdapter = createCollectionAdapter(pojo, parentAdapter, collection);
-
-        return mapAndInjectServices(newAdapter);
-    }
-
-    /**
-     * Creates an {@link ObjectAdapter adapter} to represent a collection
-     * of the parent.
-     *
-     * <p>
-     * The returned adapter will have a {@link ParentedCollectionOid}; its version
-     * and its persistence are the same as its owning parent.
-     *
-     * <p>
-     * Should only be called if the pojo is known not to be
-     * {@link #getAdapterFor(Object) mapped}.
-     */
-    private ObjectAdapter createCollectionAdapter(
-            final Object pojo,
-            final ObjectAdapter parentAdapter,
-            final OneToManyAssociation otma) {
-
-        ensureMapsConsistent(parentAdapter);
-        Assert.assertNotNull(pojo);
-
-        final Oid parentOid = parentAdapter.getOid();
-
-        // persistence of collection follows the parent
-        final ParentedCollectionOid collectionOid = new ParentedCollectionOid((RootOid) parentOid, otma);
-        final ObjectAdapter collectionAdapter = createCollectionAdapter(pojo, collectionOid);
-
-        // we copy over the type onto the adapter itself
-        // [not sure why this is really needed, surely we have enough info in
-        // the adapter
-        // to look this up on the fly?]
-        final TypeOfFacet facet = otma.getFacet(TypeOfFacet.class);
-        collectionAdapter.setElementSpecificationProvider(ElementSpecificationProviderFromTypeOfFacet.createFrom(facet));
-
-        return collectionAdapter;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     *
-     * <p>
-     * Note that there is no management of {@link Version}s here. That is
-     * because the {@link PersistenceSession} is expected to manage this.
-     *
-     * @param hintRootOid - allow a different persistent root oid to be provided.
-     */
-    public void remapAsPersistent(final ObjectAdapter adapter, RootOid hintRootOid) {
-
-        final ObjectAdapter rootAdapter = adapter.getAggregateRoot();  // TODO: REVIEW: think this is redundant; would seem this method is only ever called for roots anyway.
-        final RootOid transientRootOid = (RootOid) rootAdapter.getOid();
-
-        // no longer true, because isTransient now looks directly at the underlying pojo's state (for entities)
-        // and doesn't apply for services.
-        //        Ensure.ensureThatArg(rootAdapter.isTransient(), is(true), "root adapter should be transient; oid:" + transientRootOid);
-        //        Ensure.ensureThatArg(transientRootOid.isTransient(), is(true), "root adapter's OID should be transient; oid:" + transientRootOid);
-
-        final RootAndCollectionAdapters rootAndCollectionAdapters = new RootAndCollectionAdapters(adapter, this);
-
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("remapAsPersistent: " + transientRootOid);
-        }
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("removing root adapter from oid map");
-        }
-
-        boolean removed = oidAdapterMap.remove(transientRootOid);
-        if (!removed) {
-            LOG.warn("could not remove oid: " + transientRootOid);
-            // should we fail here with a more serious error?
-        }
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("removing collection adapter(s) from oid map");
-        }
-        for (final ObjectAdapter collectionAdapter : rootAndCollectionAdapters) {
-            final Oid collectionOid = collectionAdapter.getOid();
-            removed = oidAdapterMap.remove(collectionOid);
-            if (!removed) {
-                LOG.warn("could not remove collectionOid: " + collectionOid);
-                // should we fail here with a more serious error?
-            }
-        }
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("updating the Oid");
-        }
-
-        // intended for testing (bit nasty)
-        final RootOid persistedRootOid;
-        if(hintRootOid != null) {
-            if(hintRootOid.isTransient()) {
-                throw new IsisAssertException("hintRootOid must be persistent");
-            }
-            final ObjectSpecId hintRootOidObjectSpecId = hintRootOid.getObjectSpecId();
-            final ObjectSpecId adapterObjectSpecId = adapter.getSpecification().getSpecId();
-            if(!hintRootOidObjectSpecId.equals(adapterObjectSpecId)) {
-                throw new IsisAssertException("hintRootOid's objectType must be same as that of adapter " +
-                        "(was: '" + hintRootOidObjectSpecId + "'; adapter's is " + adapterObjectSpecId + "'");
-            }
-            // ok
-            persistedRootOid = hintRootOid;
-        } else {
-            // normal flow - delegate to OidGenerator to obtain a persistent root oid
-            persistedRootOid = createPersistentOrViewModelOid(adapter.getObject());
-        }
-
-        // associate root adapter with the new Oid, and remap
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("replacing Oid for root adapter and re-adding into maps; oid is now: " + persistedRootOid.enString(
-                    oidMarshaller) + " (was: " + transientRootOid.enString(oidMarshaller) + ")");
-        }
-        adapter.replaceOid(persistedRootOid);
-        oidAdapterMap.add(persistedRootOid, adapter);
-
-        // associate the collection adapters with new Oids, and re-map
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("replacing Oids for collection adapter(s) and re-adding into maps");
-        }
-        for (final ObjectAdapter collectionAdapter : rootAndCollectionAdapters) {
-            final ParentedCollectionOid previousCollectionOid = (ParentedCollectionOid) collectionAdapter.getOid();
-            final ParentedCollectionOid persistedCollectionOid = previousCollectionOid.asPersistent(persistedRootOid);
-            oidAdapterMap.add(persistedCollectionOid, collectionAdapter);
-        }
-
-
-        // some object store implementations may replace collection instances (eg ORM may replace with a cglib-enhanced
-        // proxy equivalent.  So, ensure that the collection adapters still wrap the correct pojos.
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("synchronizing collection pojos, remapping in pojo map if required");
-        }
-        for (final OneToManyAssociation otma : rootAndCollectionAdapters.getCollections()) {
-            final ObjectAdapter collectionAdapter = rootAndCollectionAdapters.getCollectionAdapter(otma);
-
-            final Object collectionPojoWrappedByAdapter = collectionAdapter.getObject();
-            final Object collectionPojoActuallyOnPojo = getCollectionPojo(otma, adapter);
-
-            if (collectionPojoActuallyOnPojo != collectionPojoWrappedByAdapter) {
-                pojoAdapterMap.remove(collectionAdapter);
-                collectionAdapter.replacePojo(collectionPojoActuallyOnPojo);
-                pojoAdapterMap.add(collectionPojoActuallyOnPojo, collectionAdapter);
-            }
-        }
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("made persistent " + adapter + "; was " + transientRootOid);
-        }
-    }
-
-    private static Object getCollectionPojo(final OneToManyAssociation association, final ObjectAdapter ownerAdapter) {
-        final PropertyOrCollectionAccessorFacet accessor = association.getFacet(PropertyOrCollectionAccessorFacet.class);
-        return accessor.getProperty(ownerAdapter, InteractionInitiatedBy.FRAMEWORK);
-    }
-
-
-
-    /**
-     * Either returns an existing {@link ObjectAdapter adapter} (as per
-     * {@link #getAdapterFor(Object)} or {@link #getAdapterFor(Oid)}), otherwise
-     * re-creates an adapter with the specified (persistent) {@link Oid}.
-     *
-     * <p>
-     * Typically called when the {@link Oid} is already known, that is, when
-     * resolving an already-persisted object. Is also available for
-     * <tt>Memento</tt> support however, so {@link Oid} could also represent a
-     * {@link Oid#isTransient() transient} object.
-     *
-     * @param oid
-     * @param recreatedPojo - already known to the object store impl, or a service
-     */
-    @Override
-    public ObjectAdapter mapRecreatedPojo(final Oid oid, final Object recreatedPojo) {
-
-        // attempt to locate adapter for the pojo
-        // REVIEW: this check is possibly redundant because the pojo will most likely
-        // have just been instantiated, so won't yet be in any maps
-        final ObjectAdapter adapterLookedUpByPojo = getAdapterFor(recreatedPojo);
-        if (adapterLookedUpByPojo != null) {
-            return adapterLookedUpByPojo;
-        }
-
-        // attempt to locate adapter for the Oid
-        final ObjectAdapter adapterLookedUpByOid = getAdapterFor(oid);
-        if (adapterLookedUpByOid != null) {
-            return adapterLookedUpByOid;
-        }
-
-        final ObjectAdapter createdAdapter = createRootOrAggregatedAdapter(oid, recreatedPojo);
-        return mapAndInjectServices(createdAdapter);
-    }
-
-    /**
-     * Removes the specified object from both the identity-adapter map, and the
-     * pojo-adapter map.
-     *
-     * <p>
-     * This indicates that the object is no longer in use, and therefore that no
-     * objects exists within the system.
-     *
-     * <p>
-     * If an {@link ObjectAdapter adapter} is removed while its pojo still is
-     * referenced then a subsequent interaction of that pojo will create a
-     * different {@link ObjectAdapter adapter}.
-     *
-     * <p>
-     * TODO: should do a cascade remove of any aggregated objects.
-     */
-    @Override
-    public void removeAdapter(final ObjectAdapter adapter) {
-        ensureMapsConsistent(adapter);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("removing adapter: " + adapter);
-        }
-
-        unmap(adapter);
-    }
-
-    private void unmap(final ObjectAdapter adapter) {
-        ensureMapsConsistent(adapter);
-
-        final Oid oid = adapter.getOid();
-        if (oid != null) {
-            oidAdapterMap.remove(oid);
-        }
-        pojoAdapterMap.remove(adapter);
-    }
-
-
-    public void remapRecreatedPojo(ObjectAdapter adapter, final Object pojo) {
-        removeAdapter(adapter);
-        adapter.replacePojo(pojo);
-        mapAndInjectServices(adapter);
-    }
-
-
-    private ObjectAdapter createRootOrAggregatedAdapter(final Oid oid, final Object pojo) {
-        final ObjectAdapter createdAdapter;
-        if(oid instanceof RootOid) {
-            final RootOid rootOid = (RootOid) oid;
-            createdAdapter = createRootAdapter(pojo, rootOid);
-        } else /*if (oid instanceof CollectionOid)*/ {
-            final ParentedCollectionOid collectionOid = (ParentedCollectionOid) oid;
-            createdAdapter = createCollectionAdapter(pojo, collectionOid);
-        }
-        return createdAdapter;
-    }
-
-    /**
-     * Creates a new transient root {@link ObjectAdapter adapter} for the supplied domain
-     * object.
-     */
-    private ObjectAdapter createTransientOrViewModelRootAdapter(final Object pojo) {
-        final RootOid rootOid = createTransientOrViewModelOid(pojo);
-        return createRootAdapter(pojo, rootOid);
-    }
-
-    /**
-     * Creates a {@link ObjectAdapter adapter} with no {@link Oid}.
-     *
-     * <p>
-     * Standalone adapters are never {@link #mapAndInjectServices(ObjectAdapter) mapped}
-     * (they have no {@link Oid}, after all).
-     *
-     * <p>
-     * Should only be called if the pojo is known not to be
-     * {@link #getAdapterFor(Object) mapped}, and for immutable value types
-     * referenced.
-     */
-    private ObjectAdapter createStandaloneAdapter(final Object pojo) {
-        return createAdapter(pojo, null);
-    }
-
-    /**
-     * Creates (but does not {@link #mapAndInjectServices(ObjectAdapter) map}) a new
-     * root {@link ObjectAdapter adapter} for the supplied domain object.
-     *
-     * @see #createStandaloneAdapter(Object)
-     * @see #createCollectionAdapter(Object, ParentedCollectionOid)
-     */
-    private ObjectAdapter createRootAdapter(final Object pojo, RootOid rootOid) {
-        Ensure.ensureThatArg(rootOid, is(not(nullValue())));
-        return createAdapter(pojo, rootOid);
-    }
-
-    private ObjectAdapter createCollectionAdapter(
-            final Object pojo,
-            ParentedCollectionOid collectionOid) {
-        Ensure.ensureThatArg(collectionOid, is(not(nullValue())));
-        return createAdapter(pojo, collectionOid);
-    }
-
-    private PojoAdapter createAdapter(
-            final Object pojo,
-            final Oid oid) {
-        return new PojoAdapter(
-                pojo, oid,
-                authenticationSession, getLocalization(),
-                specificationLoader, this);
-    }
-
-
-    private ObjectAdapter mapAndInjectServices(final ObjectAdapter adapter) {
-        // since the whole point of this method is to map an adapter that's just been created.
-        // so we *don't* call ensureMapsConsistent(adapter);
-
-        Assert.assertNotNull(adapter);
-        final Object pojo = adapter.getObject();
-        Assert.assertFalse("POJO Map already contains object", pojo, pojoAdapterMap.containsPojo(pojo));
-
-        if (LOG.isDebugEnabled()) {
-            // don't interact with the underlying object because may be a ghost
-            // and would trigger a resolve
-            // don't call toString() on adapter because calls hashCode on
-            // underlying object, may also trigger a resolve.
-            LOG.debug("adding identity for adapter with oid=" + adapter.getOid());
-        }
-
-        // value adapters are not mapped (but all others - root and aggregated adapters - are)
-        if (adapter.isValue()) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("not mapping value adapter");
-            }
-            servicesInjector.injectServicesInto(pojo);
-            return adapter;
-        }
-
-        // add all aggregated collections
-        final ObjectSpecification objSpec = adapter.getSpecification();
-        if (!adapter.isParentedCollection() || adapter.isParentedCollection() && !objSpec.isImmutable()) {
-            pojoAdapterMap.add(pojo, adapter);
-        }
-
-        // order is important - add to pojo map first, then identity map
-        oidAdapterMap.add(adapter.getOid(), adapter);
-
-        // must inject after mapping, otherwise infinite loop
-        servicesInjector.injectServicesInto(pojo);
-
-        return adapter;
-    }
-
-
-    //endregion
-
-    //region > dependencies (from context)
-    protected Localization getLocalization() {
-        return IsisContext.getLocalization();
-    }
-
-    //endregion
-
-
-    //region > TransactionManager delegate methods
-    protected IsisTransaction getCurrentTransaction() {
-        return transactionManager.getTransaction();
-    }
-    //endregion
-
-    //region > FrameworkSynchronizer delegate methods
-
-    public void enlistDeletingAndInvokeIsisRemovingCallbackFacet(final Persistable pojo) {
-        ObjectAdapter adapter = adapterFor(pojo);
-
-        final ChangedObjectsServiceInternal changedObjectsServiceInternal =
-                getServicesInjector().lookupService(ChangedObjectsServiceInternal.class);
-
-        changedObjectsServiceInternal.enlistDeleting(adapter);
-
-        CallbackFacet.Util.callCallback(adapter, RemovingCallbackFacet.class);
-        postLifecycleEventIfRequired(adapter, RemovingLifecycleEventFacet.class);
-    }
-
-
-    public void initializeMapAndCheckConcurrency(final Persistable pojo) {
-        final Persistable pc = pojo;
-
-        // need to do eagerly, because (if a viewModel then) a
-        // viewModel's #viewModelMemento might need to use services
-        servicesInjector.injectInto(pojo);
-
-        final Version datastoreVersion = getVersionIfAny(pc);
-
-        final RootOid originalOid;
-        ObjectAdapter adapter = getAdapterFor(pojo);
-        if (adapter != null) {
-            ensureRootObject(pojo);
-            originalOid = (RootOid) adapter.getOid();
-
-            final Version originalVersion = adapter.getVersion();
-
-            // sync the pojo held by the adapter with that just loaded
-            remapRecreatedPojo(adapter, pojo);
-
-            // since there was already an adapter, do concurrency check
-            // (but don't set abort cause if checking is suppressed through thread-local)
-            final RootOid thisOid = originalOid;
-            final Version thisVersion = originalVersion;
-            final Version otherVersion = datastoreVersion;
-
-            if (    thisVersion != null &&
-                    otherVersion != null &&
-                    thisVersion.different(otherVersion)) {
-
-                if (ConcurrencyChecking.isCurrentlyEnabled()) {
-                    LOG.info("concurrency conflict detected on " + thisOid + " (" + otherVersion + ")");
-                    final String currentUser = authenticationSession.getUserName();
-                    final ConcurrencyException abortCause = new ConcurrencyException(currentUser, thisOid,
-                            thisVersion, otherVersion);
-                    getCurrentTransaction().setAbortCause(abortCause);
-
-                } else {
-                    LOG.info("concurrency conflict detected but suppressed, on " + thisOid + " (" + otherVersion
-                            + ")");
-                }
-            }
-        } else {
-            originalOid = createPersistentOrViewModelOid(pojo);
-
-            // it appears to be possible that there is already an adapter for this Oid,
-            // ie from ObjectStore#resolveImmediately()
-            adapter = getAdapterFor(originalOid);
-            if (adapter != null) {
-                remapRecreatedPojo(adapter, pojo);
-            } else {
-                adapter = mapRecreatedPojo(originalOid, pojo);
-
-                CallbackFacet.Util.callCallback(adapter, LoadedCallbackFacet.class);
-                postLifecycleEventIfRequired(adapter, LoadedLifecycleEventFacet.class);
-            }
-        }
-
-        adapter.setVersion(datastoreVersion);
-    }
-
-    //region > create...Oid (main API)
-    /**
-     * Create a new {@link Oid#isTransient() transient} {@link Oid} for the
-     * supplied pojo, uniquely distinguishable from any other {@link Oid}.
-     */
-    public final RootOid createTransientOrViewModelOid(final Object pojo) {
-        return newIdentifier(pojo, Type.TRANSIENT);
-    }
-
-    /**
-     * Return an equivalent {@link RootOid}, but being persistent.
-     *
-     * <p>
-     * It is the responsibility of the implementation to determine the new unique identifier.
-     * For example, the generator may simply assign a new value from a sequence, or a GUID;
-     * or, the generator may use the oid to look up the object and inspect the object in order
-     * to obtain an application-defined value.
-     *
-     * @param pojo - being persisted
-     */
-    public final RootOid createPersistentOrViewModelOid(Object pojo) {
-        return newIdentifier(pojo, Type.PERSISTENT);
-    }
-
-    enum Type {
-        TRANSIENT,
-        PERSISTENT
-    }
-
-    private RootOid newIdentifier(final Object pojo, final Type type) {
-        final ObjectSpecification spec = objectSpecFor(pojo);
-        if(spec.isService()) {
-            return newRootId(spec, "1", type);
-        }
-
-        final ViewModelFacet recreatableObjectFacet = spec.getFacet(ViewModelFacet.class);
-        final String identifier =
-                recreatableObjectFacet != null
-                        ? recreatableObjectFacet.memento(pojo)
-                        : newIdentifierFor(pojo, type);
-
-        return newRootId(spec, identifier, type);
-    }
-
-    private String newIdentifierFor(final Object pojo, final Type type) {
-        return type == Type.TRANSIENT
-                ? UUID.randomUUID().toString()
-                : JdoObjectIdSerializer.toOidIdentifier(getPersistenceManager().getObjectId(pojo));
-    }
-
-    private RootOid newRootId(final ObjectSpecification spec, final String identifier, final Type type) {
-        final Oid.State state =
-                spec.containsDoOpFacet(ViewModelFacet.class)
-                        ? Oid.State.VIEWMODEL
-                        : type == Type.TRANSIENT
-                        ? Oid.State.TRANSIENT
-                        : Oid.State.PERSISTENT;
-        final ObjectSpecId objectSpecId = spec.getSpecId();
-        return new RootOid(objectSpecId, identifier, state);
-    }
-
-    private ObjectSpecification objectSpecFor(final Object pojo) {
-        final Class<?> pojoClass = pojo.getClass();
-        return getSpecificationLoader().loadSpecification(pojoClass);
-    }
-    //endregion
-
-
-    /**
-     * Called either when an entity is initially persisted, or when an entity is updated; fires the appropriate
-     * lifecycle callback.
-     *
-     * <p>
-     * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
-     * to determine which callback to fire.
-     */
-    public void invokeIsisPersistingCallback(final Persistable pojo) {
-        final ObjectAdapter adapter = getAdapterFor(pojo);
-        if (adapter == null) {
-            // not expected.
-            return;
-        }
-
-        final RootOid isisOid = (RootOid) adapter.getOid();
-        if (isisOid.isTransient()) {
-            // persisting
-            // previously this was performed in the DataNucleusSimplePersistAlgorithm.
-            CallbackFacet.Util.callCallback(adapter, PersistingCallbackFacet.class);
-            postLifecycleEventIfRequired(adapter, PersistingLifecycleEventFacet.class);
-
-        } else {
-            // updating
-
-            // don't call here, already called in preDirty.
-
-            // CallbackFacet.Util.callCallback(adapter, UpdatingCallbackFacet.class);
-        }
-    }
-
-    /**
-     * Called either when an entity is initially persisted, or when an entity is updated;
-     * fires the appropriate lifecycle callback
-     *
-     * <p>
-     * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
-     * to determine which callback to fire.
-     */
-    public void enlistCreatedAndRemapIfRequiredThenInvokeIsisInvokePersistingOrUpdatedCallback(final Persistable pojo) {
-        final ObjectAdapter adapter = adapterFor(pojo);
-
-        final RootOid rootOid = (RootOid) adapter.getOid(); // ok since this is for a Persistable
-
-        if (rootOid.isTransient()) {
-            // persisting
-            final RootOid persistentOid = createPersistentOrViewModelOid(pojo);
-
-            remapAsPersistent(adapter, persistentOid);
-
-            CallbackFacet.Util.callCallback(adapter, PersistedCallbackFacet.class);
-            postLifecycleEventIfRequired(adapter, PersistedLifecycleEventFacet.class);
-
-
-            final ChangedObjectsServiceInternal changedObjectsServiceInternal =
-                    getServicesInjector().lookupService(ChangedObject

<TRUNCATED>