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 2014/10/28 13:23:12 UTC

[2/2] git commit: ISIS-931: extracted out InjectorMethodEvaluator (for testing, single responsibility principle).

ISIS-931: extracted out InjectorMethodEvaluator (for testing, single responsibility principle).


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

Branch: refs/heads/master
Commit: 355c1d07954cbde2c86b70dde84066ff74ac94ca
Parents: 29c69d9
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Oct 28 12:22:43 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Oct 28 12:22:43 2014 +0000

----------------------------------------------------------------------
 .../RemoveInjectMethodsFacetFactory.java        |  4 +-
 .../services/ServicesInjectorDefault.java       | 27 +++++++--
 .../metamodel/spec/InjectorMethodEvaluator.java | 26 ++++++++
 .../metamodel/spec/SpecificationLoader.java     |  8 +--
 .../spec/SpecificationLoaderAbstract.java       | 31 ----------
 .../spec/SpecificationLoaderDelegator.java      |  7 ++-
 .../InjectorMethodEvaluatorDefault.java         | 62 ++++++++++++++++++++
 .../specloader/ObjectReflectorDefault.java      |  9 ++-
 .../metamodel/facets/ProgrammableReflector.java | 12 ++++
 .../services/ServicesInjectorDefaultTest.java   |  9 ++-
 .../PersistenceSessionObjectStoreTest.java      |  3 +-
 11 files changed, 146 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveInjectMethodsFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveInjectMethodsFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveInjectMethodsFacetFactory.java
index 8bdf3bd..69df125 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveInjectMethodsFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveInjectMethodsFacetFactory.java
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.facets.object.ignore.javalang;
 
 import java.lang.reflect.Method;
+import java.util.List;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 
@@ -31,7 +32,8 @@ public class RemoveInjectMethodsFacetFactory extends FacetFactoryAbstract  {
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        for (Class<? extends Object> serviceClass : getSpecificationLoader().getServiceClasses()) {
+        final List<Class<?>> serviceClasses = getSpecificationLoader().getServiceClasses();
+        for (Class<? extends Object> serviceClass : serviceClasses) {
             Method[] methods = processClassContext.getCls().getMethods();
             for (Method method : methods) {
                 if(getSpecificationLoader().isInjectorMethodFor(method, serviceClass)) {

http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java
index 74e08f0..5a2b3de 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefault.java
@@ -38,6 +38,7 @@ import org.apache.isis.core.commons.lang.ObjectExtensions;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.exceptions.MetaModelException;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
+import org.apache.isis.core.metamodel.spec.InjectorMethodEvaluator;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
 
@@ -56,9 +57,24 @@ public class ServicesInjectorDefault implements ServicesInjectorSpi, Specificati
      */
     private final Map<Class<?>, List<Object>> servicesByType = Maps.newHashMap();
 
+    public ServicesInjectorDefault() {
+        this(null);
+    }
 
+    /**
+     * For testing.  
+     * 
+     * <p>
+     *     In production code, {@link #setSpecificationLookup(org.apache.isis.core.metamodel.spec.SpecificationLoader)}
+     *     Pis used instead.
+     * </p>
+     * @param injectorMethodEvaluator
+     */
+    public ServicesInjectorDefault(InjectorMethodEvaluator injectorMethodEvaluator) {
+        this.injectorMethodEvaluator = injectorMethodEvaluator;
+    }
 
-    //region > init, shutdown
+//region > init, shutdown
 
     @Override
     public void init() {
@@ -210,7 +226,7 @@ public class ServicesInjectorDefault implements ServicesInjectorSpi, Specificati
     private void autowire(Object object, Method prefixedMethod, List<Object> services) {
         for (final Object service : services) {
             final Class<?> serviceClass = service.getClass();
-            boolean isInjectorMethod = specificationLoader.isInjectorMethodFor(prefixedMethod, serviceClass);
+            boolean isInjectorMethod = injectorMethodEvaluator.isInjectorMethodFor(prefixedMethod, serviceClass);
             if(isInjectorMethod) {
                 prefixedMethod.setAccessible(true);
                 invokeInjectorMethod(prefixedMethod, object, service);
@@ -317,10 +333,11 @@ public class ServicesInjectorDefault implements ServicesInjectorSpi, Specificati
 
     //region > injected dependencies
 
-    private SpecificationLoader specificationLoader;
+    private InjectorMethodEvaluator injectorMethodEvaluator;
 
-    public void setSpecificationLookup(SpecificationLoader specificationLoader) {
-        this.specificationLoader = specificationLoader;
+    @Override
+    public void setSpecificationLookup(SpecificationLoader specificationLookup) {
+        injectorMethodEvaluator = specificationLookup;
     }
 
     //endregion

http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/InjectorMethodEvaluator.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/InjectorMethodEvaluator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/InjectorMethodEvaluator.java
new file mode 100644
index 0000000..f67f585
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/InjectorMethodEvaluator.java
@@ -0,0 +1,26 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.isis.core.metamodel.spec;
+
+import java.lang.reflect.Method;
+
+public interface InjectorMethodEvaluator {
+
+    boolean isInjectorMethodFor(Method method, Class<? extends Object> serviceClass);
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/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 f7f2a51..4bf99c1 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
@@ -16,15 +16,13 @@
  */
 package org.apache.isis.core.metamodel.spec;
 
-import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
-
 import org.apache.isis.core.commons.components.Injectable;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
 
-public interface SpecificationLoader extends Injectable {
+public interface SpecificationLoader extends Injectable, InjectorMethodEvaluator {
 
     ObjectSpecification lookupBySpecId(ObjectSpecId objectSpecId);
 
@@ -33,7 +31,8 @@ public interface SpecificationLoader extends Injectable {
      * 
      * <p>
      * It is possible for this method to return <tt>null</tt>, for example if
-     * the configured {@link #getClassSubstitutor()} has filtered out the class.
+     * the configured {@link org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor}
+     * has filtered out the class.
      */
     ObjectSpecification loadSpecification(String fullyQualifiedClassName);
 
@@ -82,7 +81,6 @@ public interface SpecificationLoader extends Injectable {
 
     void invalidateCache(Class<?> domainClass);
 
-    boolean isInjectorMethodFor(Method method, Class<? extends Object> serviceClass);
 
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/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
index 8bbead0..7d0e79b 100644
--- 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
@@ -30,36 +30,5 @@ public abstract class SpecificationLoaderAbstract implements SpecificationLoader
         }
     }
 
-    //region > isInjectorMethodFor
-
-    private final Map<Method, Map<Class<?>, Boolean>> isInjectorMethod = Maps.newConcurrentMap();
-
-    public boolean isInjectorMethodFor(Method method, final Class<?> serviceClass) {
-        Map<Class<?>, Boolean> classBooleanMap = isInjectorMethod.get(method);
-        if(classBooleanMap == null) {
-            synchronized (isInjectorMethod) {
-                classBooleanMap = Maps.newConcurrentMap();
-                isInjectorMethod.put(method, classBooleanMap);
-            }
-        }
-        Boolean result = classBooleanMap.get(serviceClass);
-        if(result == null) {
-            result = determineIsInjectorMethodFor(method, serviceClass);
-            classBooleanMap.put(serviceClass, result);
-        }
-        return result;
-    }
-
-    private static boolean determineIsInjectorMethodFor(Method method, Class<?> serviceClass) {
-        final String methodName = method.getName();
-        if (methodName.startsWith("set") || methodName.startsWith("inject")) {
-            final Class<?>[] parameterTypes = method.getParameterTypes();
-            if (parameterTypes.length == 1 && parameterTypes[0] != Object.class && parameterTypes[0].isAssignableFrom(serviceClass)) {
-                return true;
-            }
-        }
-        return false;
-    }
-    //endregion
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderDelegator.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderDelegator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderDelegator.java
index ad1ad68..7418f17 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderDelegator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationLoaderDelegator.java
@@ -16,6 +16,7 @@
  */
 package org.apache.isis.core.metamodel.spec;
 
+import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
 
@@ -79,7 +80,6 @@ public class SpecificationLoaderDelegator extends SpecificationLoaderAbstract {
         return specificationLoaderDelegate.introspectIfRequired(spec);
     }
 
-    
     @Override
     public List<Class<?>> getServiceClasses() {
         return specificationLoaderDelegate.getServiceClasses();
@@ -91,6 +91,11 @@ public class SpecificationLoaderDelegator extends SpecificationLoaderAbstract {
     }
 
     @Override
+    public boolean isInjectorMethodFor(Method method, Class<? extends Object> serviceClass) {
+        return specificationLoaderDelegate.isInjectorMethodFor(method, serviceClass);
+    }
+
+    @Override
     public void injectInto(Object candidate) {
         super.injectInto(candidate);
         if(specificationLoaderDelegate != null) {

http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/InjectorMethodEvaluatorDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/InjectorMethodEvaluatorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/InjectorMethodEvaluatorDefault.java
new file mode 100644
index 0000000..03a1c2d
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/InjectorMethodEvaluatorDefault.java
@@ -0,0 +1,62 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.core.metamodel.specloader;
+
+import java.lang.reflect.Method;
+import java.util.Map;
+import com.google.common.collect.Maps;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.isis.core.metamodel.spec.InjectorMethodEvaluator;
+
+public final class InjectorMethodEvaluatorDefault implements InjectorMethodEvaluator {
+
+    private final static Logger LOG = LoggerFactory.getLogger(InjectorMethodEvaluatorDefault.class);
+
+    private final Map<Method, Map<Class<?>, Boolean>> isInjectorMethod = Maps.newConcurrentMap();
+
+    public boolean isInjectorMethodFor(Method method, final Class<?> serviceClass) {
+        Map<Class<?>, Boolean> classBooleanMap = isInjectorMethod.get(method);
+        if(classBooleanMap == null) {
+            synchronized (isInjectorMethod) {
+                classBooleanMap = Maps.newConcurrentMap();
+                isInjectorMethod.put(method, classBooleanMap);
+            }
+        }
+        Boolean result = classBooleanMap.get(serviceClass);
+        if(result == null) {
+            result = determineIsInjectorMethodFor(method, serviceClass);
+            classBooleanMap.put(serviceClass, result);
+        }
+        return result;
+    }
+
+    private static boolean determineIsInjectorMethodFor(Method method, Class<?> serviceClass) {
+        final String methodName = method.getName();
+        if (methodName.startsWith("set") || methodName.startsWith("inject")) {
+            final Class<?>[] parameterTypes = method.getParameterTypes();
+            if (parameterTypes.length == 1 && parameterTypes[0] != Object.class && parameterTypes[0].isAssignableFrom(serviceClass)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/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 4f27b58..32716d4 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
@@ -361,10 +361,13 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
         }
     }
 
-    @Override
-    public boolean isInjectorMethodFor(Method method, Class<? extends Object> serviceClass) {
-        return false;
+    //region > isInjectorMethodFor
+    private InjectorMethodEvaluator injectorMethodEvaluator = new InjectorMethodEvaluatorDefault();
+
+    public boolean isInjectorMethodFor(Method method, final Class<?> serviceClass) {
+        return injectorMethodEvaluator.isInjectorMethodFor(method, serviceClass);
     }
+    //endregion
 
     private void recache(final ObjectSpecification newSpec) {
         getCache().recache(newSpec);

http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/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
index 63ca002..4476261 100644
--- 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
@@ -19,8 +19,11 @@
 
 package org.apache.isis.core.metamodel.facets;
 
+import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Maps;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.commons.exceptions.NotYetImplementedException;
@@ -98,6 +101,15 @@ public class ProgrammableReflector extends SpecificationLoaderAbstract implement
     public void injectInto(final Object candidate) {
     }
 
+    //region > isInjectorMethodFor
+
+    private final Map<Method, Map<Class<?>, Boolean>> isInjectorMethod = Maps.newConcurrentMap();
+
+    public boolean isInjectorMethodFor(Method method, final Class<?> serviceClass) {
+        return false;
+    }
+    //endregion
+
     @Override
     public void setRuntimeContext(final RuntimeContext runtimeContext) {
         // ignored

http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
index 9c0cb1c..361474b 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
@@ -20,15 +20,14 @@
 package org.apache.isis.core.metamodel.services;
 
 import java.util.Arrays;
-
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-
 import org.apache.isis.applib.DomainObjectContainer;
+import org.apache.isis.core.metamodel.specloader.InjectorMethodEvaluatorDefault;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
@@ -45,8 +44,8 @@ public class ServicesInjectorDefaultTest {
     private Service2 mockService2;
     @Mock
     private SomeDomainObject mockDomainObject;
-    
-    private ServicesInjectorSpi injector;
+
+    private ServicesInjectorDefault injector;
 
     public static interface Service1 {
     }
@@ -69,7 +68,7 @@ public class ServicesInjectorDefaultTest {
 
     @Before
     public void setUp() throws Exception {
-        injector = new ServicesInjectorDefault();
+        injector = new ServicesInjectorDefault(new InjectorMethodEvaluatorDefault());
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/isis/blob/355c1d07/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/PersistenceSessionObjectStoreTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/PersistenceSessionObjectStoreTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/PersistenceSessionObjectStoreTest.java
index 9655f82..7954a1b 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/PersistenceSessionObjectStoreTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/PersistenceSessionObjectStoreTest.java
@@ -39,6 +39,7 @@ import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
 import org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.specloader.InjectorMethodEvaluatorDefault;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
 import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
@@ -152,7 +153,7 @@ public class PersistenceSessionObjectStoreTest {
 
         runtimeContext.injectInto(container);
 
-        servicesInjector = new ServicesInjectorDefault();
+        servicesInjector = new ServicesInjectorDefault(new InjectorMethodEvaluatorDefault());
 
         adapterManager = new AdapterManagerDefault(new PojoRecreatorDefault());
         adapterFactory = new PojoAdapterFactory();