提交 28e461ec 编写于 作者: S Sam Judd

Add @CheckResult to RequestManager methods.

上级 739cb35b
......@@ -21,6 +21,7 @@ import java.util.List;
import java.util.Set;
import javax.annotation.Nullable;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
......@@ -59,6 +60,8 @@ final class RequestManagerGenerator {
"com.bumptech.glide.manager.Lifecycle";
private static final String REQUEST_MANAGER_TREE_NODE_QUALIFIED_NAME =
"com.bumptech.glide.manager.RequestManagerTreeNode";
private static final ClassName CHECK_RESULT_CLASS_NAME =
ClassName.get("android.support.annotation", "CheckResult");
private static final String GENERATED_REQUEST_MANAGER_SIMPLE_NAME =
"GlideRequests";
......@@ -147,6 +150,7 @@ final class RequestManagerGenerator {
.addAnnotation(Override.class)
.addTypeVariable(TypeVariableName.get("ResourceType"))
.addParameter(classOfResouceType, "resourceClass")
.addAnnotation(AnnotationSpec.builder(CHECK_RESULT_CLASS_NAME).build())
.returns(requestBuilderOfResourceType)
.addStatement("return new $T<>(glide, this, resourceClass)",
this.generatedRequestBuilderClassName)
......@@ -160,10 +164,6 @@ final class RequestManagerGenerator {
TypeMirror rawRequestBuilder = processingEnv.getTypeUtils()
.erasure(requestBuilderType.asType());
final TypeElement classType =
processingEnv.getElementUtils().getTypeElement(Class.class.getCanonicalName());
final TypeMirror rawClassType = processingEnv.getTypeUtils().erasure(classType.asType());
return FluentIterable.from(
processorUtil.findInstanceMethodsReturning(requestManagerType, rawRequestBuilder))
.filter(new Predicate<ExecutableElement>() {
......@@ -195,7 +195,7 @@ final class RequestManagerGenerator {
ParameterizedTypeName generatedRequestBuilderOfType =
ParameterizedTypeName.get(generatedRequestBuilderClassName, ClassName.get(typeArgument));
return MethodSpec.overriding(methodToOverride)
MethodSpec.Builder builder = MethodSpec.overriding(methodToOverride)
.returns(generatedRequestBuilderOfType)
.addCode(CodeBlock.builder()
.add("return ($T) super.$N(",
......@@ -209,8 +209,12 @@ final class RequestManagerGenerator {
})
.join(Joiner.on(", ")))
.add(");\n")
.build())
.build();
.build());
for (AnnotationMirror mirror : methodToOverride.getAnnotationMirrors()) {
builder.addAnnotation(AnnotationSpec.get(mirror));
}
return builder.build();
}
private List<MethodSpec> generateAdditionalRequestManagerMethods(
......
......@@ -9,6 +9,7 @@ import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Looper;
import android.support.annotation.CheckResult;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;
......@@ -292,6 +293,7 @@ public class RequestManager implements LifecycleListener {
*
* @return A new request builder for loading a {@link android.graphics.Bitmap}
*/
@CheckResult
public RequestBuilder<Bitmap> asBitmap() {
return as(Bitmap.class).apply(DECODE_TYPE_BITMAP);
}
......@@ -309,6 +311,7 @@ public class RequestManager implements LifecycleListener {
* @return A new request builder for loading a
* {@link com.bumptech.glide.load.resource.gif.GifDrawable}.
*/
@CheckResult
public RequestBuilder<GifDrawable> asGif() {
return as(GifDrawable.class).apply(DECODE_TYPE_GIF);
}
......@@ -323,6 +326,7 @@ public class RequestManager implements LifecycleListener {
*
* @return A new request builder for loading a {@link Drawable}.
*/
@CheckResult
public RequestBuilder<Drawable> asDrawable() {
return as(Drawable.class);
}
......@@ -333,6 +337,7 @@ public class RequestManager implements LifecycleListener {
*
* @return A new request builder for loading a {@link Drawable} using the given model.
*/
@CheckResult
public RequestBuilder<Drawable> load(@Nullable Object model) {
return asDrawable().load(model);
}
......@@ -348,6 +353,7 @@ public class RequestManager implements LifecycleListener {
*
* @return A new request builder for downloading content to cache and returning the cache File.
*/
@CheckResult
public RequestBuilder<File> downloadOnly() {
return as(File.class).apply(DOWNLOAD_ONLY_OPTIONS);
}
......@@ -358,6 +364,7 @@ public class RequestManager implements LifecycleListener {
*
* @return A new request builder for loading a {@link Drawable} using the given model.
*/
@CheckResult
public RequestBuilder<File> download(@Nullable Object model) {
return downloadOnly().load(model);
}
......@@ -371,6 +378,7 @@ public class RequestManager implements LifecycleListener {
*
* @return A new request builder for obtaining File paths to content.
*/
@CheckResult
public RequestBuilder<File> asFile() {
return as(File.class).apply(skipMemoryCacheOf(true));
}
......@@ -383,6 +391,7 @@ public class RequestManager implements LifecycleListener {
* @param resourceClass The resource to decode.
* @return A new request builder for loading the given resource class.
*/
@CheckResult
public <ResourceType> RequestBuilder<ResourceType> as(Class<ResourceType> resourceClass) {
return new RequestBuilder<>(glide, this, resourceClass);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册