Skip to content
This repository was archived by the owner on Mar 16, 2025. It is now read-only.

Commit 5a11e7f

Browse files
committed
migrate to kotlin
1 parent d9b5889 commit 5a11e7f

6 files changed

+221
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Copyright 2019 https://github.com/openapi-processor/openapi-processor-core
3+
* PDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.openapiprocessor.core
7+
8+
import io.kotest.core.spec.style.StringSpec
9+
import io.kotest.engine.spec.tempdir
10+
import io.kotest.matchers.booleans.shouldBeTrue
11+
import io.openapiprocessor.api.v1.OpenApiProcessor
12+
import io.openapiprocessor.core.parser.ParserType
13+
import io.openapiprocessor.test.FileSupport
14+
import io.openapiprocessor.test.TestSet
15+
import io.openapiprocessor.test.TestSetRunner
16+
17+
/**
18+
* helper to run selected integration tests.
19+
*/
20+
class ProcessorPendingSpec: StringSpec({
21+
val folder = tempdir()
22+
23+
for (testSet in sources()) {
24+
"native - $testSet".config(enabled = false) {
25+
TestSetRunner(testSet, FileSupport(ProcessorPendingSpec::class.java))
26+
.runOnNativeFileSystem(folder)
27+
.shouldBeTrue()
28+
}
29+
}
30+
})
31+
32+
private fun sources(): Collection<TestSet> {
33+
return listOf(
34+
testSet("javadoc", TestProcessor(), ParserType.SWAGGER),
35+
testSet("javadoc", TestProcessor(), ParserType.OPENAPI4J)
36+
)
37+
}
38+
39+
@Suppress("SameParameterValue")
40+
private fun testSet(name: String, processor: OpenApiProcessor, parser: ParserType): TestSet {
41+
val testSet = TestSet()
42+
testSet.name = name
43+
testSet.processor = processor
44+
testSet.parser = parser.name
45+
return testSet
46+
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/*
2+
* Copyright 2019 https://github.com/openapi-processor/openapi-processor-core
3+
* PDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.openapiprocessor.core
7+
8+
import io.openapiprocessor.api.v1.OpenApiProcessor
9+
import io.openapiprocessor.core.converter.ApiConverter
10+
import io.openapiprocessor.core.converter.ApiOptions
11+
import io.openapiprocessor.core.converter.OptionsConverter
12+
import io.openapiprocessor.core.framework.FrameworkBase
13+
import io.openapiprocessor.core.parser.Parser
14+
import io.openapiprocessor.core.writer.java.*
15+
import org.slf4j.Logger
16+
import org.slf4j.LoggerFactory
17+
18+
/**
19+
* Simple processor for testing.
20+
*/
21+
class TestProcessor: OpenApiProcessor {
22+
val log: Logger = LoggerFactory.getLogger(this.javaClass.name)
23+
24+
override fun getName(): String {
25+
return "test"
26+
}
27+
28+
override fun run(processorOptions: MutableMap<String, *>) {
29+
try {
30+
val parser = Parser ()
31+
val openapi = parser.parse(processorOptions)
32+
if (processorOptions.containsKey("showWarnings")) {
33+
openapi.printWarnings()
34+
}
35+
36+
val options = convertOptions(processorOptions)
37+
val cv = ApiConverter(options, FrameworkBase())
38+
val api = cv.convert(openapi)
39+
40+
val headerWriter = TestHeaderWriter()
41+
val beanValidation = BeanValidationFactory()
42+
43+
val writer = ApiWriter(
44+
options,
45+
InterfaceWriter(
46+
options,
47+
headerWriter,
48+
MethodWriter(
49+
options,
50+
TestProcessorMappingAnnotationWriter(),
51+
TestProcessorParameterAnnotationWriter(),
52+
beanValidation,
53+
JavaDocWriter()
54+
),
55+
TestFrameworkAnnotations(),
56+
beanValidation,
57+
DefaultImportFilter()
58+
),
59+
DataTypeWriter(
60+
options,
61+
headerWriter,
62+
beanValidation,
63+
JavaDocWriter()
64+
),
65+
StringEnumWriter(headerWriter),
66+
true
67+
)
68+
69+
writer.write(api)
70+
} catch (e: Exception) {
71+
log.error ("processing failed!", e)
72+
throw e
73+
}
74+
}
75+
}
76+
77+
private fun convertOptions(processorOptions: MutableMap<String, *>): ApiOptions {
78+
val target = mutableMapOf<String, Any>()
79+
processorOptions.forEach {(key, value) ->
80+
target[key] = value!!
81+
}
82+
83+
val options = OptionsConverter().convertOptions(target)
84+
options.validate()
85+
return options
86+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Copyright 2019 https://github.com/openapi-processor/openapi-processor-core
3+
* PDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.openapiprocessor.core
7+
8+
import io.openapiprocessor.core.framework.FrameworkAnnotation
9+
import io.openapiprocessor.core.framework.FrameworkAnnotations
10+
import io.openapiprocessor.core.model.HttpMethod
11+
import io.openapiprocessor.core.model.parameters.Parameter
12+
13+
val MAPPING = FrameworkAnnotation("Mapping", "annotation")
14+
val PARAMETER = FrameworkAnnotation("Parameter", "annotation")
15+
16+
/**
17+
* simple [io.openapiprocessor.core.framework.FrameworkAnnotations] implementation for testing.
18+
*/
19+
class TestFrameworkAnnotations: FrameworkAnnotations {
20+
21+
override fun getAnnotation(httpMethod: HttpMethod): FrameworkAnnotation {
22+
return MAPPING
23+
}
24+
25+
override fun getAnnotation(parameter: Parameter): FrameworkAnnotation {
26+
return PARAMETER
27+
}
28+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright 2019 https://github.com/openapi-processor/openapi-processor-core
3+
* PDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.openapiprocessor.core
7+
8+
import io.openapiprocessor.core.writer.java.SimpleWriter
9+
import java.io.Writer
10+
11+
/**
12+
* Writer for a simple header of the generated interfaces & classes.
13+
*/
14+
class TestHeaderWriter: SimpleWriter {
15+
16+
override fun write(target: Writer) {
17+
target.write(HEADER)
18+
}
19+
}
20+
21+
private const val HEADER: String = """
22+
/*
23+
* This class is auto generated by https://github.com/hauner/openapi-processor-core.
24+
* TEST ONLY.
25+
*/
26+
27+
"""
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright 2019 https://github.com/openapi-processor/openapi-processor-core
3+
* PDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.openapiprocessor.core
7+
8+
import io.openapiprocessor.core.model.Endpoint
9+
import io.openapiprocessor.core.model.EndpointResponse
10+
import io.openapiprocessor.core.writer.java.MappingAnnotationWriter
11+
import java.io.Writer
12+
13+
/**
14+
* simple [io.openapiprocessor.core.writer.java.MappingAnnotationWriter] implementation for testing.
15+
*/
16+
class TestProcessorMappingAnnotationWriter: MappingAnnotationWriter {
17+
override fun write(target: Writer, endpoint: Endpoint, endpointResponse: EndpointResponse) {
18+
target.write ("""${MAPPING.annotationName}("${endpoint.path}")""")
19+
}
20+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.openapiprocessor.core
2+
3+
import io.openapiprocessor.core.model.parameters.Parameter
4+
import io.openapiprocessor.core.writer.java.ParameterAnnotationWriter
5+
import java.io.Writer
6+
7+
/**
8+
* simple [io.openapiprocessor.core.writer.java.ParameterAnnotationWriter] implementation for testing.
9+
*/
10+
class TestProcessorParameterAnnotationWriter: ParameterAnnotationWriter {
11+
override fun write(target: Writer, parameter: Parameter) {
12+
target.write (PARAMETER.annotationName)
13+
}
14+
}

0 commit comments

Comments
 (0)