Skip to content

Commit acba794

Browse files
committed
fix(KnownProvenance): Switch to RemoteProvenance parameters
In order to avoid using the unfinished `DirectoryProvenance`, utilize `RemoteProvenance` interface instead of `KnownProvenance` for passed parameters, either as prerequisite type or as a cast. Signed-off-by: Jens Keim <[email protected]>
1 parent c930dd1 commit acba794

File tree

10 files changed

+28
-21
lines changed

10 files changed

+28
-21
lines changed

model/src/main/kotlin/ProvenanceResolutionResult.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ data class ProvenanceResolutionResult(
3737
* The resolved provenance of the package. Can only be null if a [packageProvenanceResolutionIssue] occurred.
3838
*/
3939
@JsonInclude(JsonInclude.Include.NON_NULL)
40-
val packageProvenance: KnownProvenance? = null,
40+
val packageProvenance: RemoteProvenance? = null,
4141

4242
/**
4343
* The (recursive) sub-repositories of [packageProvenance]. The map can only be empty if a

scanner/src/main/kotlin/ScanController.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import org.ossreviewtoolkit.model.Issue
2424
import org.ossreviewtoolkit.model.KnownProvenance
2525
import org.ossreviewtoolkit.model.Package
2626
import org.ossreviewtoolkit.model.Provenance
27+
import org.ossreviewtoolkit.model.RemoteProvenance
2728
import org.ossreviewtoolkit.model.RepositoryProvenance
2829
import org.ossreviewtoolkit.model.ScanResult
2930
import org.ossreviewtoolkit.model.ScanSummary
@@ -79,7 +80,7 @@ internal class ScanController(
7980
* A map of package [Identifier]s to their resolved [KnownProvenance]s. These provenances are used to filter the
8081
* scan results for a package based on the VCS path.
8182
*/
82-
private val packageProvenances = mutableMapOf<Identifier, KnownProvenance>()
83+
private val packageProvenances = mutableMapOf<Identifier, RemoteProvenance>()
8384

8485
/**
8586
* A map of package [Identifier]s to their resolved [KnownProvenance]s with the VCS path removed. These provenances
@@ -130,7 +131,7 @@ internal class ScanController(
130131
/**
131132
* Set the [provenance] for the package denoted by [id], overwriting any existing values.
132133
*/
133-
fun putPackageProvenance(id: Identifier, provenance: KnownProvenance) {
134+
fun putPackageProvenance(id: Identifier, provenance: RemoteProvenance) {
134135
packageProvenances[id] = provenance
135136
packageProvenancesWithoutVcsPath[id] = when (provenance) {
136137
is RepositoryProvenance -> provenance.copy(vcsInfo = provenance.vcsInfo.copy(path = ""))
@@ -262,7 +263,7 @@ internal class ScanController(
262263
fun getPackagesForProvenanceWithoutVcsPath(provenance: KnownProvenance): Set<Identifier> =
263264
packageProvenancesWithoutVcsPath.filter { (_, packageProvenance) -> packageProvenance == provenance }.keys
264265

265-
fun getPackageProvenance(id: Identifier): KnownProvenance? = packageProvenances[id]
266+
fun getPackageProvenance(id: Identifier): RemoteProvenance? = packageProvenances[id]
266267

267268
/**
268269
* Return the package provenanceResolutionIssue associated with the given [id].

scanner/src/main/kotlin/Scanner.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import org.ossreviewtoolkit.model.OrtResult
4141
import org.ossreviewtoolkit.model.Package
4242
import org.ossreviewtoolkit.model.PackageType
4343
import org.ossreviewtoolkit.model.ProvenanceResolutionResult
44+
import org.ossreviewtoolkit.model.RemoteProvenance
4445
import org.ossreviewtoolkit.model.ScanResult
4546
import org.ossreviewtoolkit.model.ScanSummary
4647
import org.ossreviewtoolkit.model.ScannerRun
@@ -258,7 +259,7 @@ class Scanner(
258259
}.awaitAll()
259260
}.forEach { (pkg, result) ->
260261
result.onSuccess { provenance ->
261-
controller.putPackageProvenance(pkg.id, provenance)
262+
controller.putPackageProvenance(pkg.id, provenance as RemoteProvenance)
262263
}.onFailure {
263264
controller.putPackageProvenanceResolutionIssue(
264265
pkg.id,
@@ -279,7 +280,7 @@ class Scanner(
279280
controller.getPackageProvenancesWithoutVcsPath().map { provenance ->
280281
async {
281282
provenance to runCatching {
282-
nestedProvenanceResolver.resolveNestedProvenance(provenance)
283+
nestedProvenanceResolver.resolveNestedProvenance(provenance as RemoteProvenance)
283284
}
284285
}
285286
}.awaitAll()
@@ -574,7 +575,7 @@ class Scanner(
574575
context: ScanContext
575576
): Map<PathScannerWrapper, ScanResult> {
576577
val downloadDir = try {
577-
provenanceDownloader.download(provenance)
578+
provenanceDownloader.download(provenance as RemoteProvenance)
578579
} catch (e: DownloadException) {
579580
val issue = createAndLogIssue(
580581
"Downloader", "Could not download provenance $provenance: ${e.collectMessages()}"

scanner/src/main/kotlin/provenance/NestedProvenanceResolver.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ import org.apache.logging.log4j.kotlin.logger
2323

2424
import org.ossreviewtoolkit.downloader.WorkingTreeCache
2525
import org.ossreviewtoolkit.model.ArtifactProvenance
26-
import org.ossreviewtoolkit.model.KnownProvenance
2726
import org.ossreviewtoolkit.model.Provenance
27+
import org.ossreviewtoolkit.model.RemoteProvenance
2828
import org.ossreviewtoolkit.model.RepositoryProvenance
2929

3030
/**
@@ -36,7 +36,7 @@ interface NestedProvenanceResolver {
3636
* [NestedProvenance] always contains only the provided [ArtifactProvenance]. For a [RepositoryProvenance] the
3737
* resolver looks for nested repositories, for example Git submodules or Mercurial subrepositories.
3838
*/
39-
suspend fun resolveNestedProvenance(provenance: KnownProvenance): NestedProvenance
39+
suspend fun resolveNestedProvenance(provenance: RemoteProvenance): NestedProvenance
4040
}
4141

4242
/**
@@ -46,7 +46,7 @@ class DefaultNestedProvenanceResolver(
4646
private val storage: NestedProvenanceStorage,
4747
private val workingTreeCache: WorkingTreeCache
4848
) : NestedProvenanceResolver {
49-
override suspend fun resolveNestedProvenance(provenance: KnownProvenance): NestedProvenance {
49+
override suspend fun resolveNestedProvenance(provenance: RemoteProvenance): NestedProvenance {
5050
return when (provenance) {
5151
is ArtifactProvenance -> NestedProvenance(root = provenance, subRepositories = emptyMap())
5252
is RepositoryProvenance -> resolveNestedRepository(provenance)

scanner/src/main/kotlin/provenance/ProvenanceDownloader.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ import org.ossreviewtoolkit.downloader.DownloadException
2929
import org.ossreviewtoolkit.downloader.Downloader
3030
import org.ossreviewtoolkit.downloader.WorkingTreeCache
3131
import org.ossreviewtoolkit.model.ArtifactProvenance
32-
import org.ossreviewtoolkit.model.KnownProvenance
3332
import org.ossreviewtoolkit.model.Package
33+
import org.ossreviewtoolkit.model.RemoteProvenance
3434
import org.ossreviewtoolkit.model.RepositoryProvenance
3535
import org.ossreviewtoolkit.model.config.DownloaderConfiguration
3636
import org.ossreviewtoolkit.utils.common.safeDeleteRecursively
@@ -48,7 +48,7 @@ fun interface ProvenanceDownloader {
4848
*
4949
* Throws a [DownloadException] if the download fails.
5050
*/
51-
fun download(provenance: KnownProvenance): File
51+
fun download(provenance: RemoteProvenance): File
5252

5353
/**
5454
* Download the source code specified by the provided [nestedProvenance] incl. sub-repositories and return the path
@@ -61,7 +61,7 @@ fun interface ProvenanceDownloader {
6161
// Use the provenanceDownloader to download each provenance from nestedProvenance separately, because they are
6262
// likely already cached if a path scanner wrapper is used.
6363

64-
val root = download(nestedProvenance.root)
64+
val root = download(nestedProvenance.root as RemoteProvenance)
6565

6666
nestedProvenance.subRepositories.forEach { (path, provenance) ->
6767
val tempDir = download(provenance)
@@ -83,7 +83,7 @@ class DefaultProvenanceDownloader(
8383
) : ProvenanceDownloader {
8484
private val downloader = Downloader(config)
8585

86-
override fun download(provenance: KnownProvenance): File {
86+
override fun download(provenance: RemoteProvenance): File {
8787
val downloadDir = createOrtTempDir()
8888

8989
when (provenance) {

scanner/src/main/kotlin/storages/ProvenanceBasedFileStorage.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import org.apache.logging.log4j.kotlin.logger
2929

3030
import org.ossreviewtoolkit.model.ArtifactProvenance
3131
import org.ossreviewtoolkit.model.KnownProvenance
32+
import org.ossreviewtoolkit.model.RemoteProvenance
3233
import org.ossreviewtoolkit.model.RepositoryProvenance
3334
import org.ossreviewtoolkit.model.ScanResult
3435
import org.ossreviewtoolkit.model.yamlMapper
@@ -45,7 +46,7 @@ class ProvenanceBasedFileStorage(private val backend: FileStorage) : ProvenanceB
4546
override fun read(provenance: KnownProvenance, scannerMatcher: ScannerMatcher?): List<ScanResult> {
4647
requireEmptyVcsPath(provenance)
4748

48-
val path = storagePath(provenance)
49+
val path = storagePath(provenance as RemoteProvenance)
4950

5051
return runCatching {
5152
backend.read(path).use { input ->
@@ -94,7 +95,7 @@ class ProvenanceBasedFileStorage(private val backend: FileStorage) : ProvenanceB
9495

9596
val scanResults = existingScanResults + scanResult
9697

97-
val path = storagePath(provenance)
98+
val path = storagePath(provenance as RemoteProvenance)
9899
val yamlBytes = yamlMapper.writeValueAsBytes(scanResults)
99100
val input = ByteArrayInputStream(yamlBytes)
100101

@@ -117,7 +118,7 @@ class ProvenanceBasedFileStorage(private val backend: FileStorage) : ProvenanceB
117118
}
118119
}
119120

120-
private fun storagePath(provenance: KnownProvenance) =
121+
private fun storagePath(provenance: RemoteProvenance) =
121122
when (provenance) {
122123
is ArtifactProvenance -> "artifact/${provenance.sourceArtifact.url.fileSystemEncode()}/$SCAN_RESULTS_FILE_NAME"
123124
is RepositoryProvenance -> {

scanner/src/main/kotlin/storages/ProvenanceBasedPostgresStorage.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import org.jetbrains.exposed.sql.selectAll
3636

3737
import org.ossreviewtoolkit.model.ArtifactProvenance
3838
import org.ossreviewtoolkit.model.KnownProvenance
39+
import org.ossreviewtoolkit.model.RemoteProvenance
3940
import org.ossreviewtoolkit.model.RepositoryProvenance
4041
import org.ossreviewtoolkit.model.ScanResult
4142
import org.ossreviewtoolkit.model.ScanSummary

scanner/src/main/kotlin/utils/FileListResolver.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import java.io.File
2626

2727
import org.ossreviewtoolkit.model.HashAlgorithm
2828
import org.ossreviewtoolkit.model.KnownProvenance
29+
import org.ossreviewtoolkit.model.RemoteProvenance
2930
import org.ossreviewtoolkit.model.toYaml
3031
import org.ossreviewtoolkit.model.utils.ProvenanceFileStorage
3132
import org.ossreviewtoolkit.model.yamlMapper
@@ -58,7 +59,7 @@ class FileListResolver(
5859
fun resolve(provenance: KnownProvenance): FileList {
5960
storage.getFileList(provenance)?.let { return it }
6061

61-
val dir = provenanceDownloader.download(provenance)
62+
val dir = provenanceDownloader.download(provenance as RemoteProvenance)
6263

6364
return createFileList(dir).also {
6465
try {

scanner/src/test/kotlin/ScannerTest.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import org.ossreviewtoolkit.model.Package
4949
import org.ossreviewtoolkit.model.PackageType
5050
import org.ossreviewtoolkit.model.Provenance
5151
import org.ossreviewtoolkit.model.RemoteArtifact
52+
import org.ossreviewtoolkit.model.RemoteProvenance
5253
import org.ossreviewtoolkit.model.RepositoryProvenance
5354
import org.ossreviewtoolkit.model.ScanResult
5455
import org.ossreviewtoolkit.model.ScanSummary
@@ -973,7 +974,7 @@ private class FakePathScannerWrapper : PathScannerWrapper {
973974
* provenance, instead of actually downloading the source code.
974975
*/
975976
private class FakeProvenanceDownloader(val filename: String = "fake.txt") : ProvenanceDownloader {
976-
override fun download(provenance: KnownProvenance): File =
977+
override fun download(provenance: RemoteProvenance): File =
977978
createOrtTempDir().apply {
978979
resolve(filename).writeText(provenance.toYaml())
979980
}
@@ -1012,7 +1013,7 @@ private class FakePackageProvenanceResolver : PackageProvenanceResolver {
10121013
* An implementation of [NestedProvenanceResolver] that always returns a non-nested provenance.
10131014
*/
10141015
private class FakeNestedProvenanceResolver : NestedProvenanceResolver {
1015-
override suspend fun resolveNestedProvenance(provenance: KnownProvenance): NestedProvenance =
1016+
override suspend fun resolveNestedProvenance(provenance: RemoteProvenance): NestedProvenance =
10161017
NestedProvenance(root = provenance, subRepositories = emptyMap())
10171018
}
10181019

utils/test/src/main/kotlin/Utils.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import org.ossreviewtoolkit.model.OrtResult
3737
import org.ossreviewtoolkit.model.Package
3838
import org.ossreviewtoolkit.model.ProvenanceResolutionResult
3939
import org.ossreviewtoolkit.model.RemoteArtifact
40+
import org.ossreviewtoolkit.model.RemoteProvenance
4041
import org.ossreviewtoolkit.model.RepositoryProvenance
4142
import org.ossreviewtoolkit.model.ScanResult
4243
import org.ossreviewtoolkit.model.ScannerRun
@@ -198,7 +199,7 @@ fun scannerRunOf(vararg pkgScanResults: Pair<Identifier, List<ScanResult>>): Sca
198199

199200
return ScannerRun.EMPTY.copy(
200201
provenances = pkgScanResultsWithKnownProvenance.mapTo(mutableSetOf()) { (id, scanResultsForId) ->
201-
val packageProvenance = scanResultsForId.firstOrNull()?.provenance as KnownProvenance
202+
val packageProvenance = scanResultsForId.firstOrNull()?.provenance as RemoteProvenance
202203

203204
ProvenanceResolutionResult(
204205
id = id,

0 commit comments

Comments
 (0)