From c3a940255c88189885addb4185e018e56a8c0518 Mon Sep 17 00:00:00 2001 From: Sergey Vlasenko Date: Tue, 2 Apr 2024 18:13:23 +0300 Subject: [PATCH] small fixes --- .../ApiModelsDependencyResolver.kt | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/gradle/plugins/src/main/java/apigen/depencency_resolver/ApiModelsDependencyResolver.kt b/gradle/plugins/src/main/java/apigen/depencency_resolver/ApiModelsDependencyResolver.kt index e36237d..39a2891 100644 --- a/gradle/plugins/src/main/java/apigen/depencency_resolver/ApiModelsDependencyResolver.kt +++ b/gradle/plugins/src/main/java/apigen/depencency_resolver/ApiModelsDependencyResolver.kt @@ -33,27 +33,39 @@ class ApiModelsDependencyResolver( } fun getDependenciesFromFiles(files: Collection): Set = - files.fold(setOf()) { dependencies, file -> - dependencies + getFileDependencies(file) + files.fold(setOf()) { foundDependencies, file -> + val newDependencies = getFileDependencies(file) + + if (newDependencies.isEmpty()) { + foundDependencies + } else { + foundDependencies + getFileDependencies(file) + } } - private fun getFileDependencies(file: File): Set { - if (handledFiles.contains(file)) { + private fun getFileDependencies(sourceFile: File): Set { + if (handledFiles.contains(sourceFile)) { return emptySet() } - handledFiles.add(file) + handledFiles.add(sourceFile) - val json = JsonSlurper().parse(file) as Map + val json = JsonSlurper().parse(sourceFile) as Map val files = fileParser.getAllTypeNamesFromJson(json) .map { type -> modelTypes[type] - ?: throw IllegalArgumentException("Couldn't resolve $type in ${file.name}") + ?: throw IllegalArgumentException("Couldn't resolve $type in ${sourceFile.name}") } .toSet() - return files.fold(files) { dependencies, myFile -> - dependencies + getFileDependencies(myFile) + return files.fold(files) { foundDependencies, file -> + val newDependencies = getFileDependencies(file) + + if (newDependencies.isEmpty()) { + foundDependencies + } else { + foundDependencies + newDependencies + } } } }