Skip to content

Commit 0fe6683

Browse files
committed
openapi-processor/openapi-processor-spring#198, let a processor create additional packages
1 parent e4df4fd commit 0fe6683

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

openapi-processor-core/src/main/kotlin/io/openapiprocessor/core/writer/DefaultWriterFactory.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ import kotlin.io.path.deleteRecursively
2222
/**
2323
* Writer factory for local file system. Must be initialized via [InitWriterTarget].
2424
*/
25-
class DefaultWriterFactory(val options: ApiOptions) : WriterFactory, InitWriterTarget {
25+
open class DefaultWriterFactory(val options: ApiOptions): WriterFactory, InitWriterTarget
26+
{
2627
private var log: Logger = LoggerFactory.getLogger(this.javaClass.name)
2728

2829
private lateinit var paths: Map<String, Path>
@@ -59,9 +60,15 @@ class DefaultWriterFactory(val options: ApiOptions) : WriterFactory, InitWriterT
5960
log.debug("initialized target folder: {}", validationPath.toAbsolutePath().toString())
6061
}
6162

63+
pkgPaths.putAll(initAdditionalPackages(options))
64+
6265
paths = pkgPaths
6366
}
6467

68+
open fun initAdditionalPackages(options: ApiOptions): Map<String, Path> {
69+
return emptyMap()
70+
}
71+
6572
@OptIn(ExperimentalPathApi::class)
6673
private fun clearTargetDir() {
6774
try {
@@ -71,7 +78,7 @@ class DefaultWriterFactory(val options: ApiOptions) : WriterFactory, InitWriterT
7178
}
7279
}
7380

74-
private fun initTargetPackage(subPackageName: String): Pair<String, Path> {
81+
protected fun initTargetPackage(subPackageName: String): Pair<String, Path> {
7582
val rootPackageFolder = options.packageName.replace(".", "/")
7683

7784
val apiPackage = options.packageName.plus(".$subPackageName")

openapi-processor-core/src/test/kotlin/io/openapiprocessor/core/writer/DefaultWriterFactorySpec.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,22 @@ class DefaultWriterFactorySpec : StringSpec({
154154
Files.exists(support.resolve("Old.java")) shouldBe false
155155
Files.exists(validation.resolve("Old.java")) shouldBe false
156156
}
157+
158+
"initializes additional package folders" {
159+
val writerFactory = object : DefaultWriterFactory(options) {
160+
override fun initAdditionalPackages(options: ApiOptions): Map<String, Path> {
161+
val pkgPaths = HashMap<String, Path>()
162+
val (name, path) = initTargetPackage("foo/bar")
163+
return pkgPaths
164+
}
165+
}
166+
writerFactory.init()
167+
168+
val additional = options.getSourceDir("foo/bar")
169+
170+
Files.exists(additional) shouldBe true
171+
Files.isDirectory(additional) shouldBe true
172+
}
157173
})
158174

159175

0 commit comments

Comments
 (0)