Add Ktnip Parameter Strategy
Workflow
1. Add ParameterResolutionStrategy
- •In ParameterResolutionStrategy.kt
- •Add new
data classextendingParameterResolutionStrategy - •Include
typeName,isNullable; add strategy-specific fields (e.g.parameterName,updateTypeSimpleName)
kotlin
data class MyParam(
override val typeName: TypeName,
override val isNullable: Boolean,
val myField: String,
) : ParameterResolutionStrategy()
2. Add TypeConstant (if new type)
- •In TypeConstants.kt
- •Add
val myTypeClass: TypeName = MyType::class.asTypeName()
3. Update ParameterResolver
- •In ParameterResolver.kt
- •Add branch in
resolve()when block:- •Match
typeName(use TypeConstants orin TypeMapper.getAllTypedUpdateTypes()for typed updates) - •Return new strategy instance
- •Handle
@ParamMappingfor parameter name if from parameters map
- •Match
4. Update InvocationCodeGenerator
- •In InvocationCodeGenerator.kt
- •Add branch in
generateParameterResolution()when block - •Generate CodeBlock:
CodeBlock.of("val param%L = ...\n", parameterIndex, ...) - •Add imports via
fileBuilder.addImport(...)if needed - •Use
nullabilityMarkfor!!when non-null
5. Update generateInvocationCode (if needed)
- •If strategy affects
isBotNeeded,isUpdateNeeded,isParametersNeeded,isUserNeeded: add to thestrategies.any { ... }checks
Reference
- •ParameterResolutionStrategy.kt
- •ParameterResolver.kt
- •InvocationCodeGenerator.kt
- •TypeMapper.kt - for TypedUpdate: add to updateTypeMap