This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag 
org.apache.sling.testing.sling-mock-1.9.8
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git

commit dcbd70def1fd66e125b6e95b275c953d6c50ff8e
Author: Stefan Seifert <[email protected]>
AuthorDate: Tue May 9 12:31:05 2017 +0000

    SLING-6845 sling-mock: Support Sling Models Impl 1.4.0
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/branches/testing/mocks/sling-mock-1.x@1794553
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../mock/sling/context/SlingContextImpl.java       | 58 +++++++++++++---------
 1 file changed, 34 insertions(+), 24 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
 
b/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
index 3c3a25c..e10a24c 100644
--- 
a/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
+++ 
b/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
@@ -32,17 +32,7 @@ import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.api.scripting.SlingBindings;
 import org.apache.sling.api.scripting.SlingScriptHelper;
 import org.apache.sling.commons.mime.MimeTypeService;
-import org.apache.sling.models.impl.FirstImplementationPicker;
 import org.apache.sling.models.impl.ModelAdapterFactory;
-import org.apache.sling.models.impl.injectors.BindingsInjector;
-import org.apache.sling.models.impl.injectors.ChildResourceInjector;
-import org.apache.sling.models.impl.injectors.OSGiServiceInjector;
-import org.apache.sling.models.impl.injectors.RequestAttributeInjector;
-import org.apache.sling.models.impl.injectors.ResourcePathInjector;
-import org.apache.sling.models.impl.injectors.SelfInjector;
-import org.apache.sling.models.impl.injectors.SlingObjectInjector;
-import org.apache.sling.models.impl.injectors.ValueMapInjector;
-import org.apache.sling.models.spi.ImplementationPicker;
 import org.apache.sling.resourcebuilder.api.ResourceBuilder;
 import org.apache.sling.resourcebuilder.api.ResourceBuilderFactory;
 import org.apache.sling.resourcebuilder.impl.ResourceBuilderFactoryService;
@@ -139,21 +129,23 @@ public class SlingContextImpl extends OsgiContextImpl {
         registerInjectActivateService(new ScriptEngineManagerFactory());
         registerInjectActivateService(new 
BindingsValuesProvidersByContextImpl());
         
-        // adapter factories
+        // sling models
         registerInjectActivateService(new ModelAdapterFactory());
-
-        // sling models injectors
-        registerInjectActivateService(new BindingsInjector());
-        registerInjectActivateService(new ChildResourceInjector());
-        registerInjectActivateService(new OSGiServiceInjector());
-        registerInjectActivateService(new RequestAttributeInjector());
-        registerInjectActivateService(new ResourcePathInjector());
-        registerInjectActivateService(new SelfInjector());
-        registerInjectActivateService(new SlingObjectInjector());
-        registerInjectActivateService(new ValueMapInjector());
-
-        // sling models implementation pickers
-        registerService(ImplementationPicker.class, new 
FirstImplementationPicker());
+        registerInjectActivateServiceByClassName(
+                "org.apache.sling.models.impl.FirstImplementationPicker",
+                "org.apache.sling.models.impl.ResourceTypeBasedResourcePicker",
+                "org.apache.sling.models.impl.injectors.BindingsInjector",
+                "org.apache.sling.models.impl.injectors.ChildResourceInjector",
+                "org.apache.sling.models.impl.injectors.OSGiServiceInjector",
+                
"org.apache.sling.models.impl.injectors.RequestAttributeInjector",
+                "org.apache.sling.models.impl.injectors.ResourcePathInjector",
+                "org.apache.sling.models.impl.injectors.SelfInjector",
+                "org.apache.sling.models.impl.injectors.SlingObjectInjector",
+                "org.apache.sling.models.impl.injectors.ValueMapInjector",
+                "org.apache.sling.models.impl.via.BeanPropertyViaProvider",
+                "org.apache.sling.models.impl.via.ChildResourceViaProvider",
+                
"org.apache.sling.models.impl.via.ForcedResourceTypeViaProvider",
+                
"org.apache.sling.models.impl.via.ResourceSuperTypeViaProvider");
 
         // other services
         registerService(SlingSettingsService.class, new 
MockSlingSettingService(DEFAULT_RUN_MODES));
@@ -163,6 +155,24 @@ public class SlingContextImpl extends OsgiContextImpl {
         // scan for models defined via bundle headers in classpath
         
ModelAdapterFactoryUtil.addModelsForManifestEntries(this.bundleContext());
     }
+    
+    private void registerInjectActivateServiceByClassName(String... 
classNames) {
+        for (String className : classNames) {
+            try {
+                Class<?> clazz = Class.forName(className);
+                registerInjectActivateService(clazz.newInstance());
+            }
+            catch (ClassNotFoundException ex) {
+                // ignore - probably not the latest sling models impl version
+            }
+            catch (InstantiationException e) {
+                // ignore - probably not the latest sling models impl version
+            }
+            catch (IllegalAccessException e) {
+                // ignore - probably not the latest sling models impl version
+            }
+        }
+    }
 
     /**
      * Teardown actions after test method execution

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to