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

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

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/master
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);
 
     }