From a845763f5b020ef0b54414a12b16b29d7adbc880 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 24 Aug 2026 10:33:31 +0200 Subject: [PATCH] Update ContributesNodeProcessor so that generated classes follow naming convention --- .../android/annotations/ContributesNode.kt | 16 +++++++-------- .../codegen/ContributesNodeProcessor.kt | 20 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/annotations/src/main/kotlin/io/element/android/annotations/ContributesNode.kt b/annotations/src/main/kotlin/io/element/android/annotations/ContributesNode.kt index 4914cec7e2..8091206cbd 100644 --- a/annotations/src/main/kotlin/io/element/android/annotations/ContributesNode.kt +++ b/annotations/src/main/kotlin/io/element/android/annotations/ContributesNode.kt @@ -14,16 +14,16 @@ import kotlin.reflect.KClass * Adds Node to the specified component graph. * Equivalent to the following declaration: * + * ``` * @BindingContainer * @ContributesTo(Scope::class) - * abstract class YourNodeBindingContainer { - - * @Binds - * @IntoMap - * @NodeKey(YourNode::class) - * abstract fun bindYourNodeFactory(factory: YourNode.Factory): AssistedNodeFactory<*> - *} - + * interface YourNodeBindingContainer { + * @Binds + * @IntoMap + * @NodeKey(YourNode::class) + * fun bindYourNodeAssistedFactory(factory: YourNodeAssistedFactory): AssistedNodeFactory<*> + * } + * ``` */ @Target(AnnotationTarget.CLASS) annotation class ContributesNode( diff --git a/codegen/src/main/kotlin/io/element/android/codegen/ContributesNodeProcessor.kt b/codegen/src/main/kotlin/io/element/android/codegen/ContributesNodeProcessor.kt index 8b537a53fe..3e6c05ad01 100644 --- a/codegen/src/main/kotlin/io/element/android/codegen/ContributesNodeProcessor.kt +++ b/codegen/src/main/kotlin/io/element/android/codegen/ContributesNodeProcessor.kt @@ -61,32 +61,32 @@ class ContributesNodeProcessor( if (config.enableLogging) { logger.warn("Processing ${ksClass.qualifiedName?.asString()}") } - generateModule(ksClass) + generateBindingContainer(ksClass) generateFactory(ksClass) } return invalidSymbols } - private fun generateModule(ksClass: KSClassDeclaration) { + private fun generateBindingContainer(ksClass: KSClassDeclaration) { val annotation = ksClass.annotations.find { it.shortName.asString() == "ContributesNode" }!! val scope = annotation.arguments.find { it.name?.asString() == "scope" }!!.value as KSType - val modulePackage = ksClass.packageName.asString() - val moduleClassName = "${ksClass.simpleName.asString()}_Module" + val bindingContainerPackage = ksClass.packageName.asString() + val bindingContainerClassName = "${ksClass.simpleName.asString()}BindingContainer" val nodeClassName = ClassName.bestGuess(ksClass.qualifiedName!!.asString()) val content = FileSpec.builder( - packageName = modulePackage, - fileName = moduleClassName, + packageName = bindingContainerPackage, + fileName = bindingContainerClassName, ) .addType( - TypeSpec.interfaceBuilder(moduleClassName) + TypeSpec.interfaceBuilder(bindingContainerClassName) .addAnnotation(AnnotationSpec.builder(Origin::class).addMember(CLASS_PLACEHOLDER, nodeClassName).build()) .addAnnotation(BindingContainer::class) .addAnnotation(AnnotationSpec.builder(ContributesTo::class).addMember(CLASS_PLACEHOLDER, scope.toTypeName()).build()) .addFunction( - FunSpec.builder("bind${ksClass.simpleName.asString()}Factory") + FunSpec.builder("bind${ksClass.simpleName.asString()}AssistedFactory") .addModifiers(KModifier.ABSTRACT) - .addParameter("factory", ClassName(modulePackage, "${ksClass.simpleName.asString()}_AssistedFactory")) + .addParameter("factory", ClassName(bindingContainerPackage, "${ksClass.simpleName.asString()}AssistedFactory")) .returns(ClassName.bestGuess(assistedNodeFactoryFqName.asString()).parameterizedBy(STAR)) .addAnnotation(Binds::class) .addAnnotation(IntoMap::class) @@ -114,7 +114,7 @@ class ContributesNodeProcessor( @OptIn(KspExperimental::class) private fun generateFactory(ksClass: KSClassDeclaration) { val generatedPackage = ksClass.packageName.asString() - val assistedFactoryClassName = "${ksClass.simpleName.asString()}_AssistedFactory" + val assistedFactoryClassName = "${ksClass.simpleName.asString()}AssistedFactory" val constructor = ksClass.getConstructors().first { it.parameters.isNotEmpty() } val assistedParameters = constructor.parameters.filter { it.isAnnotationPresent(Assisted::class) } if (assistedParameters.size != 2) {