diff --git a/analyzer/src/main/kotlin/managers/utils/PackageManagerDependencyHandler.kt b/analyzer/src/main/kotlin/managers/utils/PackageManagerDependencyHandler.kt index 4c943d1a35f1..03fa4936cca4 100644 --- a/analyzer/src/main/kotlin/managers/utils/PackageManagerDependencyHandler.kt +++ b/analyzer/src/main/kotlin/managers/utils/PackageManagerDependencyHandler.kt @@ -73,10 +73,10 @@ class PackageManagerDependencyHandler( private val navigator = DependencyGraphNavigator(analyzerResult.dependencyGraphs) - override fun createPackage(dependency: ResolvableDependencyNode, issues: MutableList): Package? = + override fun createPackage(dependency: ResolvableDependencyNode, issues: MutableCollection): Package? = analyzerResult.packages.find { it.id == dependency.id } - override fun dependenciesFor(dependency: ResolvableDependencyNode): Collection = + override fun dependenciesFor(dependency: ResolvableDependencyNode): List = buildList { dependency.visitDependencies { dependencies -> dependencies.forEach { node -> @@ -87,7 +87,7 @@ class PackageManagerDependencyHandler( override fun identifierFor(dependency: ResolvableDependencyNode): Identifier = dependency.id - override fun issuesForDependency(dependency: ResolvableDependencyNode): Collection = dependency.issues + override fun issuesForDependency(dependency: ResolvableDependencyNode): List = dependency.issues override fun linkageFor(dependency: ResolvableDependencyNode): PackageLinkage = dependency.linkage diff --git a/model/src/main/kotlin/utils/DependencyGraphConverter.kt b/model/src/main/kotlin/utils/DependencyGraphConverter.kt index 2394a6d86af4..d48899f8a8a6 100644 --- a/model/src/main/kotlin/utils/DependencyGraphConverter.kt +++ b/model/src/main/kotlin/utils/DependencyGraphConverter.kt @@ -132,14 +132,14 @@ object DependencyGraphConverter { private object ScopesDependencyHandler : DependencyHandler { override fun identifierFor(dependency: PackageReference): Identifier = dependency.id - override fun dependenciesFor(dependency: PackageReference): Collection = - dependency.dependencies + override fun dependenciesFor(dependency: PackageReference): List = + dependency.dependencies.toList() override fun linkageFor(dependency: PackageReference): PackageLinkage = dependency.linkage - override fun createPackage(dependency: PackageReference, issues: MutableList): Package? = null + override fun createPackage(dependency: PackageReference, issues: MutableCollection): Package? = null - override fun issuesForDependency(dependency: PackageReference): Collection = dependency.issues + override fun issuesForDependency(dependency: PackageReference): List = dependency.issues } } diff --git a/model/src/main/kotlin/utils/DependencyHandler.kt b/model/src/main/kotlin/utils/DependencyHandler.kt index 1e76c4fbe037..fe4c68accd3e 100644 --- a/model/src/main/kotlin/utils/DependencyHandler.kt +++ b/model/src/main/kotlin/utils/DependencyHandler.kt @@ -43,7 +43,7 @@ interface DependencyHandler { * Return a collection with the dependencies of the given [dependency]. [DependencyGraphBuilder] invokes this * function to construct the whole dependency tree spawned by this [dependency]. */ - fun dependenciesFor(dependency: D): Collection + fun dependenciesFor(dependency: D): List /** * Return the [PackageLinkage] for the given [dependency]. @@ -57,12 +57,12 @@ interface DependencyHandler { * the provided [issues] list. If the [dependency] does not map to a package, an implementation should return * *null*. */ - fun createPackage(dependency: D, issues: MutableList): Package? + fun createPackage(dependency: D, issues: MutableCollection): Package? /** * Return a collection with known issues for the given [dependency]. Some package manager implementations may * already encounter problems when obtaining dependency representations. These can be reported here. This base * implementation returns an empty collection. */ - fun issuesForDependency(dependency: D): Collection = emptyList() + fun issuesForDependency(dependency: D): List = emptyList() } diff --git a/model/src/test/kotlin/utils/DependencyGraphBuilderTest.kt b/model/src/test/kotlin/utils/DependencyGraphBuilderTest.kt index 114490da5031..7bd4c17aabe7 100644 --- a/model/src/test/kotlin/utils/DependencyGraphBuilderTest.kt +++ b/model/src/test/kotlin/utils/DependencyGraphBuilderTest.kt @@ -357,14 +357,15 @@ private const val NO_PACKAGE_NAMESPACE = "no-package" private object PackageRefDependencyHandler : DependencyHandler { override fun identifierFor(dependency: PackageReference): Identifier = dependency.id - override fun dependenciesFor(dependency: PackageReference): Collection = dependency.dependencies + override fun dependenciesFor(dependency: PackageReference): List = + dependency.dependencies.toList() override fun linkageFor(dependency: PackageReference): PackageLinkage = dependency.linkage - override fun createPackage(dependency: PackageReference, issues: MutableList): Package? = + override fun createPackage(dependency: PackageReference, issues: MutableCollection): Package? = Package.EMPTY.copy(id = dependency.id).takeUnless { dependency.id.namespace == NO_PACKAGE_NAMESPACE } - override fun issuesForDependency(dependency: PackageReference): Collection = dependency.issues + override fun issuesForDependency(dependency: PackageReference): List = dependency.issues } /** diff --git a/plugins/package-managers/gradle/src/main/kotlin/GradleDependencyHandler.kt b/plugins/package-managers/gradle/src/main/kotlin/GradleDependencyHandler.kt index f0947540eb7c..78a9ecd9806d 100644 --- a/plugins/package-managers/gradle/src/main/kotlin/GradleDependencyHandler.kt +++ b/plugins/package-managers/gradle/src/main/kotlin/GradleDependencyHandler.kt @@ -64,9 +64,9 @@ internal class GradleDependencyHandler( version = dependency.version ) - override fun dependenciesFor(dependency: OrtDependency): Collection = dependency.dependencies + override fun dependenciesFor(dependency: OrtDependency): List = dependency.dependencies - override fun issuesForDependency(dependency: OrtDependency): Collection = + override fun issuesForDependency(dependency: OrtDependency): List = listOfNotNull( dependency.error?.let { createAndLogIssue( @@ -88,7 +88,7 @@ internal class GradleDependencyHandler( override fun linkageFor(dependency: OrtDependency): PackageLinkage = if (dependency.isProjectDependency()) PackageLinkage.PROJECT_DYNAMIC else PackageLinkage.DYNAMIC - override fun createPackage(dependency: OrtDependency, issues: MutableList): Package? { + override fun createPackage(dependency: OrtDependency, issues: MutableCollection): Package? { // Only look for a package if there was no error resolving the dependency and it is no project dependency. if (dependency.error != null || dependency.isProjectDependency()) return null diff --git a/plugins/package-managers/maven/src/main/kotlin/utils/MavenDependencyHandler.kt b/plugins/package-managers/maven/src/main/kotlin/utils/MavenDependencyHandler.kt index 355fdf1f53c9..83cbda77cc5d 100644 --- a/plugins/package-managers/maven/src/main/kotlin/utils/MavenDependencyHandler.kt +++ b/plugins/package-managers/maven/src/main/kotlin/utils/MavenDependencyHandler.kt @@ -69,7 +69,7 @@ class MavenDependencyHandler( version = dependency.artifact.version ) - override fun dependenciesFor(dependency: DependencyNode): Collection { + override fun dependenciesFor(dependency: DependencyNode): List { val childrenWithoutToolDependencies = dependency.children.filterNot { node -> TOOL_DEPENDENCIES.any(node.artifact.identifier()::startsWith) } @@ -88,7 +88,7 @@ class MavenDependencyHandler( * Create a [Package] representing a [dependency] if possible, recording any [issues]. Inter-project * dependencies are skipped. */ - override fun createPackage(dependency: DependencyNode, issues: MutableList): Package? { + override fun createPackage(dependency: DependencyNode, issues: MutableCollection): Package? { if (isLocalProject(dependency)) return null return runCatching { diff --git a/plugins/package-managers/node/src/main/kotlin/Yarn2.kt b/plugins/package-managers/node/src/main/kotlin/Yarn2.kt index 5188e50f210e..fe31babb2e9a 100644 --- a/plugins/package-managers/node/src/main/kotlin/Yarn2.kt +++ b/plugins/package-managers/node/src/main/kotlin/Yarn2.kt @@ -720,12 +720,14 @@ class Yarn2( private class Yarn2DependencyHandler : DependencyHandler { override fun identifierFor(dependency: YarnModuleInfo): Identifier = dependency.id - override fun dependenciesFor(dependency: YarnModuleInfo): Collection = dependency.dependencies + override fun dependenciesFor(dependency: YarnModuleInfo): List = + dependency.dependencies.toList() override fun linkageFor(dependency: YarnModuleInfo): PackageLinkage = if (dependency.pkg == null) PackageLinkage.PROJECT_DYNAMIC else PackageLinkage.DYNAMIC - override fun createPackage(dependency: YarnModuleInfo, issues: MutableList): Package? = dependency.pkg + override fun createPackage(dependency: YarnModuleInfo, issues: MutableCollection): Package? = + dependency.pkg } /** diff --git a/plugins/package-managers/node/src/main/kotlin/utils/NpmDependencyHandler.kt b/plugins/package-managers/node/src/main/kotlin/utils/NpmDependencyHandler.kt index 21542d310d52..d154e3f2add6 100644 --- a/plugins/package-managers/node/src/main/kotlin/utils/NpmDependencyHandler.kt +++ b/plugins/package-managers/node/src/main/kotlin/utils/NpmDependencyHandler.kt @@ -67,11 +67,11 @@ internal data class NpmModuleInfo( internal class NpmDependencyHandler(private val npm: Npm) : DependencyHandler { override fun identifierFor(dependency: NpmModuleInfo): Identifier = dependency.id - override fun dependenciesFor(dependency: NpmModuleInfo): Collection = dependency.dependencies + override fun dependenciesFor(dependency: NpmModuleInfo): List = dependency.dependencies.toList() override fun linkageFor(dependency: NpmModuleInfo): PackageLinkage = PackageLinkage.DYNAMIC - override fun createPackage(dependency: NpmModuleInfo, issues: MutableList): Package = + override fun createPackage(dependency: NpmModuleInfo, issues: MutableCollection): Package = runBlocking { npm.parsePackage(dependency.workingDir, dependency.packageFile).second }