@@ -13,7 +13,6 @@ import com.flyjingfish.module_communication_annotation.interfaces.BaseRouterClas
1313import com.flyjingfish.module_communication_annotation.interfaces.BindClass
1414import com.flyjingfish.module_communication_annotation.interfaces.NewAny
1515import com.google.devtools.ksp.containingFile
16- import com.google.devtools.ksp.getAllSuperTypes
1716import com.google.devtools.ksp.processing.CodeGenerator
1817import com.google.devtools.ksp.processing.Dependencies
1918import 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