diff --git a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestManagerGenerator.java b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestManagerGenerator.java index ebe9894667c7de5d944369d3c6a6d1e3158a70b8..b547295936488ea63cd791f657969369601daae4 100644 --- a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestManagerGenerator.java +++ b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestManagerGenerator.java @@ -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() { @@ -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 generateAdditionalRequestManagerMethods( diff --git a/library/src/main/java/com/bumptech/glide/RequestManager.java b/library/src/main/java/com/bumptech/glide/RequestManager.java index 8275cee2ca60814b2215db1d9ecde30339930e95..18e84d3c700644a17098e44f62a77661015bbb85 100644 --- a/library/src/main/java/com/bumptech/glide/RequestManager.java +++ b/library/src/main/java/com/bumptech/glide/RequestManager.java @@ -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 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 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 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 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 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 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 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 RequestBuilder as(Class resourceClass) { return new RequestBuilder<>(glide, this, resourceClass); }