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

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

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;
     }