[Gradle] Replace IdeaKotlinProjectArtifactDependency.Resolver by resolved function
^KT-55112 Verification Pending
This commit is contained in:
committed by
Space Team
parent
4c270c7f6e
commit
2f5dc93ba7
+2
-3
@@ -5,13 +5,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.idea.tcs
|
||||
|
||||
import org.jetbrains.kotlin.tooling.core.MutableExtras
|
||||
import org.jetbrains.kotlin.tooling.core.HasMutableExtras
|
||||
import java.io.Serializable
|
||||
|
||||
@IdeaKotlinModel
|
||||
sealed interface IdeaKotlinDependency : Serializable {
|
||||
sealed interface IdeaKotlinDependency : Serializable, HasMutableExtras {
|
||||
val coordinates: IdeaKotlinDependencyCoordinates?
|
||||
val extras: MutableExtras
|
||||
|
||||
companion object {
|
||||
const val CLASSPATH_BINARY_TYPE = "org.jetbrains.kotlin.gradle.idea.tcs.IdeDependency.classpathBinaryType"
|
||||
|
||||
+19
-44
@@ -3,10 +3,11 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:Suppress("UnusedReceiverParameter")
|
||||
|
||||
package org.jetbrains.kotlin.gradle.idea.tcs
|
||||
|
||||
import org.jetbrains.kotlin.tooling.core.MutableExtras
|
||||
import org.jetbrains.kotlin.tooling.core.mutableExtrasOf
|
||||
import org.jetbrains.kotlin.tooling.core.*
|
||||
|
||||
data class IdeaKotlinProjectArtifactDependency(
|
||||
val type: IdeaKotlinSourceDependency.Type,
|
||||
@@ -14,52 +15,26 @@ data class IdeaKotlinProjectArtifactDependency(
|
||||
override val extras: MutableExtras = mutableExtrasOf()
|
||||
) : IdeaKotlinDependency {
|
||||
|
||||
@IdeaKotlinService
|
||||
fun interface Resolver {
|
||||
fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency?
|
||||
|
||||
companion object {
|
||||
fun byName(resolveSourceSetName: (IdeaKotlinProjectArtifactDependency) -> String?): Resolver {
|
||||
return DefaultProjectArtifactDependencyResolver(resolveSourceSetName)
|
||||
fun resolved(sourceSetNames: Iterable<String>): Set<IdeaKotlinSourceDependency> {
|
||||
return sourceSetNames.toSet()
|
||||
.map { sourceSetName ->
|
||||
IdeaKotlinSourceDependency(
|
||||
type = type,
|
||||
extras = extras.toMutableExtras(),
|
||||
coordinates = IdeaKotlinSourceCoordinates(
|
||||
project = coordinates.project,
|
||||
sourceSetName = sourceSetName
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
fun composite(vararg resolver: Resolver?) =
|
||||
composite(resolver.toList())
|
||||
|
||||
fun composite(resolvers: Iterable<Resolver?>): Resolver =
|
||||
CompositeProjectArtifactDependencyResolver(resolvers.filterNotNull())
|
||||
|
||||
}
|
||||
.onEach { it.projectArtifactDependencyOrigin = this }
|
||||
.toSet()
|
||||
}
|
||||
|
||||
internal companion object {
|
||||
const val serialVersionUID = 0L
|
||||
}
|
||||
}
|
||||
|
||||
fun IdeaKotlinProjectArtifactDependency.resolved(resolver: IdeaKotlinProjectArtifactDependency.Resolver): IdeaKotlinSourceDependency? {
|
||||
return resolver.resolve(this)
|
||||
}
|
||||
|
||||
private class DefaultProjectArtifactDependencyResolver(
|
||||
private val resolveSourceSetName: (IdeaKotlinProjectArtifactDependency) -> String?
|
||||
) : IdeaKotlinProjectArtifactDependency.Resolver {
|
||||
override fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency? {
|
||||
return IdeaKotlinSourceDependency(
|
||||
type = dependency.type,
|
||||
coordinates = IdeaKotlinSourceCoordinates(
|
||||
project = dependency.coordinates.project,
|
||||
sourceSetName = resolveSourceSetName(dependency) ?: return null
|
||||
),
|
||||
extras = dependency.extras
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private class CompositeProjectArtifactDependencyResolver(
|
||||
private val resolvers: List<IdeaKotlinProjectArtifactDependency.Resolver>
|
||||
) : IdeaKotlinProjectArtifactDependency.Resolver {
|
||||
override fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency? {
|
||||
return resolvers.firstNotNullOfOrNull { resolver -> resolver.resolve(dependency) }
|
||||
|
||||
var IdeaKotlinSourceDependency.projectArtifactDependencyOrigin by extrasKeyOf<IdeaKotlinProjectArtifactDependency>("origin")
|
||||
private set
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user