diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt index f3c187b033a..141ca92f82b 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt @@ -290,7 +290,7 @@ fun FirebaseLibraryExtension.resolveProjectLevelDependencies() = .allDependencies .mapNotNull { it as? ProjectDependency } .map { - it.dependencyProject.extensions.findByType() + project.project(it.dependencyProject.path).extensions.findByType() ?: throw RuntimeException( "Project level dependencies must have the firebaseLibrary plugin. The following dependency does not: ${it.artifactName}" ) diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/Changelog.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/Changelog.kt index e3ea7ebdf5c..b6c3ecb31e7 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/Changelog.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/Changelog.kt @@ -366,7 +366,7 @@ data class Change(val type: ChangeType, val message: String) { fun fromString(string: String): Change { val (type, description) = REGEX.findOrThrow(string).destructured - return Change(ChangeType.valueOf(type.toUpperCase()), description.trim()) + return Change(ChangeType.valueOf(type.uppercase()), description.trim()) } } } @@ -384,5 +384,5 @@ enum class ChangeType { REMOVED, DEPRECATED; - override fun toString(): String = name.toLowerCase() + override fun toString(): String = name.lowercase() } diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/GradleExtensions.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/GradleExtensions.kt index 90d4e3fc50b..c10e6f649aa 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/GradleExtensions.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/GradleExtensions.kt @@ -47,10 +47,10 @@ import org.gradle.workers.WorkQueue * * Syntax sugar for: * ``` - * project.file("${project.buildDir}/$path) + * project.file("${project.layout.buildDirectory.get().asFile}/$path) * ``` */ -fun Project.fileFromBuildDir(path: String) = file("$buildDir/$path") +fun Project.fileFromBuildDir(path: String) = file("${layout.buildDirectory.get().asFile}/$path") /** * Maps a file provider to another file provider as a sub directory. diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/LibraryGroups.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/LibraryGroups.kt index 2c030388e5e..442a34a4037 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/LibraryGroups.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/LibraryGroups.kt @@ -39,7 +39,7 @@ fun computeLibraryGroups(project: Project): Map>) { - for ((name, libraryGroup) in libraryGroups) { + for ((_, libraryGroup) in libraryGroups) { val maxVersion = libraryGroup.mapNotNull { it.moduleVersion }.maxOrNull()?.toString() ?: continue for (firebaseExtension in libraryGroup) { diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt index 696621c03d2..409cc852e5c 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt @@ -148,7 +148,7 @@ abstract class MakeReleaseNotesTask : DefaultTask() { "GitHub [#$id](//github.com/firebase/firebase-android-sdk/issues/$id){: .external}" } - return "* {{${type.name.toLowerCase()}}} $fixedMessage" + return "* {{${type.name.lowercase()}}} $fixedMessage" } companion object { diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/Metalava.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/Metalava.kt index 233be31a302..64a367e7c8a 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/Metalava.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/Metalava.kt @@ -19,6 +19,7 @@ package com.google.firebase.gradle.plugins import java.io.File import java.io.FileOutputStream import java.io.OutputStream +import javax.inject.Inject import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.artifacts.Configuration @@ -33,6 +34,7 @@ import org.gradle.api.tasks.InputFiles import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction +import org.gradle.process.ExecOperations val Project.metalavaConfig: Configuration get() = @@ -46,9 +48,10 @@ val Project.metalavaConfig: Configuration } val Project.docStubs: File? - get() = project.file("${buildDir.path}/doc-stubs") + get() = project.file("${project.layout.buildDirectory.get().asFile.path}/doc-stubs") fun Project.runMetalavaWithArgs( + execOperations: ExecOperations, arguments: List, ignoreFailure: Boolean = false, stdOut: OutputStream? = null, @@ -61,23 +64,25 @@ fun Project.runMetalavaWithArgs( "HiddenAbstractMethod", ) + arguments - project.javaexec { + execOperations.javaexec { mainClass.set("com.android.tools.metalava.Driver") - classpath = project.metalavaConfig + classpath = metalavaConfig args = allArgs isIgnoreExitValue = ignoreFailure if (stdOut != null) errorOutput = stdOut } } -abstract class GenerateStubsTask : DefaultTask() { +abstract class GenerateStubsTask @Inject constructor(private val execOperations: ExecOperations) : + DefaultTask() { /** Source files against which API signatures will be validated. */ @get:InputFiles abstract val sources: ConfigurableFileCollection @get:[InputFiles Classpath] lateinit var classPath: FileCollection - @get:OutputDirectory val outputDir: File = File(project.buildDir, "doc-stubs") + @get:OutputDirectory + val outputDir: File = File(project.layout.buildDirectory.get().asFile, "doc-stubs") @TaskAction fun run() { @@ -87,6 +92,7 @@ abstract class GenerateStubsTask : DefaultTask() { project.androidJar?.let { classPath += listOf(it.absolutePath) } project.runMetalavaWithArgs( + execOperations, listOf( "--source-path", sourcePath, @@ -95,12 +101,13 @@ abstract class GenerateStubsTask : DefaultTask() { "--include-annotations", "--doc-stubs", outputDir.absolutePath, - ) + ), ) } } -abstract class GenerateApiTxtTask : DefaultTask() { +abstract class GenerateApiTxtTask @Inject constructor(private val execOperations: ExecOperations) : + DefaultTask() { /** Source files against which API signatures will be validated. */ @get:InputFiles abstract val sources: ConfigurableFileCollection @@ -120,6 +127,7 @@ abstract class GenerateApiTxtTask : DefaultTask() { project.androidJar?.let { classPath += listOf(it.absolutePath) } project.runMetalavaWithArgs( + execOperations, listOf( "--source-path", sourcePath, @@ -138,7 +146,8 @@ abstract class GenerateApiTxtTask : DefaultTask() { } } -abstract class ApiInformationTask : DefaultTask() { +abstract class ApiInformationTask @Inject constructor(private val execOperations: ExecOperations) : + DefaultTask() { /** Source files against which API signatures will be validated. */ @get:InputFiles abstract val sources: ConfigurableFileCollection @@ -162,6 +171,7 @@ abstract class ApiInformationTask : DefaultTask() { project.androidJar?.let { classPath += listOf(it.absolutePath) } project.runMetalavaWithArgs( + execOperations, listOf( "--source-path", sourcePath, @@ -175,6 +185,7 @@ abstract class ApiInformationTask : DefaultTask() { ) project.runMetalavaWithArgs( + execOperations, listOf( "--source-files", outputApiFile.get().asFile.absolutePath, diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/ProjectExtensions.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/ProjectExtensions.kt index cbc724ad6ba..67674b554a6 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/ProjectExtensions.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/ProjectExtensions.kt @@ -31,7 +31,7 @@ fun Project.isAndroid(): Boolean = } fun toBoolean(value: Any?): Boolean { - val trimmed = value?.toString()?.trim()?.toLowerCase() + val trimmed = value?.toString()?.trim()?.lowercase() return "true" == trimmed || "y" == trimmed || "1" == trimmed } diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/PublishingPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/PublishingPlugin.kt index 758f592f52d..416f4fc69ad 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/PublishingPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/PublishingPlugin.kt @@ -91,7 +91,7 @@ abstract class PublishingPlugin : Plugin { val generateBom = registerGenerateBomTask(project) val generateBomReleaseNotes = registerGenerateBomReleaseNotesTask(project, generateBom) val generateTutorialBundle = registerGenerateTutorialBundleTask(project) - val validatePomForRelease = registerValidatePomForReleaseTask(project, releasingProjects) + registerValidatePomForReleaseTask(project, releasingProjects) val checkHeadDependencies = registerCheckHeadDependenciesTask(project, releasingFirebaseLibraries) val validateProjectsToPublish = diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/SemVerTask.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/SemVerTask.kt index b26c9a83a32..4c1a35a3a08 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/SemVerTask.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/SemVerTask.kt @@ -18,6 +18,7 @@ package com.google.firebase.gradle.plugins import com.google.firebase.gradle.plugins.semver.VersionDelta import java.io.ByteArrayOutputStream +import javax.inject.Inject import org.gradle.api.DefaultTask import org.gradle.api.GradleException import org.gradle.api.file.RegularFileProperty @@ -25,8 +26,10 @@ import org.gradle.api.provider.Property import org.gradle.api.tasks.Input import org.gradle.api.tasks.InputFile import org.gradle.api.tasks.TaskAction +import org.gradle.process.ExecOperations -abstract class SemVerTask : DefaultTask() { +abstract class SemVerTask @Inject constructor(private val execOperations: ExecOperations) : + DefaultTask() { @get:InputFile abstract val apiTxtFile: RegularFileProperty @get:InputFile abstract val otherApiFile: RegularFileProperty @get:Input abstract val currentVersionString: Property @@ -47,6 +50,7 @@ abstract class SemVerTask : DefaultTask() { } val stream = ByteArrayOutputStream() project.runMetalavaWithArgs( + execOperations, listOf( "--source-files", apiTxtFile.get().asFile.absolutePath, @@ -66,7 +70,6 @@ abstract class SemVerTask : DefaultTask() { val minorChanges = mutableListOf() val majorChanges = mutableListOf() for (match in reg.findAll(string)) { - val loc = match.groups[1]!!.value val message = match.groups[2]!!.value val type = match.groups[3]!!.value if (IGNORED.contains(type)) { diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/ci/ChangedModulesTask.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/ci/ChangedModulesTask.kt index 2eda1532173..9b73a6f6fab 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/ci/ChangedModulesTask.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/ci/ChangedModulesTask.kt @@ -52,7 +52,6 @@ abstract class ChangedModulesTask : DefaultTask() { AffectedProjectFinder(project, changedGitPaths.toSet(), listOf()) .find() .filter { - val ext = it.extensions.findByType(FirebaseLibraryExtension::class.java) !onlyFirebaseSDKs || it.extensions.findByType() != null } .map { it.path } @@ -62,12 +61,13 @@ abstract class ChangedModulesTask : DefaultTask() { project.rootProject.subprojects.forEach { p -> p.configurations.forEach { c -> c.dependencies.filterIsInstance().forEach { + val dependencyProject = project.project(it.dependencyProject.path) if ( !onlyFirebaseSDKs || - it.dependencyProject.extensions.findByType() != null + dependencyProject.extensions.findByType() != null ) { if (!onlyFirebaseSDKs || p.extensions.findByType() != null) { - result[it.dependencyProject.path]?.add(p.path) + result[dependencyProject.path]?.add(p.path) } } } diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/semver/ApiDiffer.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/semver/ApiDiffer.kt index e2fc5f9e3ea..c232272b1ca 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/semver/ApiDiffer.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/semver/ApiDiffer.kt @@ -111,7 +111,7 @@ abstract class ApiDiffer : DefaultTask() { val classes: MutableMap = LinkedHashMap() val inputStream = Files.newInputStream(jar) val jis = JarInputStream(inputStream) - var je: JarEntry? = null + var je: JarEntry? while (true) { je = jis.nextJarEntry if (je == null) { diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/semver/DeltaType.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/semver/DeltaType.kt index 6029403630d..09fcbac2879 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/semver/DeltaType.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/semver/DeltaType.kt @@ -44,12 +44,12 @@ enum class DeltaType { REMOVED_METHOD { override fun getViolations(before: ClassInfo?, after: ClassInfo?): List { val beforeMethods = - getAllMethods(before).filter { (key, value) -> + getAllMethods(before).filter { (_, value) -> val accessDescriptor = AccessDescriptor(value.access) !hasNonPublicMethodSignature(value) && !accessDescriptor.isPrivate() } val afterMethods = - getAllMethods(after).filter { (key, value) -> + getAllMethods(after).filter { (_, value) -> val accessDescriptor = AccessDescriptor(value.access) !hasNonPublicMethodSignature(value) && !accessDescriptor.isPrivate() } @@ -72,12 +72,12 @@ enum class DeltaType { REMOVED_FIELD { override fun getViolations(before: ClassInfo?, after: ClassInfo?): List { val beforeFields = - getAllFields(before).filter { (key, value) -> + getAllFields(before).filter { (_, value) -> val accessDescriptor = AccessDescriptor(value.access) !hasNonPublicFieldSignature(value) && !accessDescriptor.isPrivate() } val afterFields = - getAllFields(after).filter { (key, value) -> + getAllFields(after).filter { (_, value) -> val accessDescriptor = AccessDescriptor(value.access) !hasNonPublicFieldSignature(value) && !accessDescriptor.isPrivate() } @@ -101,57 +101,59 @@ enum class DeltaType { val allBeforeMethods = getAllMethods(before) val allAfterMethods = getAllMethods(after) val publicBeforeFields = - allBeforeFields.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicFieldSignature(value) && allAfterFields.containsKey(key) && access.isPublic() + allBeforeFields.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicFieldSignature(it.value) && + allAfterFields.containsKey(it.key) && + access.isPublic() } val protectedBeforeFields = - allBeforeFields.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicFieldSignature(value) && - allAfterFields.containsKey(key) && + allBeforeFields.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicFieldSignature(it.value) && + allAfterFields.containsKey(it.key) && access.isProtected() } val nonPublicFields = - allAfterFields.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicFieldSignature(value) && - allBeforeFields.containsKey(key) && + allAfterFields.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicFieldSignature(it.value) && + allBeforeFields.containsKey(it.key) && !access.isPublic() } val privateFields = - allAfterFields.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicFieldSignature(value) && - allBeforeFields.containsKey(key) && + allAfterFields.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicFieldSignature(it.value) && + allBeforeFields.containsKey(it.key) && access.isPrivate() } val publicBeforeMethods = - allBeforeMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allAfterMethods.containsKey(key) && + allBeforeMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allAfterMethods.containsKey(it.key) && access.isPublic() } val protectedBeforeMethods = - allBeforeMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allAfterMethods.containsKey(key) && + allBeforeMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allAfterMethods.containsKey(it.key) && access.isProtected() } val nonPublicMethods = - allAfterMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allBeforeMethods.containsKey(key) && + allAfterMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allBeforeMethods.containsKey(it.key) && !access.isPublic() } val privateMethods = - allAfterMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allBeforeMethods.containsKey(key) && + allAfterMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allBeforeMethods.containsKey(it.key) && access.isPrivate() } val apiDeltas = mutableListOf() @@ -220,17 +222,17 @@ enum class DeltaType { val allBeforeMethods = getAllMethods(before) val allAfterMethods = getAllMethods(after) val afterStaticMethods = - allAfterMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allBeforeMethods.containsKey(key) && + allAfterMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allBeforeMethods.containsKey(it.key) && access.isStatic() } val beforeStaticMethods = - allBeforeMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allBeforeMethods.containsKey(key) && + allBeforeMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allBeforeMethods.containsKey(it.key) && access.isStatic() } return (afterStaticMethods.keys subtract beforeStaticMethods.keys).map { @@ -253,11 +255,15 @@ enum class DeltaType { (allAfterMethods.keys intersect allBeforeMethods.keys).forEach { val afterMethod = allAfterMethods.get(it) val beforeMethod = allBeforeMethods.get(it) - if (!beforeMethod!!.exceptions.containsAll(afterMethod!!.exceptions)) { + if ( + beforeMethod != null && + afterMethod != null && + !beforeMethod.exceptions.containsAll(afterMethod.exceptions) + ) { apiDeltas.add( Delta( after!!.name, - afterMethod!!.name, + afterMethod.name, String.format( "Method %s on class %s throws new exceptions.", getMethodSignature(afterMethod), @@ -280,11 +286,15 @@ enum class DeltaType { (allAfterMethods.keys intersect allBeforeMethods.keys).forEach { val afterMethod = allAfterMethods.get(it) val beforeMethod = allBeforeMethods.get(it) - if (!afterMethod!!.exceptions.containsAll(beforeMethod!!.exceptions)) { + if ( + afterMethod != null && + beforeMethod != null && + !afterMethod.exceptions.containsAll(beforeMethod.exceptions) + ) { apiDeltas.add( Delta( after!!.name, - afterMethod!!.name, + afterMethod.name, String.format( "Method %s on class %s throws fewer exceptions.", getMethodSignature(afterMethod), @@ -330,13 +340,15 @@ enum class DeltaType { val beforeMethod = allBeforeMethods.get(it) if ( - AccessDescriptor(afterMethod!!.access).isAbstract() && - !AccessDescriptor(beforeMethod!!.access).isAbstract() + afterMethod != null && + beforeMethod != null && + AccessDescriptor(afterMethod.access).isAbstract() && + !AccessDescriptor(beforeMethod.access).isAbstract() ) { apiDeltas.add( Delta( after!!.name, - afterMethod!!.name, + afterMethod.name, String.format( "Method %s on class %s became abstract.", getMethodSignature(afterMethod), @@ -361,13 +373,15 @@ enum class DeltaType { val beforeMethod = allBeforeMethods.get(it) if ( - AccessDescriptor(afterMethod!!.access).isFinal() && - !AccessDescriptor(beforeMethod!!.access).isFinal() + afterMethod != null && + beforeMethod != null && + AccessDescriptor(afterMethod.access).isFinal() && + !AccessDescriptor(beforeMethod.access).isFinal() ) { apiDeltas.add( Delta( after!!.name, - afterMethod!!.name, + afterMethod.name, String.format( "Method %s on class %s became final.", getMethodSignature(afterMethod), @@ -425,20 +439,20 @@ enum class DeltaType { ADDED_METHOD { override fun getViolations(before: ClassInfo?, after: ClassInfo?): List { val beforeMethods = - getAllMethods(before).filter { (key, value) -> + getAllMethods(before).filter { (_, value) -> val accessDescriptor = AccessDescriptor(value.access) !hasNonPublicMethodSignature(value) && !accessDescriptor.isPrivate() } val afterMethods = - getAllMethods(after).filter { (key, value) -> + getAllMethods(after).filter { (_, value) -> val accessDescriptor = AccessDescriptor(value.access) !hasNonPublicMethodSignature(value) && !accessDescriptor.isPrivate() } return (afterMethods.keys subtract beforeMethods.keys).map { - val method = afterMethods.get(it) + val method = afterMethods.get(it)!! Delta( after!!.name, - method!!.name, + method.name, String.format("Method %s on class %s was added.", getMethodSignature(method), after.name), ADDED_METHOD, VersionDelta.MINOR, @@ -449,21 +463,21 @@ enum class DeltaType { ADDED_FIELD { override fun getViolations(before: ClassInfo?, after: ClassInfo?): List { val beforeFields = - getAllFields(before).filter { (key, value) -> + getAllFields(before).filter { (_, value) -> val accessDescriptor = AccessDescriptor(value.access) !hasNonPublicFieldSignature(value) && !accessDescriptor.isPrivate() } val afterFields = - getAllFields(after).filter { (key, value) -> + getAllFields(after).filter { (_, value) -> val accessDescriptor = AccessDescriptor(value.access) !hasNonPublicFieldSignature(value) && !accessDescriptor.isPrivate() } return (afterFields.keys subtract beforeFields.keys).map { - val field = afterFields[it] + val field = afterFields[it]!! Delta( after!!.name, - field!!.name, + field.name, String.format("Field %s on class %s was added.", field.name, after.name), ADDED_FIELD, VersionDelta.MINOR, @@ -479,59 +493,59 @@ enum class DeltaType { val allBeforeMethods = getAllMethods(before) val allAfterMethods = getAllMethods(after) val publicAfterFields = - allAfterFields.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicFieldSignature(value) && - allBeforeFields.containsKey(key) && + allAfterFields.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicFieldSignature(it.value) && + allBeforeFields.containsKey(it.key) && access.isPublic() } val protectedAfterFields = - allAfterFields.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicFieldSignature(value) && - allBeforeFields.containsKey(key) && + allAfterFields.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicFieldSignature(it.value) && + allBeforeFields.containsKey(it.key) && access.isProtected() } val nonPublicFields = - allBeforeFields.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicFieldSignature(value) && - allAfterFields.containsKey(key) && + allBeforeFields.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicFieldSignature(it.value) && + allAfterFields.containsKey(it.key) && !access.isPublic() } val privateFields = - allBeforeFields.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicFieldSignature(value) && - allAfterFields.containsKey(key) && + allBeforeFields.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicFieldSignature(it.value) && + allAfterFields.containsKey(it.key) && access.isPrivate() } val publicAfterMethods = - allAfterMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allBeforeMethods.containsKey(key) && + allAfterMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allBeforeMethods.containsKey(it.key) && access.isPublic() } val protectedAfterMethods = - allAfterMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allBeforeMethods.containsKey(key) && + allAfterMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allBeforeMethods.containsKey(it.key) && access.isProtected() } val nonPublicMethods = - allBeforeMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allAfterMethods.containsKey(key) && + allBeforeMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allAfterMethods.containsKey(it.key) && !access.isPublic() } val privateMethods = - allBeforeMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allAfterMethods.containsKey(key) && + allBeforeMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allAfterMethods.containsKey(it.key) && access.isPrivate() } val apiDeltas = mutableListOf() @@ -555,11 +569,11 @@ enum class DeltaType { ((publicAfterMethods.keys intersect nonPublicMethods.keys) union ((protectedAfterMethods.keys) intersect privateMethods.keys)) .forEach { - val method = allAfterMethods.get(it) + val method = allAfterMethods.get(it)!! apiDeltas.add( Delta( after.name, - method!!.name, + method.name, String.format( "Method %s on class %s has increased its visiblity.", getMethodSignature(method), @@ -574,11 +588,11 @@ enum class DeltaType { ((publicAfterFields.keys intersect nonPublicFields.keys) union (protectedAfterFields.keys intersect privateFields.keys)) .forEach { - val field = allAfterFields.get(it) + val field = allAfterFields.get(it)!! apiDeltas.add( Delta( after.name, - field!!.name, + field.name, String.format( "Field %s on class %s has reduced its visiblity.", field.name, @@ -601,25 +615,25 @@ enum class DeltaType { val allBeforeMethods = getAllMethods(before) val allAfterMethods = getAllMethods(after) val afterStaticMethods = - allAfterMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allBeforeMethods.containsKey(key) && + allAfterMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allBeforeMethods.containsKey(it.key) && access.isStatic() } val beforeStaticMethods = - allBeforeMethods.filter { (key, value) -> - val access = AccessDescriptor(value.access) - !hasNonPublicMethodSignature(value) && - allBeforeMethods.containsKey(key) && + allBeforeMethods.filter { + val access = AccessDescriptor(it.value.access) + !hasNonPublicMethodSignature(it.value) && + allBeforeMethods.containsKey(it.key) && access.isStatic() } return (beforeStaticMethods.keys subtract afterStaticMethods.keys).map { - val method = beforeStaticMethods.get(it) + val method = beforeStaticMethods.get(it)!! Delta( - after!!.name, - method!!.name, + after.name, + method.name, String.format("Method %s on class %s removed static.", getMethodSignature(method), after), CHANGED_FROM_STATIC, VersionDelta.MINOR,