Skip to content

Commit 4106a8a

Browse files
committed
render Any type to flattened RAML
1 parent b52a4d9 commit 4106a8a

File tree

6 files changed

+40
-15
lines changed

6 files changed

+40
-15
lines changed

codegen-core/src/main/kotlin/io/vrap/rmf/codegen/rendring/CodeGenerator.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import io.vrap.rmf.codegen.io.TemplateFile
66
import io.vrap.rmf.raml.model.resources.Method
77
import io.vrap.rmf.raml.model.resources.Resource
88
import io.vrap.rmf.raml.model.resources.Trait
9+
import io.vrap.rmf.raml.model.types.AnyType
910
import io.vrap.rmf.raml.model.types.ObjectType
1011
import io.vrap.rmf.raml.model.types.StringType
1112
import io.vrap.rmf.raml.model.types.UnionType
1213
import org.reactivestreams.Publisher
1314
import org.slf4j.LoggerFactory
14-
import kotlin.concurrent.fixedRateTimer
1515

1616
interface CodeGenerator {
1717
fun generate(): MutableList<Publisher<TemplateFile>>
@@ -47,7 +47,8 @@ class ObjectTypeGenerator constructor(generators: Set<ObjectTypeRenderer>, @AllO
4747
class StringTypeGenerator constructor(generators: Set<StringTypeRenderer>, @EnumStringTypes allTypes: List<StringType>) : CodeGeneratorImpl<StringTypeRenderer, StringType>(generators, allTypes)
4848
class UnionTypeGenerator constructor(generators: Set<UnionTypeRenderer>, @AllUnionTypes allTypes: List<UnionType>) : CodeGeneratorImpl<UnionTypeRenderer, UnionType>(generators, allTypes)
4949
class PatternStringTypeGenerator constructor(generators: Set<PatternStringTypeRenderer>, @PatternStringTypes allTypes: List<StringType>) : CodeGeneratorImpl<PatternStringTypeRenderer, StringType>(generators, allTypes)
50-
class NamedScalarTypeGenerator constructor(generators: Set<NamedScalarTypeRenderer>, @NamedScalarTypes allTypes: List<StringType>) : CodeGeneratorImpl<NamedScalarTypeRenderer, StringType>(generators, allTypes)
50+
class NamedStringTypeGenerator constructor(generators: Set<NamedStringTypeRenderer>, @NamedScalarTypes allTypes: List<StringType>) : CodeGeneratorImpl<NamedStringTypeRenderer, StringType>(generators, allTypes)
51+
class NamedScalarTypeGenerator<T: AnyType> constructor(generators: Set<NamedScalarTypeRenderer<T>>, @NamedScalarTypes allTypes: List<T>) : CodeGeneratorImpl<NamedScalarTypeRenderer<T>, T>(generators, allTypes)
5152
class ResourceGenerator constructor(generators: Set<ResourceRenderer>, @AllResources allTypes: List<Resource>) : CodeGeneratorImpl<ResourceRenderer, Resource>(generators, allTypes)
5253
class MethodGenerator constructor(generators: Set<MethodRenderer>, @AllResourceMethods allTypes: List<Method>) : CodeGeneratorImpl<MethodRenderer, Method>(generators, allTypes)
5354
class TraitGenerator constructor(generators: Set<TraitRenderer>, @AllTraits allTypes: List<Trait>) : CodeGeneratorImpl<TraitRenderer, Trait>(generators, allTypes)
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package io.vrap.rmf.codegen.rendring
22

3-
import io.vrap.rmf.raml.model.types.StringType
3+
import io.vrap.rmf.raml.model.types.AnyType
44

5-
interface NamedScalarTypeRenderer : Renderer<StringType>
5+
interface NamedScalarTypeRenderer<T: AnyType> : Renderer<T>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package io.vrap.rmf.codegen.rendring
2+
3+
import io.vrap.rmf.raml.model.types.StringType
4+
5+
interface NamedStringTypeRenderer : NamedScalarTypeRenderer<StringType>

languages/oas/src/main/kotlin/io/vrap/codegen/languages/oas/model/RamlScalarTypeRenderer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ import io.vrap.codegen.languages.oas.extensions.renderAnnotation
66
import io.vrap.codegen.languages.oas.extensions.renderEAttributes
77
import io.vrap.rmf.codegen.di.ModelPackageName
88
import io.vrap.rmf.codegen.io.TemplateFile
9-
import io.vrap.rmf.codegen.rendring.NamedScalarTypeRenderer
9+
import io.vrap.rmf.codegen.rendring.NamedStringTypeRenderer
1010
import io.vrap.rmf.codegen.rendring.PatternStringTypeRenderer
1111
import io.vrap.rmf.codegen.rendring.StringTypeRenderer
1212
import io.vrap.rmf.codegen.rendring.utils.keepAngleIndent
1313
import io.vrap.rmf.codegen.types.*
1414
import io.vrap.rmf.raml.model.types.*
1515
import java.lang.Exception
1616

17-
class RamlScalarTypeRenderer constructor(override val vrapTypeProvider: VrapTypeProvider, @ModelPackageName val modelPackageName: String) : ExtensionsBase, StringTypeRenderer, PatternStringTypeRenderer, NamedScalarTypeRenderer {
17+
class RamlScalarTypeRenderer constructor(override val vrapTypeProvider: VrapTypeProvider, @ModelPackageName val modelPackageName: String) : ExtensionsBase, StringTypeRenderer, PatternStringTypeRenderer, NamedStringTypeRenderer {
1818

1919
override fun render(type: StringType): TemplateFile {
2020
return when (val vrapType = vrapTypeProvider.doSwitch(type)) {

languages/ramldoc/src/main/kotlin/io/vrap/codegen/languages/ramldoc/model/RamlScalarTypeRenderer.kt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,33 @@ import io.vrap.codegen.languages.ramldoc.extensions.renderEAttributes
77
import io.vrap.rmf.codegen.di.ModelPackageName
88
import io.vrap.rmf.codegen.io.TemplateFile
99
import io.vrap.rmf.codegen.rendring.NamedScalarTypeRenderer
10+
import io.vrap.rmf.codegen.rendring.NamedStringTypeRenderer
1011
import io.vrap.rmf.codegen.rendring.PatternStringTypeRenderer
1112
import io.vrap.rmf.codegen.rendring.StringTypeRenderer
1213
import io.vrap.rmf.codegen.rendring.utils.keepAngleIndent
1314
import io.vrap.rmf.codegen.types.*
1415
import io.vrap.rmf.raml.model.types.*
16+
import org.eclipse.emf.ecore.EObject
1517
import java.lang.Exception
1618

17-
class RamlScalarTypeRenderer constructor(override val vrapTypeProvider: VrapTypeProvider, @ModelPackageName val modelPackageName: String) : ExtensionsBase, StringTypeRenderer, PatternStringTypeRenderer, NamedScalarTypeRenderer {
19+
class RamlStringTypeRenderer constructor(override val vrapTypeProvider: VrapTypeProvider, @ModelPackageName override val modelPackageName: String) : RamlScalarTypeRenderer<StringType>(vrapTypeProvider, modelPackageName), StringTypeRenderer, PatternStringTypeRenderer, NamedStringTypeRenderer
20+
class RamlAnyTypeRenderer constructor(override val vrapTypeProvider: VrapTypeProvider, @ModelPackageName override val modelPackageName: String) : RamlScalarTypeRenderer<AnyType>(vrapTypeProvider, modelPackageName)
1821

19-
override fun render(type: StringType): TemplateFile {
22+
sealed class RamlScalarTypeRenderer<T: AnyType> constructor(override val vrapTypeProvider: VrapTypeProvider, @ModelPackageName open val modelPackageName: String) : ExtensionsBase, NamedScalarTypeRenderer<T> {
23+
24+
25+
override fun render(type: T): TemplateFile {
2026
return when (val vrapType = vrapTypeProvider.doSwitch(type)) {
21-
is VrapEnumType -> render(vrapType, type)
27+
is VrapEnumType -> when (type) {
28+
is StringType -> render(vrapType, type)
29+
else -> throw Exception()
30+
}
2231
is VrapScalarType -> render(vrapType, type)
2332
else -> throw Exception()
2433
}
2534
}
2635

27-
private fun render(vrapType: VrapEnumType, type: StringType): TemplateFile {
36+
private fun render(vrapType: VrapEnumType, type: AnyType): TemplateFile {
2837
val postmanExampleAnno = type.getAnnotation("postman-example")
2938
val postmanExample = if (postmanExampleAnno != null) {
3039
val example = TypesFactory.eINSTANCE.createExample()
@@ -56,7 +65,7 @@ class RamlScalarTypeRenderer constructor(override val vrapTypeProvider: VrapType
5665
)
5766
}
5867

59-
private fun render(vrapType: VrapScalarType, type: StringType): TemplateFile {
68+
private fun render(vrapType: VrapScalarType, type: AnyType): TemplateFile {
6069
val postmanExampleAnno = type.getAnnotation("postman-example")
6170
val postmanExample = if (postmanExampleAnno != null) {
6271
val example = TypesFactory.eINSTANCE.createExample()

languages/ramldoc/src/main/kotlin/io/vrap/codegen/languages/ramldoc/model/RamldocModelModule.kt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package io.vrap.codegen.languages.ramldoc.model
22

3+
import io.vrap.codegen.languages.ramldoc.extensions.isScalar
34
import io.vrap.rmf.codegen.di.GeneratorModule
45
import io.vrap.rmf.codegen.di.Module
56
import io.vrap.rmf.codegen.rendring.*
7+
import io.vrap.rmf.raml.model.types.*
68

79
object RamldocModelModule : Module {
810
override fun configure(generatorModule: GeneratorModule) = setOf<CodeGenerator>(
@@ -14,18 +16,22 @@ object RamldocModelModule : Module {
1416
),
1517
StringTypeGenerator(
1618
setOf(
17-
RamlScalarTypeRenderer(generatorModule.vrapTypeProvider(), generatorModule.provideModelPackageName())
19+
RamlStringTypeRenderer(generatorModule.vrapTypeProvider(), generatorModule.provideModelPackageName())
1820
),
1921
generatorModule.allEnumStringTypes()
2022
),
2123
PatternStringTypeGenerator(
2224
setOf(
23-
RamlScalarTypeRenderer(generatorModule.vrapTypeProvider(), generatorModule.provideModelPackageName())
25+
RamlStringTypeRenderer(generatorModule.vrapTypeProvider(), generatorModule.provideModelPackageName())
2426
), generatorModule.allPatternStringTypes()),
25-
NamedScalarTypeGenerator(
27+
NamedStringTypeGenerator(
2628
setOf(
27-
RamlScalarTypeRenderer(generatorModule.vrapTypeProvider(), generatorModule.provideModelPackageName())
29+
RamlStringTypeRenderer(generatorModule.vrapTypeProvider(), generatorModule.provideModelPackageName())
2830
), generatorModule.allNamedScalarTypes()),
31+
NamedScalarTypeGenerator(
32+
setOf(
33+
RamlAnyTypeRenderer(generatorModule.vrapTypeProvider(), generatorModule.provideModelPackageName())
34+
), generatorModule.allAnyTypes().namedAnyTypes()),
2935
ResourceGenerator(
3036
setOf(
3137
RamlResourceRenderer(generatorModule.provideRamlModel(), generatorModule.vrapTypeProvider())
@@ -36,4 +42,8 @@ object RamldocModelModule : Module {
3642
RamlExampleRenderer(generatorModule.allResourceMethods(), generatorModule.allAnyTypes(), generatorModule.vrapTypeProvider(), generatorModule.provideModelPackageName())
3743
))
3844
)
45+
46+
fun List<AnyType>.namedAnyTypes(): List<AnyType> {
47+
return this.filter { !it.isScalar() && !(it is ObjectType) && !(it is ArrayType) && !(it is UnionType) && !(it is IntersectionType) && !(it is NilType)}
48+
}
3949
}

0 commit comments

Comments
 (0)