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 2012/08/10 01:16:35 UTC

svn commit: r1371529 [2/9] - in /incubator/isis/trunk/framework: core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/map/ core/metamodel/src/main/java/org/apache/isis/...

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java Thu Aug  9 23:16:27 2012
@@ -19,10 +19,184 @@
 
 package org.apache.isis.core.metamodel.services;
 
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
 
-public class ServicesInjectorDefault extends ServicesInjectorAbstract {
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.List;
 
-    public ServicesInjectorDefault() {
+import com.google.common.collect.Lists;
+
+import org.apache.log4j.Logger;
+
+import org.apache.isis.applib.DomainObjectContainer;
+import org.apache.isis.core.commons.ensure.Assert;
+import org.apache.isis.core.commons.lang.CastUtils;
+import org.apache.isis.core.commons.lang.ToString;
+import org.apache.isis.core.metamodel.exceptions.MetaModelException;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
+
+public class ServicesInjectorDefault implements ServicesInjectorSpi {
+
+    private static final Logger LOG = Logger.getLogger(ServicesInjectorDefault.class);
+
+    private final List<Object> services = Lists.newArrayList();
+    private DomainObjectContainer container;
+
+    /**
+     * Ensure that all services are wired into each other.
+     */
+    @Override
+    public void open() {
+        autowireServicesAndContainer();
+    }
+
+    @Override
+    public void close() {
+    }
+
+    // /////////////////////////////////////////////////////////
+    // Container
+    // /////////////////////////////////////////////////////////
+
+    @Override
+    public DomainObjectContainer getContainer() {
+        return container;
+    }
+
+    @Override
+    public void setContainer(final DomainObjectContainer container) {
+        ensureThatArg(container, is(not(nullValue())));
+        this.container = container;
+    }
+
+    // /////////////////////////////////////////////////////////
+    // Services
+    // /////////////////////////////////////////////////////////
+
+    @Override
+    public void setServices(final List<Object> services) {
+        this.services.clear();
+        addServices(services);
+        autowireServicesAndContainer();
+    }
+
+    @Override
+    public List<Object> getRegisteredServices() {
+        return Collections.unmodifiableList(services);
+    }
+
+    private void addServices(final List<Object> services) {
+        for (final Object service : services) {
+            if (service instanceof List) {
+                final List<Object> serviceList = CastUtils.listOf(service, Object.class);
+                addServices(serviceList);
+            } else {
+                addService(service);
+            }
+        }
+    }
+
+    private boolean addService(final Object service) {
+        return services.add(service);
+    }
+
+    // /////////////////////////////////////////////////////////
+    // Inject Dependencies
+    // /////////////////////////////////////////////////////////
+
+    @Override
+    public void injectServicesInto(final Object object) {
+        Assert.assertNotNull("no container", container);
+        Assert.assertNotNull("no services", services);
+
+        final List<Object> servicesCopy = Lists.newArrayList(services);
+        servicesCopy.add(container);
+        injectServices(object, servicesCopy);
+    }
+
+    @Override
+    public void injectServicesInto(final List<Object> objects) {
+        for (final Object object : objects) {
+            injectServicesInto(object);
+        }
+    }
+
+    // ////////////////////////////////////////////////////////////////////
+    // injectInto
+    // ////////////////////////////////////////////////////////////////////
+
+    /**
+     * That is, injecting this injector...
+     */
+    @Override
+    public void injectInto(final Object candidate) {
+        if (ServicesInjectorAware.class.isAssignableFrom(candidate.getClass())) {
+            final ServicesInjectorAware cast = ServicesInjectorAware.class.cast(candidate);
+            cast.setServicesInjector(this);
+        }
+    }
+
+
+    // /////////////////////////////////////////////////////////
+    // Helpers
+    // /////////////////////////////////////////////////////////
+
+    private static void injectServices(final Object object, final List<Object> services) {
+        final Class<?> cls = object.getClass();
+        for (final Object service : services) {
+            final Class<?> serviceClass = service.getClass();
+            final Method[] methods = cls.getMethods();
+            for (int j = 0; j < methods.length; j++) {
+                if (!methods[j].getName().startsWith("set")) {
+                    continue;
+                }
+                final Class<?>[] parameterTypes = methods[j].getParameterTypes();
+                if (parameterTypes.length != 1 || parameterTypes[0] == Object.class || !parameterTypes[0].isAssignableFrom(serviceClass)) {
+                    continue;
+                }
+
+                methods[j].setAccessible(true);
+
+                invokeSetMethod(methods[j], object, service);
+            }
+        }
+    }
+
+    private static void invokeMethod(final Method method, final Object target, final Object[] parameters) {
+        try {
+            method.invoke(target, parameters);
+        } catch (final SecurityException e) {
+            throw new MetaModelException(String.format("Cannot access the %s method in %s", method.getName(), target.getClass().getName()));
+        } catch (final IllegalArgumentException e1) {
+            throw new MetaModelException(e1);
+        } catch (final IllegalAccessException e1) {
+            throw new MetaModelException(String.format("Cannot access the %s method in %s", method.getName(), target.getClass().getName()));
+        } catch (final InvocationTargetException e) {
+            final Throwable targetException = e.getTargetException();
+            if (targetException instanceof RuntimeException) {
+                throw (RuntimeException) targetException;
+            } else {
+                throw new MetaModelException(targetException);
+            }
+        }
+    }
+
+    private static void invokeSetMethod(final Method set, final Object target, final Object parameter) {
+        final Object[] parameters = new Object[] { parameter };
+        invokeMethod(set, target, parameters);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("injected " + parameter + " into " + new ToString(target));
+        }
+    }
+
+    private void autowireServicesAndContainer() {
+        injectServicesInto(this.services);
+        injectServicesInto(this.container);
     }
 
 }

Copied: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorSpi.java (from r1371199, incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorSpi.java?p2=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorSpi.java&p1=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java&r1=1371199&r2=1371529&rev=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorSpi.java Thu Aug  9 23:16:27 2012
@@ -24,7 +24,7 @@ import java.util.List;
 import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.core.commons.components.Injectable;
 import org.apache.isis.core.commons.components.SessionScopedComponent;
-import org.apache.isis.core.metamodel.runtimecontext.DependencyInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 
 /**
  * The repository of services, also able to inject into any object.
@@ -34,9 +34,9 @@ import org.apache.isis.core.metamodel.ru
  * not a {@link #getRegisteredServices() registered service}.
  * 
  * <p>
- * Can be considered a mutable SPI to the {@link DependencyInjector} immutable API.
+ * Can be considered a mutable SPI to the {@link ServicesInjector} immutable API.
  */
-public interface ServicesInjector extends SessionScopedComponent, Injectable, DependencyInjector {
+public interface ServicesInjectorSpi extends SessionScopedComponent, Injectable, ServicesInjector {
 
     // ///////////////////////////////////////////////////////////////////////////
     // Container

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java Thu Aug  9 23:16:27 2012
@@ -46,26 +46,26 @@ import org.apache.isis.core.metamodel.ad
 import org.apache.isis.core.metamodel.adapter.ObjectPersistorAware;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitterAware;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMapAware;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManagerAware;
 import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
 import org.apache.isis.core.metamodel.adapter.util.AdapterUtils;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
 import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLookup;
-import org.apache.isis.core.metamodel.spec.SpecificationLookupAware;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
 
-public class DomainObjectContainerDefault implements DomainObjectContainer, QuerySubmitterAware, ObjectDirtierAware, DomainObjectServicesAware, ObjectPersistorAware, SpecificationLookupAware, AuthenticationSessionProviderAware, AdapterMapAware, LocalizationProviderAware {
+public class DomainObjectContainerDefault implements DomainObjectContainer, QuerySubmitterAware, ObjectDirtierAware, DomainObjectServicesAware, ObjectPersistorAware, SpecificationLoaderAware, AuthenticationSessionProviderAware, AdapterManagerAware, LocalizationProviderAware {
 
     private ObjectDirtier objectDirtier;
     private ObjectPersistor objectPersistor;
     private QuerySubmitter querySubmitter;
-    private SpecificationLookup specificationLookup;
+    private SpecificationLoader specificationLookup;
     private DomainObjectServices domainObjectServices;
     private AuthenticationSessionProvider authenticationSessionProvider;
-    private AdapterMap adapterMap;
+    private AdapterManager adapterManager;
     private LocalizationProvider localizationProvider;
 
     public DomainObjectContainerDefault() {
@@ -78,7 +78,7 @@ public class DomainObjectContainerDefaul
 
     @Override
     public String titleOf(final Object domainObject) {
-        final ObjectAdapter objectAdapter = adapterMap.adapterFor(domainObject);
+        final ObjectAdapter objectAdapter = adapterManager.adapterFor(domainObject);
         return objectAdapter.getSpecification().getTitle(objectAdapter, localizationProvider.getLocalization());
     }
 
@@ -145,7 +145,7 @@ public class DomainObjectContainerDefaul
     }
 
     private ObjectAdapter doCreateAggregatedInstance(final ObjectSpecification spec, final Object parent) {
-        final ObjectAdapter parentAdapter = getAdapterMap().getAdapterFor(parent);
+        final ObjectAdapter parentAdapter = getAdapterManager().getAdapterFor(parent);
         return getDomainObjectServices().createAggregatedInstance(spec, parentAdapter);
     }
 
@@ -154,7 +154,7 @@ public class DomainObjectContainerDefaul
         if (persistentObject == null) {
             throw new IllegalArgumentException("Must specify a reference for disposing an object");
         }
-        final ObjectAdapter adapter = getAdapterMap().getAdapterFor(persistentObject);
+        final ObjectAdapter adapter = getAdapterManager().getAdapterFor(persistentObject);
         if (!isPersistent(persistentObject)) {
             throw new RepositoryException("Object not persistent: " + adapter);
         }
@@ -214,7 +214,7 @@ public class DomainObjectContainerDefaul
 
     @Override
     public String validate(final Object domainObject) {
-        final ObjectAdapter adapter = getAdapterMap().adapterFor(domainObject);
+        final ObjectAdapter adapter = getAdapterManager().adapterFor(domainObject);
         final InteractionResult validityResult = adapter.getSpecification().isValidResult(adapter);
         return validityResult.getReason();
     }
@@ -225,13 +225,13 @@ public class DomainObjectContainerDefaul
 
     @Override
     public boolean isPersistent(final Object domainObject) {
-        final ObjectAdapter adapter = getAdapterMap().adapterFor(domainObject);
+        final ObjectAdapter adapter = getAdapterManager().adapterFor(domainObject);
         return adapter.representsPersistent();
     }
 
     @Override
     public void persist(final Object transientObject) {
-        final ObjectAdapter adapter = getAdapterMap().getAdapterFor(transientObject);
+        final ObjectAdapter adapter = getAdapterManager().getAdapterFor(transientObject);
         // TODO check aggregation is supported
         if (adapter.isParented()) {
             return;
@@ -452,12 +452,12 @@ public class DomainObjectContainerDefaul
         this.domainObjectServices = domainObjectServices;
     }
 
-    protected SpecificationLookup getSpecificationLookup() {
+    protected SpecificationLoader getSpecificationLookup() {
         return specificationLookup;
     }
 
     @Override
-    public void setSpecificationLookup(final SpecificationLookup specificationLookup) {
+    public void setSpecificationLookup(final SpecificationLoader specificationLookup) {
         this.specificationLookup = specificationLookup;
     }
 
@@ -470,13 +470,13 @@ public class DomainObjectContainerDefaul
         this.authenticationSessionProvider = authenticationSessionProvider;
     }
 
-    protected AdapterMap getAdapterMap() {
-        return adapterMap;
+    protected AdapterManager getAdapterManager() {
+        return adapterManager;
     }
 
     @Override
-    public void setAdapterMap(final AdapterMap adapterManager) {
-        this.adapterMap = adapterManager;
+    public void setAdapterManager(final AdapterManager adapterManager) {
+        this.adapterManager = adapterManager;
     }
 
     protected ObjectDirtier getObjectDirtier() {

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java Thu Aug  9 23:16:27 2012
@@ -104,7 +104,7 @@ public interface ObjectSpecification ext
      * {@link ClassSubstitutor class name substituted} if necessary to allow for runtime bytecode enhancement.
      * 
      * <p>
-     * The {@link ObjectSpecification} can be retrieved using {@link SpecificationLookup#lookupBySpecId(String)}.
+     * The {@link ObjectSpecification} can be retrieved using {@link SpecificationLoader#lookupBySpecId(String)}.
      */
     ObjectSpecId getSpecId();
     

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java Thu Aug  9 23:16:27 2012
@@ -24,9 +24,9 @@ public class SpecificationContext {
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final ServicesProvider servicesProvider;
     private final ObjectInstantiator objectInstantiator;
-    private final SpecificationLookup specificationLookup;
+    private final SpecificationLoader specificationLookup;
 
-    public SpecificationContext(final AuthenticationSessionProvider authenticationSessionProvider, final ServicesProvider servicesProvider, final ObjectInstantiator objectInstantiator, final SpecificationLookup specificationLookup) {
+    public SpecificationContext(final AuthenticationSessionProvider authenticationSessionProvider, final ServicesProvider servicesProvider, final ObjectInstantiator objectInstantiator, final SpecificationLoader specificationLookup) {
         this.authenticationSessionProvider = authenticationSessionProvider;
         this.servicesProvider = servicesProvider;
         this.objectInstantiator = objectInstantiator;
@@ -45,7 +45,7 @@ public class SpecificationContext {
         return objectInstantiator;
     }
 
-    public SpecificationLookup getSpecificationLookup() {
+    public SpecificationLoader getSpecificationLookup() {
         return specificationLookup;
     }
 }
\ No newline at end of file

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoader.java Thu Aug  9 23:16:27 2012
@@ -1,43 +1,31 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
+/**
+ *  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
+ *     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.
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  */
-
 package org.apache.isis.core.metamodel.spec;
 
+import java.util.Collection;
 import java.util.List;
 
-import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.commons.debug.DebuggableWithTitle;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
+import org.apache.isis.core.commons.components.Injectable;
 
-public interface SpecificationLoader extends ApplicationScopedComponent, DebuggableWithTitle, SpecificationLookup {
+public interface SpecificationLoader extends Injectable {
+
+    ObjectSpecification lookupBySpecId(ObjectSpecId objectSpecId);
 
-    /**
-     * @see #loadSpecification(String)
-     */
-    @Override
-    ObjectSpecification loadSpecification(Class<?> cls);
 
-    /**
-     * Loads the specifications of the specified types except the one specified
-     * (to prevent an infinite loop).
-     */
-    public boolean loadSpecifications(List<Class<?>> typesToLoad, final Class<?> typeToIgnore);
 
     /**
      * Return the specification for the specified class of object.
@@ -49,28 +37,36 @@ public interface SpecificationLoader ext
     ObjectSpecification loadSpecification(String fullyQualifiedClassName);
 
     /**
-     * Whether this class has been loaded.
+     * @see #loadSpecification(String)
      */
-    boolean loaded(Class<?> cls);
+    ObjectSpecification loadSpecification(Class<?> cls);
 
     /**
-     * @see #loaded(Class).
+     * Loads the specifications of the specified types.
      */
-    boolean loaded(String fullyQualifiedClassName);
+    boolean loadSpecifications(List<Class<?>> typesToLoad);
 
     /**
-     * Specify the classes of the services to pro-actively prime the cache.
+     * Loads the specifications of the specified types except the one specified
+     * (to prevent an infinite loop).
      */
-    void setServiceClasses(List<Class<?>> serviceClasses);
+    public boolean loadSpecifications(List<Class<?>> typesToLoad, final Class<?> typeToIgnore);
+
+
+    
+    Collection<ObjectSpecification> allSpecifications();
 
+
+    
     /**
-     * Loads the specifications of the specified types.
+     * Whether this class has been loaded.
      */
-    boolean loadSpecifications(List<Class<?>> typesToLoad);
+    boolean loaded(Class<?> cls);
 
     /**
-     * Populated as a result of running {@link MetaModelValidator#validate() validation} after all specs have been loaded. 
+     * @see #loaded(Class).
      */
-    void validateSpecifications();
+    boolean loaded(String fullyQualifiedClassName);
+
 
 }

Copied: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAbstract.java (from r1371199, incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLookupAbstract.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAbstract.java?p2=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAbstract.java&p1=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLookupAbstract.java&r1=1371199&r2=1371529&rev=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLookupAbstract.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAbstract.java Thu Aug  9 23:16:27 2012
@@ -16,12 +16,12 @@
  */
 package org.apache.isis.core.metamodel.spec;
 
-public abstract class SpecificationLookupAbstract implements SpecificationLookup {
+public abstract class SpecificationLoaderAbstract implements SpecificationLoader {
 
     @Override
     public void injectInto(final Object candidate) {
-        if (SpecificationLookupAware.class.isAssignableFrom(candidate.getClass())) {
-            final SpecificationLookupAware cast = SpecificationLookupAware.class.cast(candidate);
+        if (SpecificationLoaderAware.class.isAssignableFrom(candidate.getClass())) {
+            final SpecificationLoaderAware cast = SpecificationLoaderAware.class.cast(candidate);
             cast.setSpecificationLookup(this);
         }
     }

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAware.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAware.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAware.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderAware.java Thu Aug  9 23:16:27 2012
@@ -21,5 +21,6 @@ package org.apache.isis.core.metamodel.s
 
 public interface SpecificationLoaderAware {
 
-    public void setSpecificationLoader(SpecificationLoader specificationLoader);
+    public void setSpecificationLookup(final SpecificationLoader specificationLookup);
+
 }

Added: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderDelegator.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderDelegator.java?rev=1371529&view=auto
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderDelegator.java (added)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderDelegator.java Thu Aug  9 23:16:27 2012
@@ -0,0 +1,88 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.isis.core.metamodel.spec;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * Allows a {@link SpecificationLoader} to be provided even if the concrete
+ * implementation is only available later.
+ */
+public class SpecificationLoaderDelegator extends SpecificationLoaderAbstract {
+
+    private SpecificationLoader specificationLoaderDelegate;
+
+    public void setDelegate(final SpecificationLoader specificationLoaderDelegate) {
+        this.specificationLoaderDelegate = specificationLoaderDelegate;
+    }
+
+    
+    
+    @Override
+    public ObjectSpecification loadSpecification(final Class<?> cls) {
+        if (specificationLoaderDelegate == null) {
+            throw new IllegalStateException("No SpecificationLookup provided");
+        }
+        return specificationLoaderDelegate.loadSpecification(cls);
+    }
+
+    @Override
+    public Collection<ObjectSpecification> allSpecifications() {
+        return specificationLoaderDelegate.allSpecifications();
+    }
+
+    @Override
+    public ObjectSpecification lookupBySpecId(ObjectSpecId objectSpecId) {
+        return specificationLoaderDelegate.lookupBySpecId(objectSpecId);
+    }
+
+    @Override
+    public boolean loadSpecifications(List<Class<?>> typesToLoad, Class<?> typeToIgnore) {
+        return specificationLoaderDelegate.loadSpecifications(typesToLoad, typeToIgnore);
+    }
+
+    @Override
+    public ObjectSpecification loadSpecification(String fullyQualifiedClassName) {
+        return specificationLoaderDelegate.loadSpecification(fullyQualifiedClassName);
+    }
+
+    @Override
+    public boolean loaded(Class<?> cls) {
+        return specificationLoaderDelegate.loaded(cls);
+    }
+
+    @Override
+    public boolean loaded(String fullyQualifiedClassName) {
+        return specificationLoaderDelegate.loaded(fullyQualifiedClassName);
+    }
+
+    @Override
+    public boolean loadSpecifications(List<Class<?>> typesToLoad) {
+        return specificationLoaderDelegate.loadSpecifications(typesToLoad);
+    }
+
+    
+    @Override
+    public void injectInto(Object candidate) {
+        super.injectInto(candidate);
+        if(specificationLoaderDelegate != null) {
+            specificationLoaderDelegate.injectInto(candidate);
+        }
+    }
+
+}

Copied: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpi.java (from r1371199, incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflector.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpi.java?p2=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpi.java&p1=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflector.java&r1=1371199&r2=1371529&rev=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflector.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpi.java Thu Aug  9 23:16:27 2012
@@ -17,12 +17,25 @@
  *  under the License.
  */
 
-package org.apache.isis.core.metamodel.specloader;
+package org.apache.isis.core.metamodel.spec;
+
+import java.util.List;
 
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAware;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.commons.debug.DebuggableWithTitle;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
+
+public interface SpecificationLoaderSpi extends ApplicationScopedComponent, DebuggableWithTitle, SpecificationLoader {
+
+
+    /**
+     * Specify the classes of the services to pro-actively prime the cache.
+     */
+    void setServiceClasses(List<Class<?>> serviceClasses);
 
-public interface ObjectReflector extends SpecificationLoader, ApplicationScopedComponent, RuntimeContextAware {
+    /**
+     * Populated as a result of running {@link MetaModelValidator#validate() validation} after all specs have been loaded. 
+     */
+    void validateSpecifications();
 
 }

Copied: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpiAware.java (from r1371199, incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderProvider.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpiAware.java?p2=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpiAware.java&p1=incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderProvider.java&r1=1371199&r2=1371529&rev=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderProvider.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderSpiAware.java Thu Aug  9 23:16:27 2012
@@ -19,8 +19,7 @@
 
 package org.apache.isis.core.metamodel.spec;
 
+public interface SpecificationLoaderSpiAware {
 
-public interface SpecificationLoaderProvider {
-
-    SpecificationLoader getSpecificationLoader();
+    public void setSpecificationLoaderSpi(SpecificationLoaderSpi specificationLoader);
 }

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMemberContext.java Thu Aug  9 23:16:27 2012
@@ -18,19 +18,19 @@ package org.apache.isis.core.metamodel.s
 
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
-import org.apache.isis.core.metamodel.spec.SpecificationLookup;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 
 public class ObjectMemberContext {
 
     private final AuthenticationSessionProvider authenticationSessionProvider;
-    private final SpecificationLookup specificationLookup;
-    private final AdapterMap adapterManager;
+    private final SpecificationLoader specificationLookup;
+    private final AdapterManager adapterManager;
     private final QuerySubmitter querySubmitter;
     private final CollectionTypeRegistry collectionTypeRegistry;
 
-    public ObjectMemberContext(final AuthenticationSessionProvider authenticationSessionProvider, final SpecificationLookup specificationLookup, final AdapterMap adapterManager, final QuerySubmitter querySubmitter, final CollectionTypeRegistry collectionTypeRegistry) {
+    public ObjectMemberContext(final AuthenticationSessionProvider authenticationSessionProvider, final SpecificationLoader specificationLookup, final AdapterManager adapterManager, final QuerySubmitter querySubmitter, final CollectionTypeRegistry collectionTypeRegistry) {
 
         this.authenticationSessionProvider = authenticationSessionProvider;
         this.specificationLookup = specificationLookup;
@@ -43,11 +43,11 @@ public class ObjectMemberContext {
         return authenticationSessionProvider;
     }
 
-    public SpecificationLookup getSpecificationLookup() {
+    public SpecificationLoader getSpecificationLookup() {
         return specificationLookup;
     }
 
-    public AdapterMap getAdapterManager() {
+    public AdapterManager getAdapterManager() {
         return adapterManager;
     }
 

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java Thu Aug  9 23:16:27 2012
@@ -37,6 +37,7 @@ import com.google.common.collect.Maps;
 import org.apache.log4j.Logger;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.commons.debug.DebuggableWithTitle;
@@ -45,7 +46,7 @@ import org.apache.isis.core.commons.exce
 import org.apache.isis.core.commons.lang.JavaClassUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ServicesProvider;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
 import org.apache.isis.core.metamodel.facetdecorator.FacetDecoratorSet;
@@ -53,7 +54,7 @@ import org.apache.isis.core.metamodel.fa
 import org.apache.isis.core.metamodel.facets.object.objecttype.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.layout.MemberLayoutArranger;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.runtimecontext.DependencyInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAware;
 import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
@@ -62,10 +63,10 @@ import org.apache.isis.core.metamodel.sp
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationContext;
+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.SpecificationLookup;
-import org.apache.isis.core.metamodel.spec.SpecificationLookupAware;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
@@ -115,7 +116,7 @@ import org.apache.isis.core.metamodel.sp
  * to its <tt>IsisContext</tt>.
  */
 
-public class ObjectReflectorDefault implements ObjectReflector, DebuggableWithTitle {
+public class ObjectReflectorDefault implements SpecificationLoaderSpi, ApplicationScopedComponent, RuntimeContextAware, DebuggableWithTitle {
 
     private final static Logger LOG = Logger.getLogger(ObjectReflectorDefault.class);
 
@@ -392,7 +393,7 @@ public class ObjectReflectorDefault impl
     private ObjectSpecification createSpecification(final Class<?> cls) {
 
         final AuthenticationSessionProvider authenticationSessionProvider = getRuntimeContext().getAuthenticationSessionProvider();
-        final SpecificationLookup specificationLookup = getRuntimeContext().getSpecificationLookup();
+        final SpecificationLoader specificationLookup = getRuntimeContext().getSpecificationLoader();
         final ServicesProvider servicesProvider = getRuntimeContext().getServicesProvider();
         final ObjectInstantiator objectInstantiator = getRuntimeContext().getObjectInstantiator();
 
@@ -401,11 +402,11 @@ public class ObjectReflectorDefault impl
         if (FreeStandingList.class.isAssignableFrom(cls)) {
             return new ObjectSpecificationForFreeStandingList(specContext);
         } else {
-            final SpecificationLoader specificationLoader = this;
-            final AdapterMap adapterMap = getRuntimeContext().getAdapterMap();
+            final SpecificationLoaderSpi specificationLoader = this;
+            final AdapterManager adapterMap = getRuntimeContext().getAdapterMap();
             final ObjectMemberContext objectMemberContext = new ObjectMemberContext(authenticationSessionProvider, specificationLookup, adapterMap, getRuntimeContext().getQuerySubmitter(), collectionTypeRegistry);
             final IntrospectionContext introspectionContext = new IntrospectionContext(getClassSubstitutor(), getMemberLayoutArranger());
-            final DependencyInjector dependencyInjector = getRuntimeContext().getDependencyInjector();
+            final ServicesInjector dependencyInjector = getRuntimeContext().getDependencyInjector();
             final CreateObjectContext createObjectContext = new CreateObjectContext(adapterMap, dependencyInjector);
             final FacetedMethodsBuilderContext facetedMethodsBuilderContext = new FacetedMethodsBuilderContext(specificationLoader, classSubstitutor, specificationTraverser, facetProcessor);
             return new ObjectSpecificationDefault(cls, facetedMethodsBuilderContext, introspectionContext, specContext, objectMemberContext, createObjectContext);
@@ -464,12 +465,12 @@ public class ObjectReflectorDefault impl
     @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 (SpecificationLookupAware.class.isAssignableFrom(candidateClass)) {
-            final SpecificationLookupAware cast = SpecificationLookupAware.class.cast(candidate);
             cast.setSpecificationLookup(this);
         }
 

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorInstaller.java Thu Aug  9 23:16:27 2012
@@ -20,15 +20,16 @@
 package org.apache.isis.core.metamodel.specloader;
 
 import org.apache.isis.core.commons.components.Installer;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 
 /**
- * Installs a {@link ObjectReflector}during system start up.
+ * Installs a {@link SpecificationLoaderSpi} during system start up.
  */
 public interface ObjectReflectorInstaller extends Installer {
 
     static String TYPE = "reflector";
 
-    ObjectReflector createReflector();
+    SpecificationLoaderSpi createReflector();
 
     void addFacetDecoratorInstaller(final FacetDecoratorInstaller decoratorInstaller);
 

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/CreateObjectContext.java Thu Aug  9 23:16:27 2012
@@ -16,23 +16,23 @@
  */
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
-import org.apache.isis.core.metamodel.runtimecontext.DependencyInjector;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 
 public class CreateObjectContext {
-    private final AdapterMap adapterMap;
-    private final DependencyInjector dependencyInjector;
+    private final AdapterManager adapterMap;
+    private final ServicesInjector dependencyInjector;
 
-    public CreateObjectContext(final AdapterMap adapterMap, final DependencyInjector dependencyInjector) {
+    public CreateObjectContext(final AdapterManager adapterMap, final ServicesInjector dependencyInjector) {
         this.adapterMap = adapterMap;
         this.dependencyInjector = dependencyInjector;
     }
 
-    public AdapterMap getAdapterMap() {
+    public AdapterManager getAdapterMap() {
         return adapterMap;
     }
 
-    public DependencyInjector getDependencyInjector() {
+    public ServicesInjector getDependencyInjector() {
         return dependencyInjector;
     }
 }
\ No newline at end of file

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java Thu Aug  9 23:16:27 2012
@@ -47,7 +47,7 @@ import org.apache.isis.core.metamodel.fa
 import org.apache.isis.core.metamodel.methodutils.MethodFinderUtils;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 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;
@@ -124,7 +124,7 @@ public class FacetedMethodsBuilder {
 
     private final ClassSubstitutor classSubstitutor;
 
-    private final SpecificationLoader specificationLoader;
+    private final SpecificationLoaderSpi specificationLoader;
 
     // ////////////////////////////////////////////////////////////////////////////
     // Constructor & finalize
@@ -509,7 +509,7 @@ public class FacetedMethodsBuilder {
     // Dependencies
     // ////////////////////////////////////////////////////////////////////////////
 
-    private SpecificationLoader getSpecificationLoader() {
+    private SpecificationLoaderSpi getSpecificationLoader() {
         return specificationLoader;
     }
 

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilderContext.java Thu Aug  9 23:16:27 2012
@@ -16,18 +16,18 @@
  */
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 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;
 
 public class FacetedMethodsBuilderContext {
-    public final SpecificationLoader specificationLoader;
+    public final SpecificationLoaderSpi specificationLoader;
     public final SpecificationTraverser specificationTraverser;
     public final FacetProcessor facetProcessor;
     public final ClassSubstitutor classSubstitutor;
 
-    public FacetedMethodsBuilderContext(final SpecificationLoader specificationLoader, final ClassSubstitutor classSubstitutor, final SpecificationTraverser specificationTraverser, final FacetProcessor facetProcessor) {
+    public FacetedMethodsBuilderContext(final SpecificationLoaderSpi specificationLoader, final ClassSubstitutor classSubstitutor, final SpecificationTraverser specificationTraverser, final FacetProcessor facetProcessor) {
         this.specificationLoader = specificationLoader;
         this.classSubstitutor = classSubstitutor;
         this.specificationTraverser = specificationTraverser;

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java Thu Aug  9 23:16:27 2012
@@ -32,7 +32,7 @@ import org.apache.isis.core.commons.auth
 import org.apache.isis.core.commons.lang.StringUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
 import org.apache.isis.core.metamodel.consent.Allow;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
@@ -48,7 +48,7 @@ import org.apache.isis.core.metamodel.fa
 import org.apache.isis.core.metamodel.interactions.ActionArgumentContext;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLookup;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 
@@ -265,7 +265,7 @@ public abstract class ObjectActionParame
         }
     }
 
-    protected static void checkChoicesType(final SpecificationLookup specificationLookup, final Object[] objects, final ObjectSpecification paramSpec) {
+    protected static void checkChoicesType(final SpecificationLoader specificationLookup, final Object[] objects, final ObjectSpecification paramSpec) {
         for (final Object object : objects) {
             final ObjectSpecification componentSpec = specificationLookup.loadSpecification(object.getClass());
             if (!componentSpec.isOfType(paramSpec)) {
@@ -303,7 +303,7 @@ public abstract class ObjectActionParame
     // Dependencies (from parent)
     // /////////////////////////////////////////////////////////////
 
-    protected SpecificationLookup getSpecificationLookup() {
+    protected SpecificationLoader getSpecificationLookup() {
         return parentAction.getSpecificationLookup();
     }
 
@@ -311,7 +311,7 @@ public abstract class ObjectActionParame
         return parentAction.getAuthenticationSessionProvider();
     }
 
-    protected AdapterMap getAdapterMap() {
+    protected AdapterManager getAdapterMap() {
         return parentAction.getAdapterMap();
     }
 

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java Thu Aug  9 23:16:27 2012
@@ -28,7 +28,7 @@ import org.apache.isis.core.commons.auth
 import org.apache.isis.core.commons.lang.NameUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
@@ -46,14 +46,14 @@ import org.apache.isis.core.metamodel.in
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLookup;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
 
 public abstract class ObjectMemberAbstract implements ObjectMember {
 
-    public static ObjectSpecification getSpecification(final SpecificationLookup specificationLookup, final Class<?> type) {
+    public static ObjectSpecification getSpecification(final SpecificationLoader specificationLookup, final Class<?> type) {
         return type == null ? null : specificationLookup.loadSpecification(type);
     }
 
@@ -62,8 +62,8 @@ public abstract class ObjectMemberAbstra
     private final FacetedMethod facetedMethod;
     private final FeatureType featureType;
     private final AuthenticationSessionProvider authenticationSessionProvider;
-    private final SpecificationLookup specificationLookup;
-    private final AdapterMap adapterMap;
+    private final SpecificationLoader specificationLookup;
+    private final AdapterManager adapterMap;
     private final QuerySubmitter querySubmitter;
     private final CollectionTypeRegistry collectionTypeRegistry;
 
@@ -290,11 +290,11 @@ public abstract class ObjectMemberAbstra
         return authenticationSessionProvider;
     }
 
-    public SpecificationLookup getSpecificationLookup() {
+    public SpecificationLoader getSpecificationLookup() {
         return specificationLookup;
     }
 
-    public AdapterMap getAdapterMap() {
+    public AdapterManager getAdapterMap() {
         return adapterMap;
     }
 

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java Thu Aug  9 23:16:27 2012
@@ -77,7 +77,7 @@ import org.apache.isis.core.metamodel.sp
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
 import org.apache.isis.core.metamodel.spec.Persistability;
 import org.apache.isis.core.metamodel.spec.SpecificationContext;
-import org.apache.isis.core.metamodel.spec.SpecificationLookup;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -109,7 +109,7 @@ public abstract class ObjectSpecificatio
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final ServicesProvider servicesProvider;
     private final ObjectInstantiator objectInstantiator;
-    private final SpecificationLookup specificationLookup;
+    private final SpecificationLoader specificationLookup;
 
     private final List<ObjectAction> objectActions = Lists.newArrayList();
     private final List<ObjectAssociation> associations = Lists.newArrayList();
@@ -977,7 +977,7 @@ public abstract class ObjectSpecificatio
         return objectInstantiator;
     }
 
-    public SpecificationLookup getSpecificationLookup() {
+    public SpecificationLoader getSpecificationLookup() {
         return specificationLookup;
     }
 }

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java Thu Aug  9 23:16:27 2012
@@ -42,7 +42,7 @@ import org.apache.isis.core.commons.lang
 import org.apache.isis.core.commons.lang.NameUtils;
 import org.apache.isis.core.commons.lang.ToString;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
 import org.apache.isis.core.metamodel.exceptions.MetaModelException;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -59,7 +59,7 @@ import org.apache.isis.core.metamodel.fa
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.layout.MemberLayoutArranger;
 import org.apache.isis.core.metamodel.layout.OrderSet;
-import org.apache.isis.core.metamodel.runtimecontext.DependencyInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectActionSet;
 import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
@@ -448,7 +448,7 @@ public class ObjectSpecificationDefault 
         for (int i = 0; i < fields.size(); i++) {
             fields.get(i).toDefault(adapter);
         }
-        getDependencyInjector().injectDependenciesInto(adapter.getObject());
+        getDependencyInjector().injectServicesInto(adapter.getObject());
         
         CallbackUtils.callCallback(adapter, CreatedCallbackFacet.class);
         
@@ -533,11 +533,11 @@ public class ObjectSpecificationDefault 
     // Dependencies (from constructor)
     // //////////////////////////////////////////////////////////////////
 
-    protected AdapterMap getAdapterMap() {
+    protected AdapterManager getAdapterMap() {
         return createObjectContext.getAdapterMap();
     }
 
-    protected DependencyInjector getDependencyInjector() {
+    protected ServicesInjector getDependencyInjector() {
         return createObjectContext.getDependencyInjector();
     }
 

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/traverser/SpecificationTraverserDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/traverser/SpecificationTraverserDefault.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/traverser/SpecificationTraverserDefault.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/traverser/SpecificationTraverserDefault.java Thu Aug  9 23:16:27 2012
@@ -27,12 +27,12 @@ import java.lang.reflect.Method;
 import java.util.List;
 
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpiAware;
 
-public class SpecificationTraverserDefault implements SpecificationTraverser, SpecificationLoaderAware {
+public class SpecificationTraverserDefault implements SpecificationTraverser, SpecificationLoaderSpiAware {
 
-    private SpecificationLoader specificationLoader;
+    private SpecificationLoaderSpi specificationLoaderSpi;
 
     // ////////////////////////////////////////////////////////////////////
     // init, shutdown
@@ -40,7 +40,7 @@ public class SpecificationTraverserDefau
 
     @Override
     public void init() {
-        ensureThatState(specificationLoader, is(notNullValue()));
+        ensureThatState(specificationLoaderSpi, is(notNullValue()));
     }
 
     @Override
@@ -77,13 +77,13 @@ public class SpecificationTraverserDefau
     // Dependencies (due to *Aware)
     // ////////////////////////////////////////////////////////////////////
 
-    public SpecificationLoader getSpecificationLoader() {
-        return specificationLoader;
+    public SpecificationLoaderSpi getSpecificationLoaderSpi() {
+        return specificationLoaderSpi;
     }
 
     @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLoader) {
-        this.specificationLoader = specificationLoader;
+    public void setSpecificationLoaderSpi(final SpecificationLoaderSpi specificationLoader) {
+        this.specificationLoaderSpi = specificationLoader;
     }
 
 }

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidator.java Thu Aug  9 23:16:27 2012
@@ -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.SpecificationLoaderAware;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpiAware;
 
-public interface MetaModelValidator extends SpecificationLoaderAware, ApplicationScopedComponent {
+public interface MetaModelValidator extends SpecificationLoaderSpiAware, ApplicationScopedComponent {
 
     public void validate() throws MetaModelInvalidException;
 

Modified: incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorAbstract.java Thu Aug  9 23:16:27 2012
@@ -23,11 +23,11 @@ import static org.apache.isis.core.commo
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
 
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 
 public abstract class MetaModelValidatorAbstract implements MetaModelValidator {
 
-    private SpecificationLoader specificationLoader;
+    private SpecificationLoaderSpi specificationLoaderSpi;
 
     // ////////////////////////////////////////////////////////////////////
     // init, shutdown
@@ -35,7 +35,7 @@ public abstract class MetaModelValidator
 
     @Override
     public void init() {
-        ensureThatState(specificationLoader, is(notNullValue()));
+        ensureThatState(specificationLoaderSpi, is(notNullValue()));
     }
 
     @Override
@@ -46,13 +46,13 @@ public abstract class MetaModelValidator
     // Dependencies (due to *Aware)
     // ////////////////////////////////////////////////////////////////////
 
-    public SpecificationLoader getSpecificationLoader() {
-        return specificationLoader;
+    public SpecificationLoaderSpi getSpecificationLoaderSpi() {
+        return specificationLoaderSpi;
     }
 
     @Override
-    public void setSpecificationLoader(final SpecificationLoader specificationLoader) {
-        this.specificationLoader = specificationLoader;
+    public void setSpecificationLoaderSpi(final SpecificationLoaderSpi specificationLoader) {
+        this.specificationLoaderSpi = specificationLoader;
     }
 
 }

Modified: incubator/isis/trunk/framework/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorAbstractTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorAbstractTest.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorAbstractTest.java (original)
+++ incubator/isis/trunk/framework/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorAbstractTest.java Thu Aug  9 23:16:27 2012
@@ -22,27 +22,31 @@ package org.apache.isis.core.metamodel.s
 import java.util.Arrays;
 
 import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
+import org.jmock.auto.Mock;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 
 import org.apache.isis.applib.DomainObjectContainer;
+import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2;
+import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2.Mode;
 
-@RunWith(JMock.class)
 public class ServicesInjectorAbstractTest {
 
-    private final Mockery mockery = new JUnit4Mockery();
+    @Rule
+    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
-    private ServicesInjectorAbstract injector;
+    @Mock
     private DomainObjectContainerExtended mockContainer;
+    @Mock
     private Service1 mockService1;
+    @Mock
     private Service2 mockService2;
-
+    @Mock
     private SomeDomainObject mockDomainObject;
+    
+    private ServicesInjectorSpi injector;
 
     static interface Service1 {
     }
@@ -58,22 +62,14 @@ public class ServicesInjectorAbstractTes
 
     static interface SomeDomainObject {
         public void setContainer(DomainObjectContainer container);
-
         public void setMixin(Mixin mixin);
-
         public void setService1(Service1 service);
-
         public void setService2(Service2 service);
     }
 
     @Before
     public void setUp() throws Exception {
-        mockDomainObject = mockery.mock(SomeDomainObject.class);
-        mockContainer = mockery.mock(DomainObjectContainerExtended.class);
-        mockService1 = mockery.mock(Service1.class);
-        mockService2 = mockery.mock(Service2.class);
-        injector = new ServicesInjectorAbstract() {
-        };
+        injector = new ServicesInjectorDefault();
     }
 
     @After
@@ -86,7 +82,7 @@ public class ServicesInjectorAbstractTes
         final Object[] services = { mockService1, mockService2 };
         injector.setServices(Arrays.asList(services));
 
-        mockery.checking(new Expectations() {
+        context.checking(new Expectations() {
             {
                 one(mockDomainObject).setContainer(mockContainer);
                 one(mockDomainObject).setMixin(mockContainer);
@@ -95,7 +91,7 @@ public class ServicesInjectorAbstractTes
             }
         });
 
-        injector.injectDependenciesInto(mockDomainObject);
+        injector.injectServicesInto(mockDomainObject);
     }
 
 }

Modified: incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/app/IsisMetaModel.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/app/IsisMetaModel.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/app/IsisMetaModel.java (original)
+++ incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/app/IsisMetaModel.java Thu Aug  9 23:16:27 2012
@@ -39,12 +39,12 @@ import org.apache.isis.core.commons.conf
 import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
 import org.apache.isis.core.metamodel.layout.MemberLayoutArranger;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.runtimecontext.DependencyInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutorAbstract;
@@ -152,7 +152,7 @@ public class IsisMetaModel implements Ap
      * 
      * <p>
      * To obtain the instantiated services, use the
-     * {@link ServicesInjector#getRegisteredServices()} (available from
+     * {@link ServicesInjectorSpi#getRegisteredServices()} (available from
      * {@link #getServicesInjector()}).
      */
     public List<Object> getServices() {
@@ -196,7 +196,7 @@ public class IsisMetaModel implements Ap
     /**
      * Available once {@link #init() initialized}.
      */
-    public SpecificationLoader getSpecificationLoader() {
+    public SpecificationLoaderSpi getSpecificationLoader() {
         return reflector;
     }
 
@@ -219,7 +219,7 @@ public class IsisMetaModel implements Ap
     /**
      * Available once {@link #init() initialized}.
      */
-    public DependencyInjector getDependencyInjector() {
+    public ServicesInjector getDependencyInjector() {
         ensureInitialized();
         return runtimeContext.getDependencyInjector();
     }

Modified: incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/CollectionUtils.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/CollectionUtils.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/CollectionUtils.java (original)
+++ incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/CollectionUtils.java Thu Aug  9 23:16:27 2012
@@ -20,7 +20,7 @@
 package org.apache.isis.core.progmodel.facets;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -29,7 +29,7 @@ public final class CollectionUtils {
     private CollectionUtils() {
     }
 
-    public static Object[] getCollectionAsObjectArray(final Object option, final ObjectSpecification spec, final AdapterMap adapterMap) {
+    public static Object[] getCollectionAsObjectArray(final Object option, final ObjectSpecification spec, final AdapterManager adapterMap) {
         final ObjectAdapter collection = adapterMap.adapterFor(option);
         final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(collection);
         final Object[] optionArray = new Object[facet.size(collection)];

Modified: incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetFactory.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetFactory.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetFactory.java (original)
+++ incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetFactory.java Thu Aug  9 23:16:27 2012
@@ -23,8 +23,8 @@ import java.lang.reflect.Method;
 
 import org.apache.isis.core.commons.lang.NameUtils;
 import org.apache.isis.core.commons.lang.StringUtils;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMapAware;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManagerAware;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -48,14 +48,14 @@ import org.apache.isis.core.progmodel.fa
  * and {@link DebugFacet}. In addition a {@link NamedFacet} is inferred from the
  * name (taking into account the above well-known prefixes).
  */
-public class ActionInvocationFacetFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterMapAware {
+public class ActionInvocationFacetFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
 
     private static final String EXPLORATION_PREFIX = "Exploration";
     private static final String DEBUG_PREFIX = "Debug";
 
     private static final String[] PREFIXES = { EXPLORATION_PREFIX, DEBUG_PREFIX, ExecutedFacet.Where.REMOTE_PREFIX, ExecutedFacet.Where.LOCAL_PREFIX };
 
-    private AdapterMap adapterMap;
+    private AdapterManager adapterManager;
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
@@ -105,7 +105,7 @@ public class ActionInvocationFacetFactor
             final ObjectSpecification typeSpec = getSpecificationLookup().loadSpecification(cls);
             final FacetHolder holder = processMethodContext.getFacetHolder();
 
-            FacetUtil.addFacet(new ActionInvocationFacetViaMethod(actionMethod, typeSpec, returnSpec, holder, getAdapterMap()));
+            FacetUtil.addFacet(new ActionInvocationFacetViaMethod(actionMethod, typeSpec, returnSpec, holder, getAdapterManager()));
         } finally {
             processMethodContext.removeMethod(actionMethod);
         }
@@ -177,12 +177,12 @@ public class ActionInvocationFacetFactor
     // ///////////////////////////////////////////////////////////////
 
     @Override
-    public void setAdapterMap(final AdapterMap adapterMap) {
-        this.adapterMap = adapterMap;
+    public void setAdapterManager(final AdapterManager adapterMap) {
+        this.adapterManager = adapterMap;
     }
 
-    private AdapterMap getAdapterMap() {
-        return adapterMap;
+    private AdapterManager getAdapterManager() {
+        return adapterManager;
     }
 
 }

Modified: incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java (original)
+++ incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java Thu Aug  9 23:16:27 2012
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.log4j.Logger;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.util.InvokeUtils;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
@@ -46,9 +46,9 @@ public class ActionInvocationFacetViaMet
     private final ObjectSpecification onType;
     private final ObjectSpecification returnType;
 
-    private final AdapterMap adapterMap;
+    private final AdapterManager adapterMap;
 
-    public ActionInvocationFacetViaMethod(final Method method, final ObjectSpecification onType, final ObjectSpecification returnType, final FacetHolder holder, final AdapterMap adapterMap) {
+    public ActionInvocationFacetViaMethod(final Method method, final ObjectSpecification onType, final ObjectSpecification returnType, final FacetHolder holder, final AdapterManager adapterMap) {
         super(holder);
         this.method = method;
         this.paramCount = method.getParameterTypes().length;
@@ -139,7 +139,7 @@ public class ActionInvocationFacetViaMet
     // Dependencies (from constructor)
     // /////////////////////////////////////////////////////////
 
-    private AdapterMap getAdapterMap() {
+    private AdapterManager getAdapterMap() {
         return adapterMap;
     }
 

Modified: incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/typeof/annotation/TypeOfFacetAnnotationForAction.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/typeof/annotation/TypeOfFacetAnnotationForAction.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/typeof/annotation/TypeOfFacetAnnotationForAction.java (original)
+++ incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/typeof/annotation/TypeOfFacetAnnotationForAction.java Thu Aug  9 23:16:27 2012
@@ -21,11 +21,11 @@ package org.apache.isis.core.progmodel.f
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.typeof.TypeOfFacetAbstract;
-import org.apache.isis.core.metamodel.spec.SpecificationLookup;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 
 public class TypeOfFacetAnnotationForAction extends TypeOfFacetAbstract {
 
-    public TypeOfFacetAnnotationForAction(final Class<?> type, final FacetHolder holder, final SpecificationLookup specificationLookup) {
+    public TypeOfFacetAnnotationForAction(final Class<?> type, final FacetHolder holder, final SpecificationLoader specificationLookup) {
         super(type, holder, specificationLookup);
     }
 

Modified: incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/clear/CollectionClearFacetFactory.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/clear/CollectionClearFacetFactory.java?rev=1371529&r1=1371528&r2=1371529&view=diff
==============================================================================
--- incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/clear/CollectionClearFacetFactory.java (original)
+++ incubator/isis/trunk/framework/core/progmodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/clear/CollectionClearFacetFactory.java Thu Aug  9 23:16:27 2012
@@ -24,8 +24,8 @@ import java.lang.reflect.Method;
 import org.apache.isis.core.commons.lang.NameUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectDirtier;
 import org.apache.isis.core.metamodel.adapter.ObjectDirtierAware;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMap;
-import org.apache.isis.core.metamodel.adapter.map.AdapterMapAware;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.map.AdapterManagerAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -35,11 +35,11 @@ import org.apache.isis.core.progmodel.fa
 import org.apache.isis.core.progmodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.progmodel.facets.MethodPrefixConstants;
 
-public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterMapAware, ObjectDirtierAware {
+public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware, ObjectDirtierAware {
 
     private static final String[] PREFIXES = { MethodPrefixConstants.CLEAR_PREFIX };
 
-    private AdapterMap adapterMap;
+    private AdapterManager adapterManager;
     private ObjectDirtier objectDirtier;
 
     public CollectionClearFacetFactory() {
@@ -69,7 +69,7 @@ public class CollectionClearFacetFactory
         if (clearMethodIfAny != null) {
             return new CollectionClearFacetViaMethod(clearMethodIfAny, collection);
         } else {
-            return new CollectionClearFacetViaAccessor(accessorMethod, collection, getAdapterMap(), getObjectDirtier());
+            return new CollectionClearFacetViaAccessor(accessorMethod, collection, getAdapterManager(), getObjectDirtier());
         }
     }
 
@@ -77,13 +77,13 @@ public class CollectionClearFacetFactory
     // Dependencies (injected)
     // ///////////////////////////////////////////////////////
 
-    protected AdapterMap getAdapterMap() {
-        return adapterMap;
+    protected AdapterManager getAdapterManager() {
+        return adapterManager;
     }
 
     @Override
-    public void setAdapterMap(final AdapterMap adapterMap) {
-        this.adapterMap = adapterMap;
+    public void setAdapterManager(final AdapterManager adapterMap) {
+        this.adapterManager = adapterMap;
     }
 
     protected ObjectDirtier getObjectDirtier() {