Java源码示例:org.apache.sling.models.annotations.injectorspecific.SlingObject

示例1
private void addExportedTypeMethod(JDefinedClass jc) {
    if (this.isAllowExporting) {
        JFieldVar jFieldVar = jc.field(PRIVATE, codeModel.ref(Resource.class), "resource");
        jFieldVar.annotate(codeModel.ref(SlingObject.class));
        JMethod method = jc.method(JMod.PUBLIC, codeModel.ref(String.class), "getExportedType");
        method.annotate(codeModel.ref(Override.class));
        method.body()._return(jFieldVar.invoke("getResourceType"));
    }
}
 
示例2
@Override
public InjectAnnotationProcessor2 createAnnotationProcessor(final AnnotatedElement element) {
    // check if the element has the expected annotation
    SlingObject annotation = element.getAnnotation(SlingObject.class);
    if (annotation != null) {
        return new SlingObjectAnnotationProcessor(annotation);
    }
    return null;
}
 
示例3
@Test
public void testResource() {
    Object result = this.injector.getValue(this.resource, null, Resource.class, this.annotatedElement, registry);
    assertNull(result);

    when(annotatedElement.isAnnotationPresent(SlingObject.class)).thenReturn(true);
    result = this.injector.getValue(this.resource, null, Resource.class, this.annotatedElement, registry);
    assertSame(resource, result);
}
 
示例4
@Test
public void testResource() {
    Object result = this.injector.getValue(this.request, null, Resource.class, this.annotatedElement, registry);
    assertNull(result);

    when(annotatedElement.isAnnotationPresent(SlingObject.class)).thenReturn(true);
    result = this.injector.getValue(this.request, null, Resource.class, this.annotatedElement, registry);
    assertSame(resource, result);
}
 
示例5
@Override
public Object getValue(final @NotNull Object adaptable, final String name, final @NotNull Type type, final @NotNull AnnotatedElement element,
        final @NotNull DisposalCallbackRegistry callbackRegistry) {

    // only class types are supported
    if (!(type instanceof Class<?>)) {
        return null;
    }
    Class<?> requestedClass = (Class<?>) type;

    // validate input
    if (adaptable instanceof SlingHttpServletRequest) {
        SlingHttpServletRequest request = (SlingHttpServletRequest) adaptable;
        if (requestedClass.equals(ResourceResolver.class)) {
            return request.getResourceResolver();
        }
        if (requestedClass.equals(Resource.class) && element.isAnnotationPresent(SlingObject.class)) {
            return request.getResource();
        }
        if (requestedClass.equals(SlingHttpServletRequest.class) || requestedClass.equals(HttpServletRequest.class)) {
            return request;
        }
        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;
}
 
示例6
public SlingObjectAnnotationProcessor(final SlingObject annotation) {
    this.annotation = annotation;
}