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 2014/10/30 11:25:34 UTC

svn commit: r1635455 - in /sling/whiteboard/sseifert/SLING-4112_models_tuning: ./ api/src/main/java/org/apache/sling/models/annotations/injectorspecific/ impl/src/main/java/org/apache/sling/models/impl/injectors/ impl/src/test/java/org/apache/sling/mod...

Author: sseifert
Date: Thu Oct 30 10:25:33 2014
New Revision: 1635455

URL: http://svn.apache.org/r1635455
Log:
merge with current trunk

Removed:
    sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/main/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorRequestContext.java
    sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/main/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorRequestContextFilter.java
    sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/test/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorRequestContextFilterTest.java
    sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/test/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorRequest_RequestContextTest.java
    sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/test/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorResourceResolver_RequestContextTest.java
    sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/test/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorResource_RequestContextTest.java
Modified:
    sling/whiteboard/sseifert/SLING-4112_models_tuning/   (props changed)
    sling/whiteboard/sseifert/SLING-4112_models_tuning/api/src/main/java/org/apache/sling/models/annotations/injectorspecific/SlingObject.java
    sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/main/java/org/apache/sling/models/impl/injectors/SlingObjectInjector.java
    sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/test/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorRequestTest.java

Propchange: sling/whiteboard/sseifert/SLING-4112_models_tuning/
------------------------------------------------------------------------------
    svn:mergeinfo = /sling/trunk/bundles/extensions/models:1635259-1635454

Modified: sling/whiteboard/sseifert/SLING-4112_models_tuning/api/src/main/java/org/apache/sling/models/annotations/injectorspecific/SlingObject.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/sseifert/SLING-4112_models_tuning/api/src/main/java/org/apache/sling/models/annotations/injectorspecific/SlingObject.java?rev=1635455&r1=1635454&r2=1635455&view=diff
==============================================================================
--- sling/whiteboard/sseifert/SLING-4112_models_tuning/api/src/main/java/org/apache/sling/models/annotations/injectorspecific/SlingObject.java (original)
+++ sling/whiteboard/sseifert/SLING-4112_models_tuning/api/src/main/java/org/apache/sling/models/annotations/injectorspecific/SlingObject.java Thu Oct 30 10:25:33 2014
@@ -52,35 +52,31 @@ import org.apache.sling.models.spi.injec
  * <td>{@link Resource}</td>
  * <td>Resource</td>
  * <td style="text-align:center">X</td>
- * <td style="text-align:center">X*</td>
+ * <td></td>
  * <td style="text-align:center">X</td>
  * </tr>
  * <tr style="background-color:#eee">
  * <td>{@link SlingHttpServletRequest}</td>
  * <td>Sling request</td>
  * <td style="text-align:center">X</td>
- * <td style="text-align:center">X*</td>
- * <td style="text-align:center">X*</td>
+ * <td></td>
+ * <td></td>
  * </tr>
  * <tr>
  * <td>{@link SlingHttpServletResponse}</td>
  * <td>Sling response</td>
  * <td style="text-align:center">X</td>
- * <td style="text-align:center">X*</td>
- * <td style="text-align:center">X*</td>
+ * <td></td>
+ * <td></td>
  * </tr>
  * <tr style="background-color:#eee">
  * <td>{@link SlingScriptHelper}</td>
  * <td>Sling script helper</td>
  * <td style="text-align:center">X</td>
- * <td style="text-align:center">X*</td>
- * <td style="text-align:center">X*</td>
+ * <td></td>
+ * <td></td>
  * </tr>
  * </table>
- * <p>
- * In case of X* the class cannot be derived from the adaptable, but is derived from the request of the current thread
- * set by a servlet filter. If the current thread is not associated with a request nothing is injected.
- * </p>
  */
 @Target({ METHOD, FIELD, PARAMETER })
 @Retention(RUNTIME)

Modified: sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/main/java/org/apache/sling/models/impl/injectors/SlingObjectInjector.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/main/java/org/apache/sling/models/impl/injectors/SlingObjectInjector.java?rev=1635455&r1=1635454&r2=1635455&view=diff
==============================================================================
--- sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/main/java/org/apache/sling/models/impl/injectors/SlingObjectInjector.java (original)
+++ sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/main/java/org/apache/sling/models/impl/injectors/SlingObjectInjector.java Thu Oct 30 10:25:33 2014
@@ -24,8 +24,6 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
@@ -56,9 +54,6 @@ public final class SlingObjectInjector i
      * Injector name
      */
     public static final String NAME = "sling-object";
-    
-    @Reference(cardinality=ReferenceCardinality.OPTIONAL_UNARY)
-    private SlingObjectInjectorRequestContext requestContext;
 
     @Override
     public String getName() {
@@ -76,23 +71,8 @@ public final class SlingObjectInjector i
         Class<?> requestedClass = (Class<?>) type;
 
         // validate input
-        if (adaptable instanceof ResourceResolver) {
-            ResourceResolver resourceResolver = (ResourceResolver)adaptable;
-            if (requestedClass.equals(ResourceResolver.class)) {
-                return resourceResolver;
-            }
-        }
-        else if (adaptable instanceof Resource) {
-            Resource resource = (Resource)adaptable;
-            if (requestedClass.equals(ResourceResolver.class)) {
-                return resource.getResourceResolver();
-            }
-            if (requestedClass.equals(Resource.class) && element.isAnnotationPresent(SlingObject.class)) {
-                return resource;
-            }
-        }
-        SlingHttpServletRequest request = getRequest(adaptable);
-        if (request != null) {
+        if (adaptable instanceof SlingHttpServletRequest) {
+            SlingHttpServletRequest request = (SlingHttpServletRequest) adaptable;
             if (requestedClass.equals(ResourceResolver.class)) {
                 return request.getResourceResolver();
             }
@@ -102,29 +82,31 @@ public final class SlingObjectInjector i
             if (requestedClass.equals(SlingHttpServletRequest.class) || requestedClass.equals(HttpServletRequest.class)) {
                 return request;
             }
-            if (requestedClass.equals(SlingHttpServletResponse.class) || requestedClass.equals(HttpServletResponse.class)) {
+            if (requestedClass.equals(SlingHttpServletResponse.class)
+                    || requestedClass.equals(HttpServletResponse.class)) {
                 return getSlingHttpServletResponse(request);
             }
             if (requestedClass.equals(SlingScriptHelper.class)) {
                 return getSlingScriptHelper(request);
             }
+        } else if (adaptable instanceof ResourceResolver) {
+            ResourceResolver resourceResolver = (ResourceResolver) adaptable;
+            if (requestedClass.equals(ResourceResolver.class)) {
+                return resourceResolver;
+            }
+        } else if (adaptable instanceof Resource) {
+            Resource resource = (Resource) adaptable;
+            if (requestedClass.equals(ResourceResolver.class)) {
+                return resource.getResourceResolver();
+            }
+            if (requestedClass.equals(Resource.class) && element.isAnnotationPresent(SlingObject.class)) {
+                return resource;
+            }
         }
 
         return null;
     }
 
-    private SlingHttpServletRequest getRequest(final Object adaptable) {
-        if (adaptable instanceof SlingHttpServletRequest) {
-            return (SlingHttpServletRequest) adaptable;
-        }
-        else if (requestContext != null) {
-            return requestContext.getThreadRequest();
-        }
-        else {
-            return null;
-        }
-    }
-
     private SlingScriptHelper getSlingScriptHelper(final SlingHttpServletRequest request) {
         SlingBindings bindings = (SlingBindings) request.getAttribute(SlingBindings.class.getName());
         if (bindings != null) {

Modified: sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/test/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorRequestTest.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/test/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorRequestTest.java?rev=1635455&r1=1635454&r2=1635455&view=diff
==============================================================================
--- sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/test/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorRequestTest.java (original)
+++ sling/whiteboard/sseifert/SLING-4112_models_tuning/impl/src/test/java/org/apache/sling/models/impl/injectors/SlingObjectInjectorRequestTest.java Thu Oct 30 10:25:33 2014
@@ -33,10 +33,7 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.api.scripting.SlingBindings;
 import org.apache.sling.api.scripting.SlingScriptHelper;
 import org.apache.sling.models.annotations.injectorspecific.SlingObject;
-import org.apache.sling.testing.mock.sling.ResourceResolverType;
-import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.junit.Before;
-import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -45,88 +42,77 @@ import org.mockito.runners.MockitoJUnitR
 @RunWith(MockitoJUnitRunner.class)
 public class SlingObjectInjectorRequestTest {
 
-    @Rule
-    public SlingContext context = new SlingContext(ResourceResolverType.RESOURCERESOLVER_MOCK);
-    
-    @Mock
-    protected AnnotatedElement annotatedElement;
+    private final SlingObjectInjector injector = new SlingObjectInjector();
+
     @Mock
-    protected SlingHttpServletRequest request;
+    private AnnotatedElement annotatedElement;
     @Mock
-    protected SlingHttpServletResponse response;
+    private SlingHttpServletRequest request;
     @Mock
-    protected SlingScriptHelper scriptHelper;
+    private SlingHttpServletResponse response;
     @Mock
-    protected ResourceResolver resourceResolver;
+    private SlingScriptHelper scriptHelper;
     @Mock
-    protected Resource resource;
+    private ResourceResolver resourceResolver;
     @Mock
-    protected SlingObjectInjectorRequestContext requestContext;
+    private Resource resource;
 
-    protected SlingObjectInjector injector;
-    
     @Before
     public void setUp() {
-        context.registerService(SlingObjectInjectorRequestContext.class, this.requestContext);
-        injector = context.registerInjectActivateService(new SlingObjectInjector());
-        
         SlingBindings bindings = new SlingBindings();
         bindings.put(SlingBindings.SLING, this.scriptHelper);
-        when(this.resource.getResourceResolver()).thenReturn(this.resourceResolver);
         when(this.request.getResourceResolver()).thenReturn(this.resourceResolver);
         when(this.request.getResource()).thenReturn(this.resource);
         when(this.request.getAttribute(SlingBindings.class.getName())).thenReturn(bindings);
         when(this.scriptHelper.getResponse()).thenReturn(this.response);
     }
-    
-    protected Object adaptable() {
-        return this.request;
-    }
 
     @Test
     public void testResourceResolver() {
-        Object result = this.injector.getValue(adaptable(), null, ResourceResolver.class, this.annotatedElement, null);
+        Object result = this.injector.getValue(this.request, null, ResourceResolver.class, this.annotatedElement, null);
         assertSame(this.resourceResolver, result);
     }
 
     @Test
     public void testResource() {
-        Object result = this.injector.getValue(adaptable(), null, Resource.class, this.annotatedElement, null);
+        Object result = this.injector.getValue(this.request, null, Resource.class, this.annotatedElement, null);
         assertNull(result);
 
         when(annotatedElement.isAnnotationPresent(SlingObject.class)).thenReturn(true);
-        result = this.injector.getValue(adaptable(), null, Resource.class, this.annotatedElement, null);
+        result = this.injector.getValue(this.request, null, Resource.class, this.annotatedElement, null);
         assertSame(resource, result);
     }
 
     @Test
     public void testRequest() {
-        Object result = this.injector.getValue(adaptable(), null, SlingHttpServletRequest.class,
+        Object result = this.injector.getValue(this.request, null, SlingHttpServletRequest.class,
                 this.annotatedElement, null);
         assertSame(this.request, result);
 
-        result = this.injector.getValue(adaptable(), null, HttpServletRequest.class, this.annotatedElement, null);
+        result = this.injector.getValue(this.request, null, HttpServletRequest.class, this.annotatedElement, null);
         assertSame(this.request, result);
     }
 
     @Test
     public void testResponse() {
-        Object result = this.injector.getValue(adaptable(), null, SlingHttpServletResponse.class, this.annotatedElement, null);
+        Object result = this.injector.getValue(this.request, null, SlingHttpServletResponse.class,
+                this.annotatedElement, null);
         assertSame(this.response, result);
 
-        result = this.injector.getValue(adaptable(), null, HttpServletResponse.class, this.annotatedElement, null);
+        result = this.injector.getValue(this.request, null, HttpServletResponse.class, this.annotatedElement, null);
         assertSame(this.response, result);
     }
 
     @Test
     public void testScriptHelper() {
-        Object result = this.injector.getValue(adaptable(), null, SlingScriptHelper.class, this.annotatedElement, null);
+        Object result = this.injector
+                .getValue(this.request, null, SlingScriptHelper.class, this.annotatedElement, null);
         assertSame(this.scriptHelper, result);
     }
 
     @Test
     public void testInvalid() {
-        Object result = this.injector.getValue(new StringBuffer(), null, SlingScriptHelper.class, this.annotatedElement, null);
+        Object result = this.injector.getValue(this, null, SlingScriptHelper.class, this.annotatedElement, null);
         assertNull(result);
     }