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]>.
