diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 3ae9064c51..9a4133be1c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -5,21 +5,53 @@ on:
pull_request:
jobs:
- build:
- runs-on: ubuntu-latest
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout project
+ uses: actions/checkout@v4
- steps:
- - uses: actions/checkout@v2
- - name: Set up JDK 1.8
- uses: actions/setup-java@v1
- with:
- java-version: '1.8'
- - name: Build and run unit tests with Gradle
- run: ./scripts/ci_unit.sh
- - name: Publish to Sonatype
- env:
- NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }}
- NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
- if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'bumptech/glide' }}
- run: ./gradlew uploadArchives -PNEXUS_USERNAME="${NEXUS_USERNAME}" -PNEXUS_PASSWORD="${NEXUS_PASSWORD}"
+ - name: Setup Java
+ uses: actions/setup-java@v4
+ with:
+ distribution: "zulu"
+ java-version: "17"
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@v4
+
+ - name: Run Gradle Build
+ run: |
+ ./gradlew build \
+ -x :library:test:testDebugUnitTest \
+ :library:test:assembleDebugUnitTest \
+ -x :library:testDebugUnitTest \
+ :library:assembleDebugUnitTest \
+ -x :annotation:ksp:test:testDebugUnitTest \
+ :annotation:ksp:test:assembleDebugUnitTest \
+ -x :third_party:disklrucache:testDebugUnitTest \
+ :third_party:disklrucache:assembleDebugUnitTest \
+ -x :integration:cronet:testDebugUnitTest \
+ :integration:cronet:assembleDebugUnitTest \
+ -x :integration:gifencoder:testDebugUnitTest \
+ :integration:gifencoder:assembleDebugUnitTest \
+ -x :integration:ktx:testDebugUnitTest \
+ :integration:ktx:assembleDebugUnitTest \
+ -x :integration:concurrent:testDebugUnitTest \
+ :integration:concurrent:assembleDebugUnitTest \
+ -x :integration:volley:testDebugUnitTest \
+ :integration:volley:assembleDebugUnitTest \
+ -x :integration:sqljournaldiskcache:testDebugUnitTest \
+ :integration:sqljournaldiskcache:assembleDebugUnitTest \
+ -x :third_party:gif_decoder:testDebugUnitTest \
+ :third_party:gif_decoder:assembleDebugUnitTest \
+ :samples:flickr:build \
+ :samples:giphy:build \
+ :samples:contacturi:build \
+ :samples:gallery:build \
+ :samples:imgur:build \
+ :samples:svg:build \
+ :instrumentation:assembleAndroidTest \
+ :benchmark:assembleAndroidTest \
+ :glide:releaseJavadoc \
+ --parallel
diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml
deleted file mode 100644
index 405a2b3065..0000000000
--- a/.github/workflows/gradle-wrapper-validation.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-name: "Validate Gradle Wrapper"
-on: [push, pull_request]
-
-jobs:
- validation:
- name: "Validation"
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: gradle/wrapper-validation-action@v1
diff --git a/.github/workflows/publish-manual.yml b/.github/workflows/publish-manual.yml
new file mode 100644
index 0000000000..7bf8b05aa7
--- /dev/null
+++ b/.github/workflows/publish-manual.yml
@@ -0,0 +1,28 @@
+name: Publish to Maven (manual)
+
+on:
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout project
+ uses: actions/checkout@v4
+ - name: Make Gradle wrapper executable
+ run: chmod +x ./gradlew
+ - uses: actions/setup-java@v4
+ with:
+ distribution: "zulu"
+ java-version: "17"
+ - name: Build and publish everything to Maven Central
+ # This can be improved in Gradle
+ run: ./gradlew :mocks:publishToMavenCentral :annotation:publishToMavenCentral :annotation:compiler:publishToMavenCentral :library:publishToMavenCentral :integration:sqljournaldiskcache:publishToMavenCentral :annotation:ksp:publishToMavenCentral :integration:recyclerview:publishToMavenCentral :integration:avif:publishToMavenCentral :integration:okhttp:publishToMavenCentral :integration:gifencoder:publishToMavenCentral :integration:ktx:publishToMavenCentral :integration:okhttp4:publishToMavenCentral :integration:volley:publishToMavenCentral :integration:concurrent:publishToMavenCentral :integration:cronet:publishToMavenCentral :integration:okhttp3:publishToMavenCentral :integration:compose:publishToMavenCentral :third_party:disklrucache:publishToMavenCentral :third_party:gif_decoder:publishToMavenCentral
+ env:
+ ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
+ ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
+ ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.MAVEN_SIGNING_KEY_ID }}
+ ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.MAVEN_SIGNING_PRIVATE_KEY }}
+ ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.MAVEN_SIGNING_PRIVATE_KEY_PASSWORD }}
+ ORG_GRADLE_PROJECT_mavenCentralPublishing: true
+ ORG_GRADLE_PROJECT_mavenCentralAutomaticPublishing: false
diff --git a/README.md b/README.md
index 47cca31bbc..828f484b58 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
Glide
=====
-[](https://maven-badges.herokuapp.com/maven-central/com.github.bumptech.glide/glide) [](https://travis-ci.org/bumptech/glide)
+[](https://maven-badges.herokuapp.com/maven-central/com.github.bumptech.glide/glide)
| [View Glide's documentation][20] | [简体中文文档][22] | [Report an issue with Glide][5]
Glide is a fast and efficient open source media management and image loading framework for Android that wraps media
@@ -26,13 +26,12 @@ Or use Gradle:
```gradle
repositories {
- google()
+ google()
mavenCentral()
}
dependencies {
- implementation 'com.github.bumptech.glide:glide:4.12.0'
- annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
+ implementation 'com.github.bumptech.glide:glide:5.0.5'
}
```
@@ -42,38 +41,15 @@ Or Maven:
com.github.bumptech.glide
glide
- 4.12.0
-
-
- com.github.bumptech.glide
- compiler
- 4.12.0
- true
+ 5.0.5
```
For info on using the bleeding edge, see the [Snapshots][17] docs page.
-ProGuard
+R8 / Proguard
--------
-Depending on your ProGuard (DexGuard) config and usage, you may need to include the following lines in your proguard.cfg (see the [Download and Setup docs page][25] for more details):
-
-```pro
--keep public class * implements com.bumptech.glide.module.GlideModule
--keep class * extends com.bumptech.glide.module.AppGlideModule {
- (...);
-}
--keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
- **[] $VALUES;
- public *;
-}
--keep class com.bumptech.glide.load.data.ParcelFileDescriptorRewinder$InternalRewinder {
- *** rewind();
-}
-
-# for DexGuard only
--keepresourcexmlelements manifest/application/meta-data@value=GlideModule
-```
+The specific rules are [already bundled](library/proguard-rules.txt) into the aar which can be interpreted by R8 automatically
How do I use Glide?
-------------------
@@ -89,7 +65,7 @@ Simple use cases will look something like this:
...
ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
- Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
+ Glide.with(this).load("https://goo.gl/gEgYUd").into(imageView);
}
// For a simple image list:
diff --git a/annotation/build.gradle b/annotation/build.gradle
deleted file mode 100644
index d6a7f76df6..0000000000
--- a/annotation/build.gradle
+++ /dev/null
@@ -1,3 +0,0 @@
-apply plugin: 'java'
-
-apply from: "${rootProject.projectDir}/scripts/upload.gradle"
\ No newline at end of file
diff --git a/annotation/build.gradle.kts b/annotation/build.gradle.kts
new file mode 100644
index 0000000000..d2101c300f
--- /dev/null
+++ b/annotation/build.gradle.kts
@@ -0,0 +1,10 @@
+plugins {
+ id("java")
+}
+
+apply(from = "${rootProject.projectDir}/scripts/upload.gradle.kts")
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+}
\ No newline at end of file
diff --git a/annotation/compiler/build.gradle b/annotation/compiler/build.gradle
deleted file mode 100644
index 453d9877a8..0000000000
--- a/annotation/compiler/build.gradle
+++ /dev/null
@@ -1,93 +0,0 @@
-import org.gradle.internal.jvm.Jvm
-import proguard.gradle.ProGuardTask
-
-apply plugin: 'java'
-
-configurations {
- // adapted from https://android.googlesource.com/platform/frameworks/testing/+/976c423/espresso/espresso-lib/build.gradle
- // compileOnly dependencies will be repackaged, see rules in jarjar ant task below
- jarjar
-}
-
-dependencies {
- // from https://code.google.com/archive/p/jarjar/downloads
- jarjar files('libs/jarjar-1.4.jar')
-
- compileOnly "com.squareup:javapoet:${JAVAPOET_VERSION}"
- compileOnly "com.google.auto.service:auto-service:${AUTO_SERVICE_VERSION}"
- compileOnly "com.google.code.findbugs:jsr305:${JSR_305_VERSION}"
- compile project(':annotation')
- // This is to support com.sun.tools.javac.util.List, currently used in RootModuleGenerator.
- compile files(Jvm.current().getToolsJar())
- annotationProcessor "com.google.auto.service:auto-service:${AUTO_SERVICE_VERSION}"
-}
-
-// Make sure running `gradlew :annotation:compiler:check` actually does full quality control.
-test.dependsOn ':annotation:compiler:test:test'
-
-def packagingFolder = file("${buildDir}/intermediates")
-def repackagedJar = file("${packagingFolder}/repackaged.jar")
-def proguardedJar = file("${packagingFolder}/proguarded.jar")
-
-task compiledJar(type: Jar, dependsOn: classes) {
- destinationDir = packagingFolder
- archiveName = 'compiled.jar'
- from sourceSets.main.output
-}
-
-// Repackage compileOnly dependencies to avoid namespace collisions.
-task jarjar(dependsOn: [tasks.compiledJar, configurations.compileOnly]) {
- // Set up inputs and outputs to only rebuild when necessary (code change, dependency change).
- inputs.files compiledJar
- inputs.files configurations.compileOnly
- outputs.file repackagedJar
-
- doFirst {
- ant {
- taskdef name: 'jarjar',
- classname: 'com.tonicsystems.jarjar.JarJarTask',
- classpath: configurations.jarjar.asPath
-
- jarjar(jarfile: repackagedJar) {
- configurations.compileOnly.resolve().each {
- zipfileset(src: it.absolutePath, excludes: [
- 'META-INF/maven/**',
- 'META-INF/services/javax.annotation.processing.Processor'
- ].join(','))
- }
- zipfileset(src: tasks.compiledJar.archivePath)
- def repackageIntoGlide = 'com.bumptech.glide.repackaged.@0'
- rule result: repackageIntoGlide, pattern: 'com.squareup.javapoet.**'
- rule result: repackageIntoGlide, pattern: 'com.google.auto.**'
- rule result: repackageIntoGlide, pattern: 'com.google.common.**'
- rule result: repackageIntoGlide, pattern: 'com.google.thirdparty.publicsuffix.**'
- }
- }
- }
-}
-
-// Proguard repackaged dependencies to reduce the binary size.
-task proguard(type: ProGuardTask, dependsOn: tasks.jarjar) {
- configuration 'proguard.pro'
-
- injars repackagedJar
- outjars proguardedJar
-
- libraryjars files(configurations.compile.collect())
- libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
-}
-
-// Replace the contents of the standard jar task with those from our our compiled, repackaged and
-// proguarded jar. Replacing the task itself is possible and looks simpler, but requires
-// reconstructing the task dependency chain and is more complex in practice.
-jar {
- dependsOn proguard
- from zipTree(proguardedJar)
- exclude { entry ->
- sourceSets.main.output.files*.absolutePath.any {
- entry.file.absolutePath.startsWith it
- }
- }
-}
-
-apply from: "${rootProject.projectDir}/scripts/upload.gradle"
diff --git a/annotation/compiler/build.gradle.kts b/annotation/compiler/build.gradle.kts
new file mode 100644
index 0000000000..80ff26b674
--- /dev/null
+++ b/annotation/compiler/build.gradle.kts
@@ -0,0 +1,20 @@
+plugins {
+ id("java")
+}
+
+dependencies {
+ implementation(libs.javapoet)
+ implementation(libs.guava)
+
+ compileOnly(libs.autoservice)
+ compileOnly(libs.findbugs.jsr305)
+
+ implementation(project(":annotation"))
+ annotationProcessor(libs.autoservice)
+}
+
+tasks.withType {
+ isFailOnError = false
+}
+
+apply(from = "${rootProject.projectDir}/scripts/upload.gradle.kts")
\ No newline at end of file
diff --git a/annotation/compiler/libs/jarjar-1.4.jar b/annotation/compiler/libs/jarjar-1.4.jar
deleted file mode 100644
index 68b9db9aa5..0000000000
Binary files a/annotation/compiler/libs/jarjar-1.4.jar and /dev/null differ
diff --git a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/ExtensionProcessor.java b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/ExtensionProcessor.java
index 0e0ebfd1d9..3d9c1bb220 100644
--- a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/ExtensionProcessor.java
+++ b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/ExtensionProcessor.java
@@ -21,10 +21,12 @@ final class ExtensionProcessor {
ExtensionProcessor(
ProcessingEnvironment processingEnvironment,
ProcessorUtil processorUtil,
- IndexerGenerator indexerGenerator) {
+ IndexerGenerator indexerGenerator,
+ boolean useLegacyTypeComparison) {
this.processorUtil = processorUtil;
this.indexerGenerator = indexerGenerator;
- extensionValidator = new GlideExtensionValidator(processingEnvironment, processorUtil);
+ extensionValidator =
+ new GlideExtensionValidator(processingEnvironment, processorUtil, useLegacyTypeComparison);
}
boolean processExtensions(RoundEnvironment env) {
diff --git a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/GlideAnnotationProcessor.java b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/GlideAnnotationProcessor.java
index ad1e86d34f..4514dcab17 100644
--- a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/GlideAnnotationProcessor.java
+++ b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/GlideAnnotationProcessor.java
@@ -2,6 +2,7 @@
import com.bumptech.glide.annotation.GlideType;
import com.google.auto.service.AutoService;
+import com.google.common.collect.ImmutableSet;
import java.util.HashSet;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
@@ -62,11 +63,13 @@
@AutoService(Processor.class)
public final class GlideAnnotationProcessor extends AbstractProcessor {
static final boolean DEBUG = false;
+ private static final String USE_LEGACY_TYPE_COMPARISON_OPTION = "glide.useLegacyTypeComparison";
private ProcessorUtil processorUtil;
private LibraryModuleProcessor libraryModuleProcessor;
private AppModuleProcessor appModuleProcessor;
private boolean isGeneratedAppGlideModuleWritten;
private ExtensionProcessor extensionProcessor;
+ private boolean useLegacyTypeComparison;
@Override
public synchronized void init(ProcessingEnvironment processingEnvironment) {
@@ -75,8 +78,17 @@ public synchronized void init(ProcessingEnvironment processingEnvironment) {
IndexerGenerator indexerGenerator = new IndexerGenerator(processorUtil);
libraryModuleProcessor = new LibraryModuleProcessor(processorUtil, indexerGenerator);
appModuleProcessor = new AppModuleProcessor(processingEnvironment, processorUtil);
+ useLegacyTypeComparison =
+ Boolean.parseBoolean(
+ processingEnvironment.getOptions().get(USE_LEGACY_TYPE_COMPARISON_OPTION));
extensionProcessor =
- new ExtensionProcessor(processingEnvironment, processorUtil, indexerGenerator);
+ new ExtensionProcessor(
+ processingEnvironment, processorUtil, indexerGenerator, useLegacyTypeComparison);
+ }
+
+ @Override
+ public Set getSupportedOptions() {
+ return ImmutableSet.of(USE_LEGACY_TYPE_COMPARISON_OPTION);
}
@Override
diff --git a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/GlideExtensionValidator.java b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/GlideExtensionValidator.java
index 6d4652b760..fa73874dec 100644
--- a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/GlideExtensionValidator.java
+++ b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/GlideExtensionValidator.java
@@ -7,8 +7,8 @@
import com.google.common.base.Function;
import com.google.common.collect.FluentIterable;
import com.squareup.javapoet.ClassName;
-import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.AnnotationMirror;
@@ -20,6 +20,8 @@
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;
+import javax.lang.model.util.Elements;
+import javax.lang.model.util.Types;
import javax.tools.Diagnostic.Kind;
/**
@@ -33,11 +35,15 @@
final class GlideExtensionValidator {
private final ProcessingEnvironment processingEnvironment;
private final ProcessorUtil processorUtil;
+ private final boolean useLegacyTypeComparison;
GlideExtensionValidator(
- ProcessingEnvironment processingEnvironment, ProcessorUtil processorUtil) {
+ ProcessingEnvironment processingEnvironment,
+ ProcessorUtil processorUtil,
+ boolean useLegacyTypeComparison) {
this.processingEnvironment = processingEnvironment;
this.processorUtil = processorUtil;
+ this.useLegacyTypeComparison = useLegacyTypeComparison;
}
void validateExtension(TypeElement typeElement) {
@@ -109,7 +115,7 @@ private void validateGlideOptionAnnotations(ExecutableElement executableElement)
validateAnnotatedNonNull(executableElement);
}
- private static void validateGlideOptionParameters(ExecutableElement executableElement) {
+ private void validateGlideOptionParameters(ExecutableElement executableElement) {
if (executableElement.getParameters().isEmpty()) {
throw new IllegalArgumentException(
"@GlideOption methods must take a "
@@ -130,8 +136,15 @@ private static void validateGlideOptionParameters(ExecutableElement executableEl
}
}
- private static boolean isBaseRequestOptions(TypeMirror typeMirror) {
- return typeMirror.toString().equals("com.bumptech.glide.request.BaseRequestOptions>");
+ private boolean isBaseRequestOptions(TypeMirror typeMirror) {
+ if (useLegacyTypeComparison) {
+ return typeMirror.toString().equals("com.bumptech.glide.request.BaseRequestOptions>");
+ }
+ return typeMirror instanceof DeclaredType declaredType
+ && declaredType.asElement() instanceof TypeElement typeElement
+ && typeElement
+ .getQualifiedName()
+ .contentEquals("com.bumptech.glide.request.BaseRequestOptions");
}
private void validateGlideOptionOverride(ExecutableElement element) {
@@ -159,7 +172,8 @@ private boolean isMethodInBaseRequestOptions(ExecutableElement toFind) {
processingEnvironment
.getElementUtils()
.getTypeElement(RequestOptionsGenerator.BASE_REQUEST_OPTIONS_QUALIFIED_NAME);
- List toFindParameterNames = getComparableParameterNames(toFind, true /*skipFirst*/);
+ List toFindParameterTypes =
+ getComparableParameterTypes(toFind, /* skipFirst= */ true);
String toFindSimpleName = toFind.getSimpleName().toString();
for (Element element : requestOptionsType.getEnclosedElements()) {
if (element.getKind() != ElementKind.METHOD) {
@@ -167,27 +181,43 @@ private boolean isMethodInBaseRequestOptions(ExecutableElement toFind) {
}
ExecutableElement inBase = (ExecutableElement) element;
if (toFindSimpleName.equals(inBase.getSimpleName().toString())) {
- List parameterNamesInBase =
- getComparableParameterNames(inBase, false /*skipFirst*/);
- if (parameterNamesInBase.equals(toFindParameterNames)) {
- return true;
+ List parameterTypesInBase =
+ getComparableParameterTypes(inBase, /* skipFirst= */ false);
+ if (useLegacyTypeComparison) {
+ List stringsInBase = parameterTypesInBase.stream().map(Object::toString).toList();
+ List stringsToFind = toFindParameterTypes.stream().map(Object::toString).toList();
+ if (stringsInBase.equals(stringsToFind)) {
+ return true;
+ }
+ } else {
+ if (isSameTypes(
+ processingEnvironment.getTypeUtils(), parameterTypesInBase, toFindParameterTypes)) {
+ return true;
+ }
}
}
}
return false;
}
- private static List getComparableParameterNames(
- ExecutableElement element, boolean skipFirst) {
- List extends VariableElement> parameters = element.getParameters();
- if (skipFirst) {
- parameters = parameters.subList(1, parameters.size());
+ private boolean isSameTypes(Types types, List a, List b) {
+ if (a.size() != b.size()) {
+ return false;
}
- List result = new ArrayList<>(parameters.size());
- for (VariableElement parameter : parameters) {
- result.add(parameter.asType().toString());
+ for (int i = 0; i < a.size(); i++) {
+ if (!types.isSameType(a.get(i), b.get(i))) {
+ return false;
+ }
}
- return result;
+ return true;
+ }
+
+ private static List getComparableParameterTypes(
+ ExecutableElement element, boolean skipFirst) {
+ return element.getParameters().stream()
+ .skip(skipFirst ? 1 : 0)
+ .map(VariableElement::asType)
+ .toList();
}
private void validateGlideType(ExecutableElement executableElement) {
@@ -217,24 +247,48 @@ private String getGlideTypeValue(ExecutableElement executableElement) {
}
private boolean typeMatchesExpected(TypeMirror returnType, ExecutableElement executableElement) {
- if (!(returnType instanceof DeclaredType)) {
+ if (!(returnType instanceof DeclaredType declaredType)) {
+ return false;
+ }
+ if (useLegacyTypeComparison) {
+ List extends TypeMirror> typeArguments = declaredType.getTypeArguments();
+ if (typeArguments.size() != 1) {
+ return false;
+ }
+ TypeMirror argument = typeArguments.get(0);
+ String expected = getGlideTypeValue(executableElement);
+ return argument.toString().equals(expected);
+ }
+ Elements elements = processingEnvironment.getElementUtils();
+ Types types = processingEnvironment.getTypeUtils();
+ String glideTypeValue = getGlideTypeValue(executableElement);
+ TypeElement glideTypeElement = elements.getTypeElement(glideTypeValue);
+ if (glideTypeElement == null) {
return false;
}
- List extends TypeMirror> typeArguments = ((DeclaredType) returnType).getTypeArguments();
- if (typeArguments.size() != 1) {
+ TypeElement requestBuilderElement =
+ elements.getTypeElement("com.bumptech.glide.RequestBuilder");
+ if (requestBuilderElement == null) {
return false;
}
- TypeMirror argument = typeArguments.get(0);
- String expected = getGlideTypeValue(executableElement);
- return argument.toString().equals(expected);
+ TypeMirror expectedType =
+ types.getDeclaredType(requestBuilderElement, glideTypeElement.asType());
+ return types.isSameType(returnType, expectedType);
}
private boolean isRequestBuilder(TypeMirror typeMirror) {
- TypeMirror toCompare = processingEnvironment.getTypeUtils().erasure(typeMirror);
- return toCompare.toString().equals("com.bumptech.glide.RequestBuilder");
+ if (useLegacyTypeComparison) {
+ TypeMirror toCompare = processingEnvironment.getTypeUtils().erasure(typeMirror);
+ return toCompare.toString().equals("com.bumptech.glide.RequestBuilder");
+ }
+ Types types = processingEnvironment.getTypeUtils();
+ Elements elements = processingEnvironment.getElementUtils();
+ TypeMirror toCompare = types.erasure(typeMirror);
+ return Objects.equals(
+ types.asElement(toCompare), elements.getTypeElement("com.bumptech.glide.RequestBuilder"));
}
- private static void validateGlideTypeParameters(ExecutableElement executableElement) {
+ private void validateGlideTypeParameters(ExecutableElement executableElement) {
if (executableElement.getParameters().size() != 1) {
throw new IllegalArgumentException(
"@GlideType methods must take a"
@@ -244,7 +298,9 @@ private static void validateGlideTypeParameters(ExecutableElement executableElem
VariableElement first = executableElement.getParameters().get(0);
TypeMirror argumentType = first.asType();
- if (!argumentType.toString().startsWith("com.bumptech.glide.RequestBuilder")) {
+ if (useLegacyTypeComparison
+ ? !argumentType.toString().startsWith("com.bumptech.glide.RequestBuilder")
+ : !isRequestBuilder(argumentType)) {
throw new IllegalArgumentException(
"@GlideType methods must take a"
+ " RequestBuilder object as their first and only parameter, but given: "
diff --git a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/IndexerGenerator.java b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/IndexerGenerator.java
index 8a05c9151f..387873812d 100644
--- a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/IndexerGenerator.java
+++ b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/IndexerGenerator.java
@@ -7,6 +7,7 @@
import com.squareup.javapoet.TypeSpec;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
import java.util.UUID;
import javax.lang.model.element.Modifier;
@@ -83,16 +84,20 @@ TypeSpec generate(List types) {
private TypeSpec generate(
List libraryModules, Class extends Annotation> annotation) {
+ // Sort modules by qualified name to ensure deterministic ordering
+ List sortedModules = new ArrayList<>(libraryModules);
+ sortedModules.sort(Comparator.comparing(a -> a.getQualifiedName().toString()));
+
AnnotationSpec.Builder annotationBuilder = AnnotationSpec.builder(Index.class);
String value = getAnnotationValue(annotation);
- for (TypeElement childModule : libraryModules) {
+ for (TypeElement childModule : sortedModules) {
annotationBuilder.addMember(value, "$S", ClassName.get(childModule).toString());
}
StringBuilder indexerNameBuilder =
new StringBuilder(INDEXER_NAME_PREFIX + annotation.getSimpleName() + "_");
- for (TypeElement element : libraryModules) {
+ for (TypeElement element : sortedModules) {
indexerNameBuilder.append(element.getQualifiedName().toString().replace(".", "_"));
indexerNameBuilder.append("_");
}
diff --git a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/ProcessorUtil.java b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/ProcessorUtil.java
index 65a01ab567..6ba171c32a 100644
--- a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/ProcessorUtil.java
+++ b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/ProcessorUtil.java
@@ -10,6 +10,7 @@
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableBiMap;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.squareup.javapoet.AnnotationSpec;
import com.squareup.javapoet.ClassName;
@@ -20,18 +21,13 @@
import com.squareup.javapoet.TypeName;
import com.squareup.javapoet.TypeSpec;
import com.squareup.javapoet.TypeVariableName;
-import com.sun.tools.javac.code.Attribute;
-import com.sun.tools.javac.code.Type.ClassType;
import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Map;
+import java.util.Locale;
import java.util.Set;
import javax.annotation.Nullable;
import javax.annotation.processing.ProcessingEnvironment;
@@ -46,6 +42,8 @@
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.TypeParameterElement;
import javax.lang.model.element.VariableElement;
+import javax.lang.model.type.DeclaredType;
+import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.type.TypeVariable;
import javax.lang.model.util.ElementFilter;
@@ -55,8 +53,6 @@
/** Utilities for writing classes and logging. */
final class ProcessorUtil {
- // TODO: Remove this once we convert Glide's internal classes to AndroidX.
- private static final boolean REQUIRE_SUPPORT_ANNOTATIONS = false;
private static final String GLIDE_MODULE_PACKAGE_NAME = "com.bumptech.glide.module";
private static final String APP_GLIDE_MODULE_SIMPLE_NAME = "AppGlideModule";
private static final String LIBRARY_GLIDE_MODULE_SIMPLE_NAME = "LibraryGlideModule";
@@ -410,7 +406,7 @@ private static String computeParameterName(VariableElement parameter, TypeName t
}
}
if (allCaps) {
- name = rawClassName.toLowerCase();
+ name = rawClassName.toLowerCase(Locale.ROOT);
} else {
int indexOfLastWordStart = 0;
char[] chars = rawClassName.toCharArray();
@@ -433,7 +429,7 @@ private static String computeParameterName(VariableElement parameter, TypeName t
private static String getSmartPrimitiveParameterName(VariableElement parameter) {
for (AnnotationMirror annotation : parameter.getAnnotationMirrors()) {
- String annotationName = annotation.getAnnotationType().toString().toUpperCase();
+ String annotationName = annotation.getAnnotationType().toString().toUpperCase(Locale.ROOT);
if (annotationName.endsWith("RES")) {
// Catch annotations like StringRes
return "id";
@@ -503,9 +499,6 @@ static List nonNulls() {
}
private ClassName findAnnotationClassName(ClassName androidxName, ClassName supportName) {
- if (REQUIRE_SUPPORT_ANNOTATIONS) {
- return supportName;
- }
Elements elements = processingEnv.getElementUtils();
TypeElement visibleForTestingTypeElement =
elements.getTypeElement(androidxName.reflectionName());
@@ -544,7 +537,7 @@ List findStaticMethods(TypeElement clazz) {
.toList();
}
- Set findClassValuesFromAnnotationOnClassAsNames(
+ ImmutableSet findClassValuesFromAnnotationOnClassAsNames(
Element clazz, Class extends Annotation> annotationClass) {
String annotationClassName = annotationClass.getName();
AnnotationValue excludedModuleAnnotationValue = null;
@@ -554,17 +547,13 @@ Set findClassValuesFromAnnotationOnClassAsNames(
if (!annotationClassName.equals(annotationMirror.getAnnotationType().toString())) {
continue;
}
- Set extends Map.Entry extends ExecutableElement, ? extends AnnotationValue>> values =
- annotationMirror.getElementValues().entrySet();
- // Excludes has only one value. If we ever change that, we'd need to iterate over all
- // values in the entry set and compare the keys to whatever our Annotation's attribute is
- // (usually value).
- if (values.size() != 1) {
- throw new IllegalArgumentException("Expected single value, but found: " + values);
+
+ var entries = annotationMirror.getElementValues().entrySet();
+ if (entries.size() != 1) {
+ throw new IllegalArgumentException("Expected single value, but found: " + entries);
}
- excludedModuleAnnotationValue = values.iterator().next().getValue();
- if (excludedModuleAnnotationValue == null
- || excludedModuleAnnotationValue instanceof Attribute.UnresolvedClass) {
+ excludedModuleAnnotationValue = entries.iterator().next().getValue();
+ if (excludedModuleAnnotationValue == null) {
throw new IllegalArgumentException(
"Failed to find value for: "
+ annotationClass
@@ -572,49 +561,34 @@ Set findClassValuesFromAnnotationOnClassAsNames(
+ clazz.getAnnotationMirrors());
}
}
+
if (excludedModuleAnnotationValue == null) {
- return Collections.emptySet();
+ return ImmutableSet.of();
}
+
Object value = excludedModuleAnnotationValue.getValue();
if (value instanceof List) {
- List> values = (List>) value;
- Set result = new HashSet<>(values.size());
- for (Object current : values) {
- result.add(getExcludedModuleClassFromAnnotationAttribute(clazz, current));
+ LinkedHashSet out = new LinkedHashSet<>();
+ for (Object o : (List>) value) {
+ AnnotationValue av = (AnnotationValue) o;
+ out.add(qualifiedNameFromTypeMirror((TypeMirror) av.getValue()));
}
- return result;
+ return ImmutableSet.copyOf(out);
} else {
- ClassType classType = (ClassType) value;
- return Collections.singleton(classType.toString());
+ return ImmutableSet.of(qualifiedNameFromTypeMirror((TypeMirror) value));
}
}
- // We should be able to cast to Attribute.Class rather than use reflection, but there are some
- // compilers that seem to break when we do so. See #2673 for an example.
- private static String getExcludedModuleClassFromAnnotationAttribute(
- Element clazz, Object attribute) {
- if (attribute.getClass().getSimpleName().equals("UnresolvedClass")) {
- throw new IllegalArgumentException(
- "Failed to parse @Excludes for: "
- + clazz
- + ", one or more excluded Modules could not be found at compile time. Ensure that all"
- + "excluded Modules are included in your classpath.");
+ static String qualifiedNameFromTypeMirror(TypeMirror type) {
+ if (type.getKind() == TypeKind.ERROR) {
+ throw new IllegalArgumentException("Unresolved class type in annotation: " + type);
}
- Method[] methods = attribute.getClass().getDeclaredMethods();
- if (methods == null || methods.length == 0) {
- throw new IllegalArgumentException(
- "Failed to parse @Excludes for: " + clazz + ", invalid exclude: " + attribute);
- }
- for (Method method : methods) {
- if (method.getName().equals("getValue")) {
- try {
- return method.invoke(attribute).toString();
- } catch (IllegalAccessException | InvocationTargetException e) {
- throw new IllegalArgumentException("Failed to parse @Excludes for: " + clazz, e);
- }
- }
+ if (type.getKind() == TypeKind.DECLARED) {
+ DeclaredType dt = (DeclaredType) type;
+ TypeElement te = (TypeElement) dt.asElement();
+ return te.getQualifiedName().toString();
}
- throw new IllegalArgumentException("Failed to parse @Excludes for: " + clazz);
+ return type.toString();
}
private enum MethodType {
diff --git a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestBuilderGenerator.java b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestBuilderGenerator.java
index 374dcc84b7..1eebb92646 100644
--- a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestBuilderGenerator.java
+++ b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestBuilderGenerator.java
@@ -102,6 +102,7 @@ final class RequestBuilderGenerator {
* RequestBuilder
*/
private static final String TRANSCODE_TYPE_NAME = "TranscodeType";
+
/** A set of method names to avoid overriding from RequestOptions. */
private static final ImmutableSet EXCLUDED_METHODS_FROM_BASE_REQUEST_OPTIONS =
ImmutableSet.of("clone", "apply");
@@ -186,6 +187,7 @@ TypeSpec generate(
.addMethods(requestOptionsExtensionMethods)
.build();
}
+
/**
* Generates methods with equivalent names and arguments to methods annotated with {@link
* GlideOption} in {@link com.bumptech.glide.annotation.GlideExtension}s that return our generated
diff --git a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestOptionsGenerator.java b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestOptionsGenerator.java
index 5e7e027b31..fc1d70ed34 100644
--- a/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestOptionsGenerator.java
+++ b/annotation/compiler/src/main/java/com/bumptech/glide/annotation/compiler/RequestOptionsGenerator.java
@@ -316,6 +316,7 @@ private MethodAndStaticVar generateStaticMethodEquivalentForRequestOptionsStatic
return new MethodAndStaticVar(methodSpecBuilder.build(), requiredStaticField);
}
+ @SuppressWarnings("checkstyle:UnnecessaryParentheses") // Readability
private static boolean memoizeStaticMethodFromArguments(ExecutableElement staticMethod) {
return staticMethod.getParameters().isEmpty()
|| (staticMethod.getParameters().size() == 1
diff --git a/annotation/compiler/test/build.gradle b/annotation/compiler/test/build.gradle
index 8e18637060..84120cce33 100644
--- a/annotation/compiler/test/build.gradle
+++ b/annotation/compiler/test/build.gradle
@@ -1,5 +1,3 @@
-import org.gradle.internal.jvm.Jvm
-
apply plugin: 'com.android.library'
android {
@@ -25,21 +23,22 @@ android {
afterEvaluate {
lint.enabled = false
- compileDebugJavaWithJavac.enabled = false
+ compileReleaseJavaWithJavac.enabled = false
}
android {
- compileSdkVersion COMPILE_SDK_VERSION as int
+ namespace 'com.bumptech.glide.annotation.compiler.test'
+ compileSdk libs.versions.compile.sdk.version.get().toInteger()
defaultConfig {
- minSdkVersion MIN_SDK_VERSION as int
- targetSdkVersion TARGET_SDK_VERSION as int
+ minSdk libs.versions.min.sdk.version.get() as int
+ targetSdk libs.versions.target.sdk.version.get() as int
versionName VERSION_NAME as String
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_7
- targetCompatibility JavaVersion.VERSION_1_7
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
}
testOptions {
@@ -58,9 +57,9 @@ android {
dependencies {
testImplementation project(':glide')
testImplementation project(':annotation:compiler')
- testImplementation "junit:junit:${JUNIT_VERSION}"
- testImplementation "com.squareup:javapoet:${JAVAPOET_VERSION}"
- testImplementation "com.google.code.findbugs:jsr305:${JSR_305_VERSION}"
+ testImplementation libs.junit
+ testImplementation libs.javapoet
+ testImplementation libs.findbugs.jsr305
// Using 0.10 of compile-testing is required for Android Studio to function, but not for the
// gradle build. Not yet clear why, but it looks like some kind of version conflict between
// javapoet, guava and/or truth.
@@ -70,14 +69,13 @@ dependencies {
// confusing.
exclude group: "com.google.auto.value", module: "auto-value"
}
- testImplementation "androidx.annotation:annotation:${ANDROID_X_ANNOTATION_VERSION}"
- testImplementation "androidx.fragment:fragment:${ANDROID_X_FRAGMENT_VERSION}"
- testImplementation "androidx.legacy:legacy-support-v4:${ANDROID_X_VERSION}"
- // TODO: this seems excessive, but it works...
- testImplementation files(Jvm.current().getJre().homeDir.getAbsolutePath()+'/lib/rt.jar')
+ testImplementation libs.androidx.annotation
+ testImplementation libs.androidx.fragment
+ // TODO: Find some way to include a similar dependency on java 9+ and re-enable these tests in gradle.
+// testImplementation files(Jvm.current().getJre().homeDir.getAbsolutePath()+'/lib/rt.jar')
testAnnotationProcessor project(':annotation:compiler')
- testAnnotationProcessor "com.google.auto.service:auto-service:${AUTO_SERVICE_VERSION}"
+ testAnnotationProcessor libs.autoservice
}
task regenerateTestResources {
@@ -95,6 +93,5 @@ task regenerateTestResources {
}
afterEvaluate {
- regenerateTestResources.finalizedBy(testDebugUnitTest)
+ regenerateTestResources.finalizedBy(testReleaseUnitTest)
}
-
diff --git a/annotation/compiler/test/src/main/AndroidManifest.xml b/annotation/compiler/test/src/main/AndroidManifest.xml
deleted file mode 100644
index a41245187e..0000000000
--- a/annotation/compiler/test/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
diff --git a/annotation/compiler/test/src/test/java/com/bumptech/glide/annotation/compiler/test/Util.java b/annotation/compiler/test/src/test/java/com/bumptech/glide/annotation/compiler/test/Util.java
index 85d51e38c2..49567a2932 100644
--- a/annotation/compiler/test/src/test/java/com/bumptech/glide/annotation/compiler/test/Util.java
+++ b/annotation/compiler/test/src/test/java/com/bumptech/glide/annotation/compiler/test/Util.java
@@ -12,6 +12,7 @@ public final class Util {
private static final String ANNOTATION_PACKAGE_NAME = "com.bumptech.glide.annotation.compiler";
private static final String DEFAULT_APP_DIR_NAME = "EmptyAppGlideModuleTest";
private static final String DEFAULT_LIBRARY_DIR_NAME = "EmptyLibraryGlideModuleTest";
+
/**
* Hardcoded file separator to workaround {@code JavaFileObjects.forResource(...)} defaulting to
* the unix one.
diff --git a/annotation/compiler/test/src/test/resources/AppGlideModuleWithExcludesTest/GeneratedAppGlideModuleImpl.java b/annotation/compiler/test/src/test/resources/AppGlideModuleWithExcludesTest/GeneratedAppGlideModuleImpl.java
index 65601ab29a..37c370dd32 100644
--- a/annotation/compiler/test/src/test/resources/AppGlideModuleWithExcludesTest/GeneratedAppGlideModuleImpl.java
+++ b/annotation/compiler/test/src/test/resources/AppGlideModuleWithExcludesTest/GeneratedAppGlideModuleImpl.java
@@ -1,8 +1,8 @@
package com.bumptech.glide;
import android.content.Context;
-import androidx.annotation.NonNull;
import android.util.Log;
+import androidx.annotation.NonNull;
import com.bumptech.glide.test.AppModuleWithExcludes;
import java.util.HashSet;
import java.util.Set;
diff --git a/annotation/compiler/test/src/test/resources/AppGlideModuleWithLibraryInPackageTest/GeneratedAppGlideModuleImpl.java b/annotation/compiler/test/src/test/resources/AppGlideModuleWithLibraryInPackageTest/GeneratedAppGlideModuleImpl.java
index 02d9b660f9..f2ad77e022 100644
--- a/annotation/compiler/test/src/test/resources/AppGlideModuleWithLibraryInPackageTest/GeneratedAppGlideModuleImpl.java
+++ b/annotation/compiler/test/src/test/resources/AppGlideModuleWithLibraryInPackageTest/GeneratedAppGlideModuleImpl.java
@@ -1,8 +1,8 @@
package com.bumptech.glide;
import android.content.Context;
-import androidx.annotation.NonNull;
import android.util.Log;
+import androidx.annotation.NonNull;
import com.bumptech.glide.test.AppModuleWithLibraryInPackage;
import java.util.HashSet;
import java.util.Set;
diff --git a/annotation/compiler/test/src/test/resources/AppGlideModuleWithMultipleExcludesTest/GeneratedAppGlideModuleImpl.java b/annotation/compiler/test/src/test/resources/AppGlideModuleWithMultipleExcludesTest/GeneratedAppGlideModuleImpl.java
index 6b285af414..c0f30f3838 100644
--- a/annotation/compiler/test/src/test/resources/AppGlideModuleWithMultipleExcludesTest/GeneratedAppGlideModuleImpl.java
+++ b/annotation/compiler/test/src/test/resources/AppGlideModuleWithMultipleExcludesTest/GeneratedAppGlideModuleImpl.java
@@ -1,8 +1,8 @@
package com.bumptech.glide;
import android.content.Context;
-import androidx.annotation.NonNull;
import android.util.Log;
+import androidx.annotation.NonNull;
import com.bumptech.glide.test.AppModuleWithMultipleExcludes;
import java.util.HashSet;
import java.util.Set;
diff --git a/annotation/compiler/test/src/test/resources/EmptyAppAndLibraryGlideModulesTest/GeneratedAppGlideModuleImpl.java b/annotation/compiler/test/src/test/resources/EmptyAppAndLibraryGlideModulesTest/GeneratedAppGlideModuleImpl.java
index 7180b6f625..d8e26dbdf7 100644
--- a/annotation/compiler/test/src/test/resources/EmptyAppAndLibraryGlideModulesTest/GeneratedAppGlideModuleImpl.java
+++ b/annotation/compiler/test/src/test/resources/EmptyAppAndLibraryGlideModulesTest/GeneratedAppGlideModuleImpl.java
@@ -1,8 +1,8 @@
package com.bumptech.glide;
import android.content.Context;
-import androidx.annotation.NonNull;
import android.util.Log;
+import androidx.annotation.NonNull;
import com.bumptech.glide.test.EmptyAppModule;
import com.bumptech.glide.test.EmptyLibraryModule;
import java.util.Collections;
diff --git a/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GeneratedAppGlideModuleImpl.java b/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GeneratedAppGlideModuleImpl.java
index 8ed710b2bc..c5e014dded 100644
--- a/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GeneratedAppGlideModuleImpl.java
+++ b/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GeneratedAppGlideModuleImpl.java
@@ -1,8 +1,8 @@
package com.bumptech.glide;
import android.content.Context;
-import androidx.annotation.NonNull;
import android.util.Log;
+import androidx.annotation.NonNull;
import com.bumptech.glide.test.EmptyAppModule;
import java.util.Collections;
import java.util.Set;
diff --git a/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GlideApp.java b/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GlideApp.java
index 2b18540210..01cb075b2f 100644
--- a/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GlideApp.java
+++ b/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GlideApp.java
@@ -3,12 +3,12 @@
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import android.view.View;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
import java.io.File;
@@ -98,6 +98,7 @@ public static GlideRequests with(@NonNull Context context) {
/**
* @see Glide#with(Activity)
*/
+ @Deprecated
@NonNull
public static GlideRequests with(@NonNull Activity activity) {
return (GlideRequests) Glide.with(activity);
diff --git a/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GlideRequest.java b/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GlideRequest.java
index 5227b83d8c..01db2c8241 100644
--- a/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GlideRequest.java
+++ b/annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GlideRequest.java
@@ -399,7 +399,8 @@ public GlideRequest transform(@NonNull Transformation...
"unchecked",
"varargs"
})
- public GlideRequest transforms(@NonNull Transformation... transformations) {
+ public GlideRequest transforms(
+ @NonNull Transformation... transformations) {
return (GlideRequest) super.transforms(transformations);
}
@@ -408,7 +409,8 @@ public GlideRequest transforms(@NonNull Transformation...
*/
@NonNull
@CheckResult
- public GlideRequest optionalTransform(@NonNull Transformation transformation) {
+ public GlideRequest optionalTransform(
+ @NonNull Transformation transformation) {
return (GlideRequest) super.optionalTransform(transformation);
}
@@ -476,7 +478,8 @@ public GlideRequest apply(@NonNull BaseRequestOptions> options)
@Override
@NonNull
@CheckResult
- public GlideRequest transition(@NonNull TransitionOptions, ? super TranscodeType> options) {
+ public GlideRequest transition(
+ @NonNull TransitionOptions, ? super TranscodeType> options) {
return (GlideRequest) super.transition(options);
}
@@ -490,7 +493,8 @@ public GlideRequest listener(@Nullable RequestListener addListener(@Nullable RequestListener listener) {
+ public GlideRequest addListener(
+ @Nullable RequestListener listener) {
return (GlideRequest) super.addListener(listener);
}
@@ -519,7 +523,8 @@ public GlideRequest thumbnail(@Nullable RequestBuilder thumbnail(@Nullable RequestBuilder... builders) {
+ public final GlideRequest thumbnail(
+ @Nullable RequestBuilder... builders) {
return (GlideRequest) super.thumbnail(builders);
}
@@ -531,6 +536,7 @@ public GlideRequest thumbnail(@Nullable List thumbnail(float sizeMultiplier) {
diff --git a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/MemoizeStaticMethod/GlideRequest.java b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/MemoizeStaticMethod/GlideRequest.java
index 9477d1a6b3..b2ec0d3b89 100644
--- a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/MemoizeStaticMethod/GlideRequest.java
+++ b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/MemoizeStaticMethod/GlideRequest.java
@@ -399,7 +399,8 @@ public GlideRequest transform(@NonNull Transformation...
"unchecked",
"varargs"
})
- public GlideRequest transforms(@NonNull Transformation... transformations) {
+ public GlideRequest transforms(
+ @NonNull Transformation... transformations) {
return (GlideRequest) super.transforms(transformations);
}
@@ -408,7 +409,8 @@ public GlideRequest transforms(@NonNull Transformation...
*/
@NonNull
@CheckResult
- public GlideRequest optionalTransform(@NonNull Transformation transformation) {
+ public GlideRequest optionalTransform(
+ @NonNull Transformation transformation) {
return (GlideRequest) super.optionalTransform(transformation);
}
@@ -476,7 +478,8 @@ public GlideRequest apply(@NonNull BaseRequestOptions> options)
@Override
@NonNull
@CheckResult
- public GlideRequest transition(@NonNull TransitionOptions, ? super TranscodeType> options) {
+ public GlideRequest transition(
+ @NonNull TransitionOptions, ? super TranscodeType> options) {
return (GlideRequest) super.transition(options);
}
@@ -490,7 +493,8 @@ public GlideRequest listener(@Nullable RequestListener addListener(@Nullable RequestListener listener) {
+ public GlideRequest addListener(
+ @Nullable RequestListener listener) {
return (GlideRequest) super.addListener(listener);
}
@@ -519,7 +523,8 @@ public GlideRequest thumbnail(@Nullable RequestBuilder thumbnail(@Nullable RequestBuilder... builders) {
+ public final GlideRequest thumbnail(
+ @Nullable RequestBuilder... builders) {
return (GlideRequest) super.thumbnail(builders);
}
@@ -531,6 +536,7 @@ public GlideRequest thumbnail(@Nullable List thumbnail(float sizeMultiplier) {
diff --git a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtend/GlideRequest.java b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtend/GlideRequest.java
index 82e614850a..a3ec323db2 100644
--- a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtend/GlideRequest.java
+++ b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtend/GlideRequest.java
@@ -390,7 +390,8 @@ public GlideRequest transform(@NonNull Transformation...
"unchecked",
"varargs"
})
- public GlideRequest transforms(@NonNull Transformation... transformations) {
+ public GlideRequest transforms(
+ @NonNull Transformation... transformations) {
return (GlideRequest) super.transforms(transformations);
}
@@ -399,7 +400,8 @@ public GlideRequest transforms(@NonNull Transformation...
*/
@NonNull
@CheckResult
- public GlideRequest optionalTransform(@NonNull Transformation transformation) {
+ public GlideRequest optionalTransform(
+ @NonNull Transformation transformation) {
return (GlideRequest) super.optionalTransform(transformation);
}
@@ -467,7 +469,8 @@ public GlideRequest apply(@NonNull BaseRequestOptions> options)
@Override
@NonNull
@CheckResult
- public GlideRequest transition(@NonNull TransitionOptions, ? super TranscodeType> options) {
+ public GlideRequest transition(
+ @NonNull TransitionOptions, ? super TranscodeType> options) {
return (GlideRequest) super.transition(options);
}
@@ -481,7 +484,8 @@ public GlideRequest listener(@Nullable RequestListener addListener(@Nullable RequestListener listener) {
+ public GlideRequest addListener(
+ @Nullable RequestListener listener) {
return (GlideRequest) super.addListener(listener);
}
@@ -510,7 +514,8 @@ public GlideRequest thumbnail(@Nullable RequestBuilder thumbnail(@Nullable RequestBuilder... builders) {
+ public final GlideRequest thumbnail(
+ @Nullable RequestBuilder... builders) {
return (GlideRequest) super.thumbnail(builders);
}
@@ -522,6 +527,7 @@ public GlideRequest thumbnail(@Nullable List thumbnail(float sizeMultiplier) {
diff --git a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtendMultipleArguments/GlideRequest.java b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtendMultipleArguments/GlideRequest.java
index 7659a49885..686599f6ba 100644
--- a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtendMultipleArguments/GlideRequest.java
+++ b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtendMultipleArguments/GlideRequest.java
@@ -390,7 +390,8 @@ public GlideRequest transform(@NonNull Transformation...
"unchecked",
"varargs"
})
- public GlideRequest transforms(@NonNull Transformation... transformations) {
+ public GlideRequest transforms(
+ @NonNull Transformation... transformations) {
return (GlideRequest) super.transforms(transformations);
}
@@ -399,7 +400,8 @@ public GlideRequest transforms(@NonNull Transformation...
*/
@NonNull
@CheckResult
- public GlideRequest optionalTransform(@NonNull Transformation transformation) {
+ public GlideRequest optionalTransform(
+ @NonNull Transformation transformation) {
return (GlideRequest) super.optionalTransform(transformation);
}
@@ -467,7 +469,8 @@ public GlideRequest apply(@NonNull BaseRequestOptions> options)
@Override
@NonNull
@CheckResult
- public GlideRequest transition(@NonNull TransitionOptions, ? super TranscodeType> options) {
+ public GlideRequest transition(
+ @NonNull TransitionOptions, ? super TranscodeType> options) {
return (GlideRequest) super.transition(options);
}
@@ -481,7 +484,8 @@ public GlideRequest listener(@Nullable RequestListener addListener(@Nullable RequestListener listener) {
+ public GlideRequest addListener(
+ @Nullable RequestListener listener) {
return (GlideRequest) super.addListener(listener);
}
@@ -510,7 +514,8 @@ public GlideRequest thumbnail(@Nullable RequestBuilder thumbnail(@Nullable RequestBuilder... builders) {
+ public final GlideRequest thumbnail(
+ @Nullable RequestBuilder... builders) {
return (GlideRequest) super.thumbnail(builders);
}
@@ -522,6 +527,7 @@ public GlideRequest thumbnail(@Nullable List thumbnail(float sizeMultiplier) {
diff --git a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideReplace/GlideRequest.java b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideReplace/GlideRequest.java
index ad0f3581eb..cda7712314 100644
--- a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideReplace/GlideRequest.java
+++ b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideReplace/GlideRequest.java
@@ -390,7 +390,8 @@ public GlideRequest transform(@NonNull Transformation...
"unchecked",
"varargs"
})
- public GlideRequest transforms(@NonNull Transformation... transformations) {
+ public GlideRequest transforms(
+ @NonNull Transformation... transformations) {
return (GlideRequest) super.transforms(transformations);
}
@@ -399,7 +400,8 @@ public GlideRequest transforms(@NonNull Transformation...
*/
@NonNull
@CheckResult
- public GlideRequest optionalTransform(@NonNull Transformation transformation) {
+ public GlideRequest optionalTransform(
+ @NonNull Transformation transformation) {
return (GlideRequest) super.optionalTransform(transformation);
}
@@ -467,7 +469,8 @@ public GlideRequest apply(@NonNull BaseRequestOptions> options)
@Override
@NonNull
@CheckResult
- public GlideRequest transition(@NonNull TransitionOptions, ? super TranscodeType> options) {
+ public GlideRequest transition(
+ @NonNull TransitionOptions, ? super TranscodeType> options) {
return (GlideRequest) super.transition(options);
}
@@ -481,7 +484,8 @@ public GlideRequest listener(@Nullable RequestListener addListener(@Nullable RequestListener listener) {
+ public GlideRequest addListener(
+ @Nullable RequestListener listener) {
return (GlideRequest) super.addListener(listener);
}
@@ -510,7 +514,8 @@ public GlideRequest thumbnail(@Nullable RequestBuilder thumbnail(@Nullable RequestBuilder... builders) {
+ public final GlideRequest thumbnail(
+ @Nullable RequestBuilder... builders) {
return (GlideRequest) super.thumbnail(builders);
}
@@ -522,6 +527,7 @@ public GlideRequest thumbnail(@Nullable List thumbnail(float sizeMultiplier) {
diff --git a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/SkipStaticMethod/GlideRequest.java b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/SkipStaticMethod/GlideRequest.java
index 9477d1a6b3..b2ec0d3b89 100644
--- a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/SkipStaticMethod/GlideRequest.java
+++ b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/SkipStaticMethod/GlideRequest.java
@@ -399,7 +399,8 @@ public GlideRequest transform(@NonNull Transformation...
"unchecked",
"varargs"
})
- public GlideRequest transforms(@NonNull Transformation... transformations) {
+ public GlideRequest transforms(
+ @NonNull Transformation... transformations) {
return (GlideRequest) super.transforms(transformations);
}
@@ -408,7 +409,8 @@ public GlideRequest transforms(@NonNull Transformation...
*/
@NonNull
@CheckResult
- public GlideRequest optionalTransform(@NonNull Transformation transformation) {
+ public GlideRequest optionalTransform(
+ @NonNull Transformation transformation) {
return (GlideRequest) super.optionalTransform(transformation);
}
@@ -476,7 +478,8 @@ public GlideRequest apply(@NonNull BaseRequestOptions> options)
@Override
@NonNull
@CheckResult
- public GlideRequest transition(@NonNull TransitionOptions, ? super TranscodeType> options) {
+ public GlideRequest transition(
+ @NonNull TransitionOptions, ? super TranscodeType> options) {
return (GlideRequest) super.transition(options);
}
@@ -490,7 +493,8 @@ public GlideRequest listener(@Nullable RequestListener addListener(@Nullable RequestListener listener) {
+ public GlideRequest addListener(
+ @Nullable RequestListener listener) {
return (GlideRequest) super.addListener(listener);
}
@@ -519,7 +523,8 @@ public GlideRequest thumbnail(@Nullable RequestBuilder thumbnail(@Nullable RequestBuilder... builders) {
+ public final GlideRequest thumbnail(
+ @Nullable RequestBuilder... builders) {
return (GlideRequest) super.thumbnail(builders);
}
@@ -531,6 +536,7 @@ public GlideRequest thumbnail(@Nullable List thumbnail(float sizeMultiplier) {
diff --git a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/StaticMethodName/GlideRequest.java b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/StaticMethodName/GlideRequest.java
index 9477d1a6b3..b2ec0d3b89 100644
--- a/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/StaticMethodName/GlideRequest.java
+++ b/annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/StaticMethodName/GlideRequest.java
@@ -399,7 +399,8 @@ public GlideRequest transform(@NonNull Transformation...
"unchecked",
"varargs"
})
- public GlideRequest transforms(@NonNull Transformation... transformations) {
+ public GlideRequest transforms(
+ @NonNull Transformation... transformations) {
return (GlideRequest) super.transforms(transformations);
}
@@ -408,7 +409,8 @@ public GlideRequest transforms(@NonNull Transformation...
*/
@NonNull
@CheckResult
- public GlideRequest optionalTransform(@NonNull Transformation transformation) {
+ public GlideRequest optionalTransform(
+ @NonNull Transformation transformation) {
return (GlideRequest) super.optionalTransform(transformation);
}
@@ -476,7 +478,8 @@ public GlideRequest apply(@NonNull BaseRequestOptions> options)
@Override
@NonNull
@CheckResult
- public GlideRequest transition(@NonNull TransitionOptions, ? super TranscodeType> options) {
+ public GlideRequest transition(
+ @NonNull TransitionOptions, ? super TranscodeType> options) {
return (GlideRequest) super.transition(options);
}
@@ -490,7 +493,8 @@ public GlideRequest listener(@Nullable RequestListener addListener(@Nullable RequestListener listener) {
+ public GlideRequest addListener(
+ @Nullable RequestListener listener) {
return (GlideRequest) super.addListener(listener);
}
@@ -519,7 +523,8 @@ public GlideRequest thumbnail(@Nullable RequestBuilder thumbnail(@Nullable RequestBuilder... builders) {
+ public final GlideRequest thumbnail(
+ @Nullable RequestBuilder... builders) {
return (GlideRequest) super.thumbnail(builders);
}
@@ -531,6 +536,7 @@ public GlideRequest thumbnail(@Nullable List thumbnail(float sizeMultiplier) {
diff --git a/annotation/compiler/test/src/test/resources/GlideExtensionWithOptionTest/GlideRequest.java b/annotation/compiler/test/src/test/resources/GlideExtensionWithOptionTest/GlideRequest.java
index b0921ad37c..87b432e0d2 100644
--- a/annotation/compiler/test/src/test/resources/GlideExtensionWithOptionTest/GlideRequest.java
+++ b/annotation/compiler/test/src/test/resources/GlideExtensionWithOptionTest/GlideRequest.java
@@ -399,7 +399,8 @@ public GlideRequest transform(@NonNull Transformation...
"unchecked",
"varargs"
})
- public GlideRequest transforms(@NonNull Transformation