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);
}