Skip to content

Commit 67b01f6

Browse files
sjuddglide-copybara-robot
authored andcommittedJul 7, 2020
Add thumbnail method that takes in a list
PiperOrigin-RevId: 320059478
1 parent d84034d commit 67b01f6

File tree

9 files changed

+105
-2
lines changed

9 files changed

+105
-2
lines changed
 

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

+8
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.bumptech.glide.request.RequestListener;
2828
import java.io.File;
2929
import java.net.URL;
30+
import java.util.List;
3031

3132
/**
3233
* Contains all public methods from {@link RequestBuilder<TranscodeType>}, all options from
@@ -499,6 +500,13 @@ public final GlideRequest<TranscodeType> thumbnail(@Nullable RequestBuilder<Tran
499500
return (GlideRequest<TranscodeType>) super.thumbnail(builders);
500501
}
501502

503+
@Override
504+
@NonNull
505+
@CheckResult
506+
public GlideRequest<TranscodeType> thumbnail(@Nullable List<RequestBuilder<TranscodeType>> list) {
507+
return (GlideRequest<TranscodeType>) super.thumbnail(list);
508+
}
509+
502510
@Override
503511
@NonNull
504512
@CheckResult

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

+8
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.bumptech.glide.request.RequestListener;
2828
import java.io.File;
2929
import java.net.URL;
30+
import java.util.List;
3031

3132
/**
3233
* Contains all public methods from {@link RequestBuilder<TranscodeType>}, all options from
@@ -499,6 +500,13 @@ public final GlideRequest<TranscodeType> thumbnail(@Nullable RequestBuilder<Tran
499500
return (GlideRequest<TranscodeType>) super.thumbnail(builders);
500501
}
501502

503+
@Override
504+
@NonNull
505+
@CheckResult
506+
public GlideRequest<TranscodeType> thumbnail(@Nullable List<RequestBuilder<TranscodeType>> list) {
507+
return (GlideRequest<TranscodeType>) super.thumbnail(list);
508+
}
509+
502510
@Override
503511
@NonNull
504512
@CheckResult

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

+8
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.bumptech.glide.request.RequestListener;
2828
import java.io.File;
2929
import java.net.URL;
30+
import java.util.List;
3031

3132
/**
3233
* Contains all public methods from {@link RequestBuilder<TranscodeType>}, all options from
@@ -490,6 +491,13 @@ public final GlideRequest<TranscodeType> thumbnail(@Nullable RequestBuilder<Tran
490491
return (GlideRequest<TranscodeType>) super.thumbnail(builders);
491492
}
492493

494+
@Override
495+
@NonNull
496+
@CheckResult
497+
public GlideRequest<TranscodeType> thumbnail(@Nullable List<RequestBuilder<TranscodeType>> list) {
498+
return (GlideRequest<TranscodeType>) super.thumbnail(list);
499+
}
500+
493501
@Override
494502
@NonNull
495503
@CheckResult

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

+8
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.bumptech.glide.request.RequestListener;
2828
import java.io.File;
2929
import java.net.URL;
30+
import java.util.List;
3031

3132
/**
3233
* Contains all public methods from {@link RequestBuilder<TranscodeType>}, all options from
@@ -490,6 +491,13 @@ public final GlideRequest<TranscodeType> thumbnail(@Nullable RequestBuilder<Tran
490491
return (GlideRequest<TranscodeType>) super.thumbnail(builders);
491492
}
492493

494+
@Override
495+
@NonNull
496+
@CheckResult
497+
public GlideRequest<TranscodeType> thumbnail(@Nullable List<RequestBuilder<TranscodeType>> list) {
498+
return (GlideRequest<TranscodeType>) super.thumbnail(list);
499+
}
500+
493501
@Override
494502
@NonNull
495503
@CheckResult

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

+8
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.bumptech.glide.request.RequestListener;
2828
import java.io.File;
2929
import java.net.URL;
30+
import java.util.List;
3031

3132
/**
3233
* Contains all public methods from {@link RequestBuilder<TranscodeType>}, all options from
@@ -490,6 +491,13 @@ public final GlideRequest<TranscodeType> thumbnail(@Nullable RequestBuilder<Tran
490491
return (GlideRequest<TranscodeType>) super.thumbnail(builders);
491492
}
492493

494+
@Override
495+
@NonNull
496+
@CheckResult
497+
public GlideRequest<TranscodeType> thumbnail(@Nullable List<RequestBuilder<TranscodeType>> list) {
498+
return (GlideRequest<TranscodeType>) super.thumbnail(list);
499+
}
500+
493501
@Override
494502
@NonNull
495503
@CheckResult

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

+8
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.bumptech.glide.request.RequestListener;
2828
import java.io.File;
2929
import java.net.URL;
30+
import java.util.List;
3031

3132
/**
3233
* Contains all public methods from {@link RequestBuilder<TranscodeType>}, all options from
@@ -499,6 +500,13 @@ public final GlideRequest<TranscodeType> thumbnail(@Nullable RequestBuilder<Tran
499500
return (GlideRequest<TranscodeType>) super.thumbnail(builders);
500501
}
501502

503+
@Override
504+
@NonNull
505+
@CheckResult
506+
public GlideRequest<TranscodeType> thumbnail(@Nullable List<RequestBuilder<TranscodeType>> list) {
507+
return (GlideRequest<TranscodeType>) super.thumbnail(list);
508+
}
509+
502510
@Override
503511
@NonNull
504512
@CheckResult

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

+8
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.bumptech.glide.request.RequestListener;
2828
import java.io.File;
2929
import java.net.URL;
30+
import java.util.List;
3031

3132
/**
3233
* Contains all public methods from {@link RequestBuilder<TranscodeType>}, all options from
@@ -499,6 +500,13 @@ public final GlideRequest<TranscodeType> thumbnail(@Nullable RequestBuilder<Tran
499500
return (GlideRequest<TranscodeType>) super.thumbnail(builders);
500501
}
501502

503+
@Override
504+
@NonNull
505+
@CheckResult
506+
public GlideRequest<TranscodeType> thumbnail(@Nullable List<RequestBuilder<TranscodeType>> list) {
507+
return (GlideRequest<TranscodeType>) super.thumbnail(list);
508+
}
509+
502510
@Override
503511
@NonNull
504512
@CheckResult

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

+8
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.bumptech.glide.request.RequestListener;
2828
import java.io.File;
2929
import java.net.URL;
30+
import java.util.List;
3031

3132
/**
3233
* Contains all public methods from {@link RequestBuilder<TranscodeType>}, all options from
@@ -499,6 +500,13 @@ public final GlideRequest<TranscodeType> thumbnail(@Nullable RequestBuilder<Tran
499500
return (GlideRequest<TranscodeType>) super.thumbnail(builders);
500501
}
501502

503+
@Override
504+
@NonNull
505+
@CheckResult
506+
public GlideRequest<TranscodeType> thumbnail(@Nullable List<RequestBuilder<TranscodeType>> list) {
507+
return (GlideRequest<TranscodeType>) super.thumbnail(list);
508+
}
509+
502510
@Override
503511
@NonNull
504512
@CheckResult

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

+41-2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import java.io.File;
3939
import java.net.URL;
4040
import java.util.ArrayList;
41+
import java.util.Arrays;
4142
import java.util.List;
4243
import java.util.concurrent.Executor;
4344

@@ -286,14 +287,52 @@ public RequestBuilder<TranscodeType> thumbnail(
286287
return thumbnail((RequestBuilder<TranscodeType>) null);
287288
}
288289

290+
return thumbnail(Arrays.asList(thumbnails));
291+
}
292+
293+
/**
294+
* Recursively applies {@link #thumbnail(RequestBuilder)} so that the {@link RequestBuilder}s are
295+
* loaded as thumbnails in the given priority order.
296+
*
297+
* <p>{@link #thumbnail(RequestBuilder)} is applied in the order given so that the {@link
298+
* RequestBuilder} at position 0 has the {@link RequestBuilder} at position 1 applied as using its
299+
* thumbnail method, the {@link RequestBuilder} at position 1 has the {@link RequestBuilder} at
300+
* position 2 applied using its thumbnail method and so on.
301+
*
302+
* <p>Calling this method with a {@code null} list of {@link RequestBuilder} thumbnails or an
303+
* empty list of {@link RequestBuilder} thumbnails is equivalent to calling {@link
304+
* #thumbnail(RequestBuilder)} with {@code null}.
305+
*
306+
* <p>Any individual {@link RequestBuilder} in the list of thumbnails provided here may be {@code
307+
* null}. {@code null} {@link RequestBuilder}s are ignored and excluded from the recursive chain.
308+
*
309+
* <p>The {@link RequestBuilder} objects provided here may be mutated and have any previous calls
310+
* to this method or {@link #thumbnail(RequestBuilder)} methods overridden.
311+
*
312+
* <p>Overrides any previous calls to {@link #thumbnail(RequestBuilder)}, {@link
313+
* #thumbnail(float)} and this method.
314+
*
315+
* @see #thumbnail(float)
316+
* @see #thumbnail(RequestBuilder)
317+
* @return This request builder.
318+
*/
319+
@SuppressWarnings({"CheckResult", "unchecked"})
320+
@NonNull
321+
@CheckResult
322+
public RequestBuilder<TranscodeType> thumbnail(
323+
@Nullable List<RequestBuilder<TranscodeType>> thumbnails) {
324+
if (thumbnails == null || thumbnails.isEmpty()) {
325+
return thumbnail((RequestBuilder<TranscodeType>) null);
326+
}
327+
289328
RequestBuilder<TranscodeType> previous = null;
290329

291330
// Start with the lowest priority thumbnail so that we can safely handle mutations if
292331
// autoClone() is enabled by assigning the result of calling thumbnail() during the iteration.
293332
// Starting with the highest priority thumbnail would prevent us from assigning the result of
294333
// thumbnail because the mutated request wouldn't be used in the next iteration.
295-
for (int i = thumbnails.length - 1; i >= 0; i--) {
296-
RequestBuilder<TranscodeType> current = thumbnails[i];
334+
for (int i = thumbnails.size() - 1; i >= 0; i--) {
335+
RequestBuilder<TranscodeType> current = thumbnails.get(i);
297336
// Ignore null thumbnails.
298337
if (current == null) {
299338
continue;

0 commit comments

Comments
 (0)
Please sign in to comment.