diff --git a/resilient/resilient-symbol-processor/src/main/kotlin/ru/tinkoff/kora/resilient/symbol/processor/aop/RetryKoraAspect.kt b/resilient/resilient-symbol-processor/src/main/kotlin/ru/tinkoff/kora/resilient/symbol/processor/aop/RetryKoraAspect.kt index 9b78f3200..272a14e4e 100644 --- a/resilient/resilient-symbol-processor/src/main/kotlin/ru/tinkoff/kora/resilient/symbol/processor/aop/RetryKoraAspect.kt +++ b/resilient/resilient-symbol-processor/src/main/kotlin/ru/tinkoff/kora/resilient/symbol/processor/aop/RetryKoraAspect.kt @@ -25,9 +25,9 @@ import java.util.concurrent.Future class RetryKoraAspect(val resolver: Resolver) : KoraAspect { companion object { - const val ANNOTATION_TYPE: String = "ru.tinkoff.kora.resilient.kora.Retry" - private val MEMBER_RETRY_STATUS = ClassName("ru.tinkoff.kora.resilient.kora.retry", "Retry", "RetryState", "RetryStatus") - private val MEMBER_RETRY_EXCEPTION = MemberName("ru.tinkoff.kora.resilient.kora.retry", "RetryExhaustedException") + const val ANNOTATION_TYPE: String = "ru.tinkoff.kora.resilient.retry.annotation.Retry" + private val MEMBER_RETRY_STATUS = ClassName("ru.tinkoff.kora.resilient.retry", "Retry", "RetryState", "RetryStatus") + private val MEMBER_RETRY_EXCEPTION = MemberName("ru.tinkoff.kora.resilient.retry", "RetryExhaustedException") private val MEMBER_DELAY = MemberName("kotlinx.coroutines", "delay") private val MEMBER_TIME = MemberName("kotlin.time.Duration.Companion", "nanoseconds") private val MEMBER_FLOW = MemberName("kotlinx.coroutines.flow", "flow") @@ -51,9 +51,9 @@ class RetryKoraAspect(val resolver: Resolver) : KoraAspect { val annotation = method.annotations.filter { a -> a.annotationType.resolve().toClassName().canonicalName == ANNOTATION_TYPE }.first() val retryableName = annotation.arguments.asSequence().filter { arg -> arg.name!!.getShortName() == "value" }.map { arg -> arg.value.toString() }.first() - val managerType = resolver.getClassDeclarationByName("ru.tinkoff.kora.resilient.kora.retry.RetryManager")!!.asType(listOf()) + val managerType = resolver.getClassDeclarationByName("ru.tinkoff.kora.resilient.retry.RetryManager")!!.asType(listOf()) val fieldManager = aspectContext.fieldFactory.constructorParam(managerType, listOf()) - val retrierType = resolver.getClassDeclarationByName("ru.tinkoff.kora.resilient.kora.retry.Retry")!!.asType(listOf()) + val retrierType = resolver.getClassDeclarationByName("ru.tinkoff.kora.resilient.retry.Retry")!!.asType(listOf()) val fieldRetrier = aspectContext.fieldFactory.constructorInitialized( retrierType, CodeBlock.of("%L[%S]", fieldManager, retryableName) @@ -72,14 +72,12 @@ class RetryKoraAspect(val resolver: Resolver) : KoraAspect { private fun buildBodySync(method: KSFunctionDeclaration, superCall: String, retryName: String, fieldRetrier: String): CodeBlock { return CodeBlock.builder() - .add("return %L.asState()", fieldRetrier).indent().add("\n") + .add("%L.asState()", fieldRetrier).indent().add("\n") .controlFlow(".use { _state ->", fieldRetrier) { addStatement("val _suppressed = %T();", ArrayList::class) - addStatement("lateinit var _result: %T", method.returnType?.resolve()?.toTypeName()) controlFlow("while (true)") { controlFlow("try") { - add("_result = ").add(buildMethodCall(method, superCall)).add("\n") - addStatement("break") + add("return ").add(buildMethodCall(method, superCall)).add("\n") nextControlFlow("catch (_e: Exception)") addStatement("val _status = _state.onException(_e)") controlFlow("when (_status)") { @@ -108,10 +106,8 @@ class RetryKoraAspect(val resolver: Resolver) : KoraAspect { } } } - addStatement("return@use _result") } .unindent() - .add("\n") .build() }