You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2016/02/24 11:03:48 UTC

svn commit: r1732052 - in /sling/trunk/bundles/extensions/models/impl/src: main/java/org/apache/sling/models/impl/ModelAdapterFactory.java test/java/org/apache/sling/models/impl/MultipleInjectorTest.java

Author: sseifert
Date: Wed Feb 24 10:03:48 2016
New Revision: 1732052

URL: http://svn.apache.org/viewvc?rev=1732052&view=rev
Log:
SLING-5555 Make error message more explicit when a @Source annotation contains an invalid source identifier

Modified:
    sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java
    sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/MultipleInjectorTest.java

Modified: sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java?rev=1732052&r1=1732051&r2=1732052&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java (original)
+++ sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java Wed Feb 24 10:03:48 2016
@@ -420,6 +420,9 @@ public class ModelAdapterFactory impleme
             }
             else {
                 injectorsToProcess = injectors.get(source);
+                if (injectorsToProcess == null) {
+                    throw new IllegalArgumentException("No Sling Models Injector registered for source '" + source + "'.");
+                }
             }
             
             // find the right injector

Modified: sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/MultipleInjectorTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/MultipleInjectorTest.java?rev=1732052&r1=1732051&r2=1732052&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/MultipleInjectorTest.java (original)
+++ sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/MultipleInjectorTest.java Wed Feb 24 10:03:48 2016
@@ -16,10 +16,11 @@
  */
 package org.apache.sling.models.impl;
 
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.mockito.Mockito.when;
 
-import java.lang.reflect.AnnotatedElement;
 import java.util.Hashtable;
 
 import javax.inject.Inject;
@@ -28,9 +29,9 @@ import org.apache.sling.api.SlingHttpSer
 import org.apache.sling.api.scripting.SlingBindings;
 import org.apache.sling.models.annotations.Model;
 import org.apache.sling.models.annotations.Source;
+import org.apache.sling.models.factory.ModelClassException;
 import org.apache.sling.models.impl.injectors.BindingsInjector;
 import org.apache.sling.models.impl.injectors.RequestAttributeInjector;
-import org.apache.sling.models.spi.DisposalCallbackRegistry;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -77,7 +78,8 @@ public class MultipleInjectorTest {
         factory.bindStaticInjectAnnotationProcessorFactory(bindingsInjector, new ServicePropertiesMap(1, 1));
 
         when(request.getAttribute(SlingBindings.class.getName())).thenReturn(bindings);
-        factory.adapterImplementations.addClassesAsAdapterAndImplementation(ForTwoInjectorsWithSource.class, ForTwoInjectors.class);
+        factory.adapterImplementations.addClassesAsAdapterAndImplementation(
+                ForTwoInjectorsWithSource.class, ForTwoInjectors.class, ForTwoInjectorsWithInvalidSource.class);
     }
 
     @Test
@@ -108,6 +110,17 @@ public class MultipleInjectorTest {
         assertEquals(obj.firstAttribute, attributeValue);
     }
 
+    @Test
+    public void testInjectorWithInvalidSource() {
+        ForTwoInjectorsWithInvalidSource obj = factory.getAdapter(request, ForTwoInjectorsWithInvalidSource.class);
+        assertNull(obj);
+    }
+
+    @Test(expected=ModelClassException.class)
+    public void testInjectorWithInvalidSourceWithException() {
+        factory.createModel(request, ForTwoInjectorsWithInvalidSource.class);
+    }
+
     @Model(adaptables = SlingHttpServletRequest.class)
     public static class ForTwoInjectors {
 
@@ -124,5 +137,14 @@ public class MultipleInjectorTest {
         private String firstAttribute;
 
     }
+
+    @Model(adaptables = SlingHttpServletRequest.class)
+    public static class ForTwoInjectorsWithInvalidSource {
+
+        @Inject
+        @Source("this-is-an-invalid-source")
+        private String firstAttribute;
+
+    }
 
 }