Skip to content

Commit c71bbef

Browse files
committed
完善代码
1 parent 0d511ad commit c71bbef

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

module-communication-ksp/src/main/java/com/flyjingfish/module_communication_ksp/CommunicationKspSymbolProcessor.kt

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import com.flyjingfish.module_communication_annotation.interfaces.BaseRouterClas
1313
import com.flyjingfish.module_communication_annotation.interfaces.BindClass
1414
import com.flyjingfish.module_communication_annotation.interfaces.NewAny
1515
import com.google.devtools.ksp.containingFile
16-
import com.google.devtools.ksp.getAllSuperTypes
1716
import com.google.devtools.ksp.processing.CodeGenerator
1817
import com.google.devtools.ksp.processing.Dependencies
1918
import com.google.devtools.ksp.processing.KSPLogger
@@ -155,28 +154,16 @@ class CommunicationKspSymbolProcessor(
155154
val valueClassName = clazzClassName.parameterizedBy(STAR)
156155

157156
val mapClassName = ClassName.bestGuess("kotlin.collections.MutableMap")
158-
val mapInterface = mapClassName.parameterizedBy(ClassName.bestGuess(String::class.qualifiedName!!),
157+
val javaMapClassName = ClassName.bestGuess("java.util.HashMap")
158+
val javaMapInterface = javaMapClassName.parameterizedBy(ClassName.bestGuess(String::class.qualifiedName!!),
159159
ClassName.bestGuess(PathInfo::class.qualifiedName!!))
160160

161161
val registerMapFun = whatsMyName("registerMap")
162162

163163
val routeClassFile = "$moduleName\$\$RouterClass"
164164
val classBuilder = TypeSpec.classBuilder(
165165
routeClassFile
166-
).addProperty(
167-
PropertySpec.builder("classMap", mapInterface)
168-
.addModifiers(KModifier.PRIVATE)
169-
.initializer("mutableMapOf()")
170-
.build()
171-
)
172-
.primaryConstructor(FunSpec.constructorBuilder()
173-
.addParameter(ParameterSpec.builder("initClazzMap", Boolean::class)
174-
.defaultValue("true")
175-
.build())
176-
.build())
177-
.addInitializerBlock(CodeBlock.of("if (initClazzMap){\n" +
178-
" registerMap()\n" +
179-
" }"))
166+
)
180167
.addSuperinterface(ClassName.bestGuess(BaseRouterClass::class.qualifiedName!!))
181168
val routeFile = "$moduleName\$\$Router"
182169
val routeBuilder = TypeSpec.objectBuilder(
@@ -186,6 +173,7 @@ class CommunicationKspSymbolProcessor(
186173
val classStar = bindClassName.parameterizedBy(STAR)
187174
val ksFiles = mutableListOf<KSFile>()
188175
val pathInfoClazz = "com.flyjingfish.module_communication_annotation.bean.PathInfo"
176+
var classMapCount = 0
189177
for (symbol in symbols) {
190178
val annotationMap = getAnnotation(symbol)
191179
val className = (symbol as KSClassDeclaration).packageName.asString() + "." + symbol
@@ -266,6 +254,7 @@ class CommunicationKspSymbolProcessor(
266254
val classFunName = "get${classKey}Class"
267255
val whatsMyName1 = whatsMyName("go$routeClassName")
268256
if (!emptyRoute){
257+
classMapCount++
269258
registerMapFun.addStatement("classMap[\"$usePath\"] = $pathInfoStr",*classMapTypeNames)
270259
classBuilder.addFunction(whatsMyName(classFunName)
271260
.returns(classStar.copy(nullable = true))
@@ -393,6 +382,7 @@ class CommunicationKspSymbolProcessor(
393382

394383

395384
if (!emptyRoute){
385+
classMapCount++
396386
registerMapFun.addStatement("classMap[\"$usePath\"] = $pathInfoStr",*classMapTypeNames)
397387
classBuilder.addFunction(whatsMyName(classFunName)
398388
.returns(anyClassName.copy(nullable = true))
@@ -502,6 +492,20 @@ class CommunicationKspSymbolProcessor(
502492

503493
ksFiles.add(symbol.containingFile!!)
504494
}
495+
classBuilder.addProperty(
496+
PropertySpec.builder("classMap", javaMapInterface)
497+
.addModifiers(KModifier.PRIVATE)
498+
.initializer("HashMap<String, PathInfo>($classMapCount)")
499+
.build()
500+
)
501+
.primaryConstructor(FunSpec.constructorBuilder()
502+
.addParameter(ParameterSpec.builder("initClazzMap", Boolean::class)
503+
.defaultValue("true")
504+
.build())
505+
.build())
506+
.addInitializerBlock(CodeBlock.of("if (initClazzMap){\n" +
507+
" registerMap()\n" +
508+
" }"))
505509
classBuilder.addFunction(registerMapFun.build())
506510
val getClazzFun = whatsMyName("getInfoByPath")
507511
.addModifiers(KModifier.OVERRIDE)

0 commit comments

Comments
 (0)