Skip to content

Commit 1c9c006

Browse files
committed
refactor code builder module complete second step
1 parent b1d8abb commit 1c9c006

File tree

11 files changed

+51
-25
lines changed

11 files changed

+51
-25
lines changed

src/main/kotlin/wu/seal/jsontokotlin/model/builder/ICodeBuilder.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import wu.seal.jsontokotlin.model.classscodestruct.KotlinClass
88
* Created by Nstd on 2020/6/29 15:27.
99
*/
1010
interface ICodeBuilder<C : KotlinClass> {
11-
1211
/**
1312
* get the code (include referenced classes) string for writing into file or printing out
1413
*/
@@ -18,4 +17,16 @@ interface ICodeBuilder<C : KotlinClass> {
1817
* only the current class code not include the referenced class for writing into file or printing out
1918
*/
2019
fun getOnlyCurrentCode(clazz: C): String
20+
21+
companion object {
22+
val EMPTY = object : ICodeBuilder<KotlinClass> {
23+
override fun getCode(clazz: KotlinClass): String {
24+
return ""
25+
}
26+
27+
override fun getOnlyCurrentCode(clazz: KotlinClass): String {
28+
return ""
29+
}
30+
}
31+
}
2132
}

src/main/kotlin/wu/seal/jsontokotlin/model/builder/KotlinDataClassCodeBuilder.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ class KotlinDataClassCodeBuilder : ICodeBuilder<DataClass> {
1515
const val CONF_KOTLIN_IS_DATA_CLASS = "code.builder.kotlin.isDataClass"
1616
const val CONF_KOTLIN_IS_USE_CONSTRUCTOR_PARAMETER = "code.builder.kotlin.isUseConstructorParameter"
1717
const val CONF_BUILD_FROM_JSON_OBJECT = "code.builder.buildFromJsonObject"
18+
val DEFAULT = KotlinDataClassCodeBuilder()
1819
}
1920

2021
private var isDataClass = true

src/main/kotlin/wu/seal/jsontokotlin/model/builder/KotlinEnumCodeBuilder.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,8 @@ class KotlinEnumCodeBuilder : ICodeBuilder<EnumClass> {
4949
override fun getOnlyCurrentCode(clazz: EnumClass): String {
5050
return getCode(clazz)
5151
}
52+
53+
companion object{
54+
val DEFAULT = KotlinEnumCodeBuilder()
55+
}
5256
}

src/main/kotlin/wu/seal/jsontokotlin/model/builder/KotlinListClassCodeBuilder.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,7 @@ ${referencedClasses.filter { it.modifiable }.joinToString("\n\n") { it.getCode()
3333
""".trimIndent()
3434
}
3535
}
36+
companion object{
37+
val DEFAULT = KotlinListClassCodeBuilder()
38+
}
3639
}

src/main/kotlin/wu/seal/jsontokotlin/model/classscodestruct/DataClass.kt

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,20 @@ import wu.seal.jsontokotlin.model.builder.*
55
import wu.seal.jsontokotlin.utils.*
66

77
data class DataClass(
8-
val annotations: List<Annotation> = listOf(),
9-
override val name: String,
10-
val properties: List<Property> = listOf(),
11-
val parentClassTemplate: String = "",
12-
override val modifiable: Boolean = true,
13-
val comments: String = "",
14-
val fromJsonSchema: Boolean = false,
15-
val excludedProperties: List<String> = listOf(),
16-
val parentClass: KotlinClass? = null
8+
val annotations: List<Annotation> = listOf(),
9+
override val name: String,
10+
val properties: List<Property> = listOf(),
11+
val parentClassTemplate: String = "",
12+
override val modifiable: Boolean = true,
13+
val comments: String = "",
14+
val fromJsonSchema: Boolean = false,
15+
val excludedProperties: List<String> = listOf(),
16+
val parentClass: KotlinClass? = null,
17+
override val codeBuilder: KotlinDataClassCodeBuilder = KotlinDataClassCodeBuilder.DEFAULT
1718
) : ModifiableKotlinClass, NoGenericKotlinClass {
1819

1920
override val hasGeneric: Boolean = false
2021

21-
private val codeBuilder = KotlinDataClassCodeBuilder()
22-
2322
override val referencedClasses: List<KotlinClass>
2423
get() {
2524
return properties.flatMap { property ->

src/main/kotlin/wu/seal/jsontokotlin/model/classscodestruct/EnumClass.kt

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@ import wu.seal.jsontokotlin.model.builder.*
66
* Created by ted on 2020/3/14 18:14.
77
*/
88
data class EnumClass(
9-
override val name: String,
10-
val xEnumNames: List<String>?,
11-
override val generic: KotlinClass,
12-
override val referencedClasses: List<KotlinClass> = listOf(generic),
13-
val enum: List<Any>,
14-
val comments: String = "",
15-
override val modifiable: Boolean = true
9+
override val name: String,
10+
val xEnumNames: List<String>?,
11+
override val generic: KotlinClass,
12+
override val referencedClasses: List<KotlinClass> = listOf(generic),
13+
val enum: List<Any>,
14+
val comments: String = "",
15+
override val modifiable: Boolean = true,
16+
override val codeBuilder: KotlinEnumCodeBuilder = KotlinEnumCodeBuilder.DEFAULT
1617
) : ModifiableKotlinClass, NoGenericKotlinClass {
1718

18-
private val codeBuilder = KotlinEnumCodeBuilder()
19-
2019
override fun getOnlyCurrentCode(): String {
2120
return codeBuilder.getOnlyCurrentCode(this)
2221
}

src/main/kotlin/wu/seal/jsontokotlin/model/classscodestruct/KotlinClass.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package wu.seal.jsontokotlin.model.classscodestruct
22

33
import wu.seal.jsontokotlin.interceptor.IKotlinClassInterceptor
4+
import wu.seal.jsontokotlin.model.builder.ICodeBuilder
45
import wu.seal.jsontokotlin.utils.IgnoreCaseStringSet
56
import wu.seal.jsontokotlin.utils.LogUtil
67

@@ -32,6 +33,8 @@ interface KotlinClass {
3233

3334
val generic: KotlinClass
3435

36+
val codeBuilder: ICodeBuilder<*>
37+
3538
/**
3639
* get the code (include referenced classes) string for writing into file or printing out
3740
*/
@@ -42,6 +45,7 @@ interface KotlinClass {
4245
*/
4346
fun getOnlyCurrentCode(): String
4447

48+
4549
fun <T : KotlinClass> applyInterceptors(enabledKotlinClassInterceptors: List<IKotlinClassInterceptor<T>>): KotlinClass = this
4650

4751
fun <T : KotlinClass> applyInterceptor(classInterceptor: IKotlinClassInterceptor<T>): KotlinClass = applyInterceptors(listOf(classInterceptor))

src/main/kotlin/wu/seal/jsontokotlin/model/classscodestruct/ListClass.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ data class ListClass(
1111
override val name: String,
1212
override val generic: KotlinClass,
1313
override val referencedClasses: List<KotlinClass> = listOf(generic),
14-
override val modifiable: Boolean = true
14+
override val modifiable: Boolean = true,
15+
override val codeBuilder: KotlinListClassCodeBuilder = KotlinListClassCodeBuilder.DEFAULT
1516
) : UnModifiableGenericClass() {
1617

17-
private val codeBuilder = KotlinListClassCodeBuilder()
18-
1918
override fun getOnlyCurrentCode(): String {
2019
return codeBuilder.getOnlyCurrentCode(this)
2120
}

src/main/kotlin/wu/seal/jsontokotlin/model/classscodestruct/SealedClass.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package wu.seal.jsontokotlin.model.classscodestruct
22

3+
import wu.seal.jsontokotlin.model.builder.ICodeBuilder
34
import wu.seal.jsontokotlin.utils.getIndent
45
import wu.seal.jsontokotlin.utils.toAnnotationComments
56
import wu.seal.jsontokotlin.utils.addIndent
@@ -10,7 +11,8 @@ data class SealedClass(
1011
override val referencedClasses: List<KotlinClass> = listOf(generic),
1112
val discriminatoryProperties: List<Property>,
1213
val comments: String = "",
13-
override val modifiable: Boolean = true
14+
override val modifiable: Boolean = true,
15+
override val codeBuilder: ICodeBuilder<*> = ICodeBuilder.EMPTY
1416
) : ModifiableKotlinClass, NoGenericKotlinClass {
1517

1618
override fun rename(newName: String): KotlinClass = copy(name = newName)

src/main/kotlin/wu/seal/jsontokotlin/model/classscodestruct/UnModifiableGenericClass.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package wu.seal.jsontokotlin.model.classscodestruct
22

3+
import wu.seal.jsontokotlin.model.builder.ICodeBuilder
34
import java.lang.UnsupportedOperationException
45

56
/**
@@ -11,4 +12,5 @@ abstract class UnModifiableGenericClass : GenericKotlinClass {
1112
override fun getCode(): String = throw UnsupportedOperationException("Dont support this function called on unModifiable Class")
1213
override fun getOnlyCurrentCode(): String = throw UnsupportedOperationException("Dont support this function called on unModifiable Class")
1314
override fun rename(newName: String): KotlinClass = throw UnsupportedOperationException("Dont support this function called on unModifiable Class")
15+
override val codeBuilder: ICodeBuilder<*> = ICodeBuilder.EMPTY
1416
}

0 commit comments

Comments
 (0)