Skip to content

Commit d1aacb5

Browse files
sjuddglide-copybara-robot
authored andcommitted
Add shortcut for starting an identical error request with a different model.
PiperOrigin-RevId: 343195456
1 parent b451065 commit d1aacb5

File tree

9 files changed

+93
-0
lines changed

9 files changed

+93
-0
lines changed

annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GlideRequest.java

+7
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,13 @@ public GlideRequest<TranscodeType> error(@Nullable RequestBuilder<TranscodeType>
484484
return (GlideRequest<TranscodeType>) super.error(builder);
485485
}
486486

487+
@Override
488+
@NonNull
489+
@CheckResult
490+
public GlideRequest<TranscodeType> error(Object o) {
491+
return (GlideRequest<TranscodeType>) super.error(o);
492+
}
493+
487494
@Override
488495
@NonNull
489496
@CheckResult

annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/MemoizeStaticMethod/GlideRequest.java

+7
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,13 @@ public GlideRequest<TranscodeType> error(@Nullable RequestBuilder<TranscodeType>
484484
return (GlideRequest<TranscodeType>) super.error(builder);
485485
}
486486

487+
@Override
488+
@NonNull
489+
@CheckResult
490+
public GlideRequest<TranscodeType> error(Object o) {
491+
return (GlideRequest<TranscodeType>) super.error(o);
492+
}
493+
487494
@Override
488495
@NonNull
489496
@CheckResult

annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtend/GlideRequest.java

+7
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,13 @@ public GlideRequest<TranscodeType> error(@Nullable RequestBuilder<TranscodeType>
475475
return (GlideRequest<TranscodeType>) super.error(builder);
476476
}
477477

478+
@Override
479+
@NonNull
480+
@CheckResult
481+
public GlideRequest<TranscodeType> error(Object o) {
482+
return (GlideRequest<TranscodeType>) super.error(o);
483+
}
484+
478485
@Override
479486
@NonNull
480487
@CheckResult

annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtendMultipleArguments/GlideRequest.java

+7
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,13 @@ public GlideRequest<TranscodeType> error(@Nullable RequestBuilder<TranscodeType>
475475
return (GlideRequest<TranscodeType>) super.error(builder);
476476
}
477477

478+
@Override
479+
@NonNull
480+
@CheckResult
481+
public GlideRequest<TranscodeType> error(Object o) {
482+
return (GlideRequest<TranscodeType>) super.error(o);
483+
}
484+
478485
@Override
479486
@NonNull
480487
@CheckResult

annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideReplace/GlideRequest.java

+7
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,13 @@ public GlideRequest<TranscodeType> error(@Nullable RequestBuilder<TranscodeType>
475475
return (GlideRequest<TranscodeType>) super.error(builder);
476476
}
477477

478+
@Override
479+
@NonNull
480+
@CheckResult
481+
public GlideRequest<TranscodeType> error(Object o) {
482+
return (GlideRequest<TranscodeType>) super.error(o);
483+
}
484+
478485
@Override
479486
@NonNull
480487
@CheckResult

annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/SkipStaticMethod/GlideRequest.java

+7
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,13 @@ public GlideRequest<TranscodeType> error(@Nullable RequestBuilder<TranscodeType>
484484
return (GlideRequest<TranscodeType>) super.error(builder);
485485
}
486486

487+
@Override
488+
@NonNull
489+
@CheckResult
490+
public GlideRequest<TranscodeType> error(Object o) {
491+
return (GlideRequest<TranscodeType>) super.error(o);
492+
}
493+
487494
@Override
488495
@NonNull
489496
@CheckResult

annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/StaticMethodName/GlideRequest.java

+7
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,13 @@ public GlideRequest<TranscodeType> error(@Nullable RequestBuilder<TranscodeType>
484484
return (GlideRequest<TranscodeType>) super.error(builder);
485485
}
486486

487+
@Override
488+
@NonNull
489+
@CheckResult
490+
public GlideRequest<TranscodeType> error(Object o) {
491+
return (GlideRequest<TranscodeType>) super.error(o);
492+
}
493+
487494
@Override
488495
@NonNull
489496
@CheckResult

annotation/compiler/test/src/test/resources/GlideExtensionWithOptionTest/GlideRequest.java

+7
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,13 @@ public GlideRequest<TranscodeType> error(@Nullable RequestBuilder<TranscodeType>
484484
return (GlideRequest<TranscodeType>) super.error(builder);
485485
}
486486

487+
@Override
488+
@NonNull
489+
@CheckResult
490+
public GlideRequest<TranscodeType> error(Object o) {
491+
return (GlideRequest<TranscodeType>) super.error(o);
492+
}
493+
487494
@Override
488495
@NonNull
489496
@CheckResult

library/src/main/java/com/bumptech/glide/RequestBuilder.java

+37
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,43 @@ public RequestBuilder<TranscodeType> error(@Nullable RequestBuilder<TranscodeTyp
225225
return this;
226226
}
227227

228+
/**
229+
* Identical to calling {@link #error(RequestBuilder)} where the {@code RequestBuilder} is the
230+
* result of calling {@link #clone()} and removing any existing thumbnail and error {@code
231+
* RequestBuilders}
232+
*
233+
* <p>You can only call this method on a {@code RequestBuilder} that has previously had {@code
234+
* load()} called on it with a non-null model. .
235+
*
236+
* <p>Other than thumbnail and error {@code RequestBuilder}s, which are removed, all other options
237+
* are retained from the primary request. However, <b>order matters!</b> Any options applied after
238+
* this method is called will not be applied to the error {@code RequestBuilder}. We should move
239+
*/
240+
@NonNull
241+
@CheckResult
242+
public RequestBuilder<TranscodeType> error(Object model) {
243+
if (model == null) {
244+
return error((RequestBuilder<TranscodeType>) null);
245+
}
246+
if (this.model == null) {
247+
throw new IllegalArgumentException(
248+
"Call this method after calling #load() with a non-null" + " model.");
249+
}
250+
if (!this.model.getClass().isAssignableFrom(model.getClass())) {
251+
throw new IllegalArgumentException(
252+
"You can only call #error(Object) with the same type of"
253+
+ " model that you provided to #load(). If you need to load a different type, use the"
254+
+ " somewhat more verbose #error(RequestBuilder) method instead of this shortcut");
255+
}
256+
return error(cloneWithNullErrorAndThumbnail().load(model));
257+
}
258+
259+
private RequestBuilder<TranscodeType> cloneWithNullErrorAndThumbnail() {
260+
return clone()
261+
.error((RequestBuilder<TranscodeType>) null)
262+
.thumbnail((RequestBuilder<TranscodeType>) null);
263+
}
264+
228265
/**
229266
* Loads and displays the resource retrieved by the given thumbnail request if it finishes before
230267
* this request. Best used for loading thumbnail resources that are smaller and will be loaded

0 commit comments

Comments
 (0)