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