Skip to content

Commit 11530fd

Browse files
sjuddglide-copybara-robot
authored andcommittedDec 16, 2020
Make RequestBuilder consistently support lock and autoClone
Previously these methods worked, but only for the methods in RequestBuilder that came from BaseRequestOptions. This changes makes sure the remaining methods in RequestBuilder (and the generated equivalent) obey those two methods in a consistent manner. PiperOrigin-RevId: 347879132
1 parent 332807a commit 11530fd

File tree

11 files changed

+158
-9
lines changed

11 files changed

+158
-9
lines changed
 

‎annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestBuilderGenerator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ final class RequestBuilderGenerator {
104104
private static final String TRANSCODE_TYPE_NAME = "TranscodeType";
105105
/** A set of method names to avoid overriding from RequestOptions. */
106106
private static final ImmutableSet<String> EXCLUDED_METHODS_FROM_BASE_REQUEST_OPTIONS =
107-
ImmutableSet.of("clone", "apply", "autoLock", "lock", "autoClone");
107+
ImmutableSet.of("clone", "apply");
108108

109109
private final ProcessingEnvironment processingEnv;
110110
private final ProcessorUtil processorUtil;

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

+16
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,22 @@ public GlideRequest<TranscodeType> dontAnimate() {
450450
return (GlideRequest<TranscodeType>) super.dontAnimate();
451451
}
452452

453+
/**
454+
* @see GlideOptions#lock()
455+
*/
456+
@NonNull
457+
public GlideRequest<TranscodeType> lock() {
458+
return (GlideRequest<TranscodeType>) super.lock();
459+
}
460+
461+
/**
462+
* @see GlideOptions#autoClone()
463+
*/
464+
@NonNull
465+
public GlideRequest<TranscodeType> autoClone() {
466+
return (GlideRequest<TranscodeType>) super.autoClone();
467+
}
468+
453469
@Override
454470
@NonNull
455471
@CheckResult

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

+16
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,22 @@ public GlideRequest<TranscodeType> dontAnimate() {
450450
return (GlideRequest<TranscodeType>) super.dontAnimate();
451451
}
452452

453+
/**
454+
* @see GlideOptions#lock()
455+
*/
456+
@NonNull
457+
public GlideRequest<TranscodeType> lock() {
458+
return (GlideRequest<TranscodeType>) super.lock();
459+
}
460+
461+
/**
462+
* @see GlideOptions#autoClone()
463+
*/
464+
@NonNull
465+
public GlideRequest<TranscodeType> autoClone() {
466+
return (GlideRequest<TranscodeType>) super.autoClone();
467+
}
468+
453469
@Override
454470
@NonNull
455471
@CheckResult

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

+16
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,22 @@ public GlideRequest<TranscodeType> dontAnimate() {
441441
return (GlideRequest<TranscodeType>) super.dontAnimate();
442442
}
443443

444+
/**
445+
* @see GlideOptions#lock()
446+
*/
447+
@NonNull
448+
public GlideRequest<TranscodeType> lock() {
449+
return (GlideRequest<TranscodeType>) super.lock();
450+
}
451+
452+
/**
453+
* @see GlideOptions#autoClone()
454+
*/
455+
@NonNull
456+
public GlideRequest<TranscodeType> autoClone() {
457+
return (GlideRequest<TranscodeType>) super.autoClone();
458+
}
459+
444460
@Override
445461
@NonNull
446462
@CheckResult

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

+16
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,22 @@ public GlideRequest<TranscodeType> dontAnimate() {
441441
return (GlideRequest<TranscodeType>) super.dontAnimate();
442442
}
443443

444+
/**
445+
* @see GlideOptions#lock()
446+
*/
447+
@NonNull
448+
public GlideRequest<TranscodeType> lock() {
449+
return (GlideRequest<TranscodeType>) super.lock();
450+
}
451+
452+
/**
453+
* @see GlideOptions#autoClone()
454+
*/
455+
@NonNull
456+
public GlideRequest<TranscodeType> autoClone() {
457+
return (GlideRequest<TranscodeType>) super.autoClone();
458+
}
459+
444460
@Override
445461
@NonNull
446462
@CheckResult

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

+16
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,22 @@ public GlideRequest<TranscodeType> dontAnimate() {
441441
return (GlideRequest<TranscodeType>) super.dontAnimate();
442442
}
443443

444+
/**
445+
* @see GlideOptions#lock()
446+
*/
447+
@NonNull
448+
public GlideRequest<TranscodeType> lock() {
449+
return (GlideRequest<TranscodeType>) super.lock();
450+
}
451+
452+
/**
453+
* @see GlideOptions#autoClone()
454+
*/
455+
@NonNull
456+
public GlideRequest<TranscodeType> autoClone() {
457+
return (GlideRequest<TranscodeType>) super.autoClone();
458+
}
459+
444460
@Override
445461
@NonNull
446462
@CheckResult

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

+16
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,22 @@ public GlideRequest<TranscodeType> dontAnimate() {
450450
return (GlideRequest<TranscodeType>) super.dontAnimate();
451451
}
452452

453+
/**
454+
* @see GlideOptions#lock()
455+
*/
456+
@NonNull
457+
public GlideRequest<TranscodeType> lock() {
458+
return (GlideRequest<TranscodeType>) super.lock();
459+
}
460+
461+
/**
462+
* @see GlideOptions#autoClone()
463+
*/
464+
@NonNull
465+
public GlideRequest<TranscodeType> autoClone() {
466+
return (GlideRequest<TranscodeType>) super.autoClone();
467+
}
468+
453469
@Override
454470
@NonNull
455471
@CheckResult

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

+16
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,22 @@ public GlideRequest<TranscodeType> dontAnimate() {
450450
return (GlideRequest<TranscodeType>) super.dontAnimate();
451451
}
452452

453+
/**
454+
* @see GlideOptions#lock()
455+
*/
456+
@NonNull
457+
public GlideRequest<TranscodeType> lock() {
458+
return (GlideRequest<TranscodeType>) super.lock();
459+
}
460+
461+
/**
462+
* @see GlideOptions#autoClone()
463+
*/
464+
@NonNull
465+
public GlideRequest<TranscodeType> autoClone() {
466+
return (GlideRequest<TranscodeType>) super.autoClone();
467+
}
468+
453469
@Override
454470
@NonNull
455471
@CheckResult

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

+16
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,22 @@ public GlideRequest<TranscodeType> dontAnimate() {
450450
return (GlideRequest<TranscodeType>) super.dontAnimate();
451451
}
452452

453+
/**
454+
* @see GlideOptions#lock()
455+
*/
456+
@NonNull
457+
public GlideRequest<TranscodeType> lock() {
458+
return (GlideRequest<TranscodeType>) super.lock();
459+
}
460+
461+
/**
462+
* @see GlideOptions#autoClone()
463+
*/
464+
@NonNull
465+
public GlideRequest<TranscodeType> autoClone() {
466+
return (GlideRequest<TranscodeType>) super.autoClone();
467+
}
468+
453469
@Override
454470
@NonNull
455471
@CheckResult

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

+27-6
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,12 @@ public RequestBuilder<TranscodeType> apply(@NonNull BaseRequestOptions<?> reques
152152
@CheckResult
153153
public RequestBuilder<TranscodeType> transition(
154154
@NonNull TransitionOptions<?, ? super TranscodeType> transitionOptions) {
155+
if (isAutoCloneEnabled()) {
156+
return clone().transition(transitionOptions);
157+
}
155158
this.transitionOptions = Preconditions.checkNotNull(transitionOptions);
156159
isDefaultTransitionOptionsSet = false;
157-
return this;
160+
return selfOrThrowIfLocked();
158161
}
159162

160163
/**
@@ -173,6 +176,9 @@ public RequestBuilder<TranscodeType> transition(
173176
@SuppressWarnings("unchecked")
174177
public RequestBuilder<TranscodeType> listener(
175178
@Nullable RequestListener<TranscodeType> requestListener) {
179+
if (isAutoCloneEnabled()) {
180+
return clone().listener(requestListener);
181+
}
176182
this.requestListeners = null;
177183
return addListener(requestListener);
178184
}
@@ -188,13 +194,16 @@ public RequestBuilder<TranscodeType> listener(
188194
@CheckResult
189195
public RequestBuilder<TranscodeType> addListener(
190196
@Nullable RequestListener<TranscodeType> requestListener) {
197+
if (isAutoCloneEnabled()) {
198+
return clone().addListener(requestListener);
199+
}
191200
if (requestListener != null) {
192201
if (this.requestListeners == null) {
193202
this.requestListeners = new ArrayList<>();
194203
}
195204
this.requestListeners.add(requestListener);
196205
}
197-
return this;
206+
return selfOrThrowIfLocked();
198207
}
199208

200209
/**
@@ -221,8 +230,11 @@ public RequestBuilder<TranscodeType> addListener(
221230
*/
222231
@NonNull
223232
public RequestBuilder<TranscodeType> error(@Nullable RequestBuilder<TranscodeType> errorBuilder) {
233+
if (isAutoCloneEnabled()) {
234+
return clone().error(errorBuilder);
235+
}
224236
this.errorBuilder = errorBuilder;
225-
return this;
237+
return selfOrThrowIfLocked();
226238
}
227239

228240
/**
@@ -279,9 +291,12 @@ private RequestBuilder<TranscodeType> cloneWithNullErrorAndThumbnail() {
279291
@SuppressWarnings("unchecked")
280292
public RequestBuilder<TranscodeType> thumbnail(
281293
@Nullable RequestBuilder<TranscodeType> thumbnailRequest) {
294+
if (isAutoCloneEnabled()) {
295+
return clone().thumbnail(thumbnailRequest);
296+
}
282297
this.thumbnailBuilder = thumbnailRequest;
283298

284-
return this;
299+
return selfOrThrowIfLocked();
285300
}
286301

287302
/**
@@ -413,12 +428,15 @@ public RequestBuilder<TranscodeType> thumbnail(
413428
@CheckResult
414429
@SuppressWarnings("unchecked")
415430
public RequestBuilder<TranscodeType> thumbnail(float sizeMultiplier) {
431+
if (isAutoCloneEnabled()) {
432+
return clone().thumbnail(sizeMultiplier);
433+
}
416434
if (sizeMultiplier < 0f || sizeMultiplier > 1f) {
417435
throw new IllegalArgumentException("sizeMultiplier must be between 0 and 1");
418436
}
419437
this.thumbSizeMultiplier = sizeMultiplier;
420438

421-
return this;
439+
return selfOrThrowIfLocked();
422440
}
423441

424442
/**
@@ -437,9 +455,12 @@ public RequestBuilder<TranscodeType> load(@Nullable Object model) {
437455

438456
@NonNull
439457
private RequestBuilder<TranscodeType> loadGeneric(@Nullable Object model) {
458+
if (isAutoCloneEnabled()) {
459+
return clone().loadGeneric(model);
460+
}
440461
this.model = model;
441462
isModelSet = true;
442-
return this;
463+
return selfOrThrowIfLocked();
443464
}
444465
/**
445466
* Returns an object to load the given {@link Bitmap}.

‎library/src/main/java/com/bumptech/glide/request/BaseRequestOptions.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1283,14 +1283,14 @@ public T autoClone() {
12831283

12841284
@NonNull
12851285
@SuppressWarnings("unchecked")
1286-
private T selfOrThrowIfLocked() {
1286+
protected final T selfOrThrowIfLocked() {
12871287
if (isLocked) {
12881288
throw new IllegalStateException("You cannot modify locked T, consider clone()");
12891289
}
12901290
return self();
12911291
}
12921292

1293-
protected boolean isAutoCloneEnabled() {
1293+
protected final boolean isAutoCloneEnabled() {
12941294
return isAutoCloneEnabled;
12951295
}
12961296

0 commit comments

Comments
 (0)
Please sign in to comment.