Open
Description
I have multiple interfaces for different external services which some of interfaces are implemented via Retrofit and some have a custom implementation. Therefore, I needed to put a base interface as the contract for all clients. Here is the example
@Scope(SCOPE_PROTOTYPE)
interface BaseApiClient {
fun type(): Type
fun supports(type: Type): Boolean = type == type()
fun create(
headers: Map<String, String> = hashMapOf(),
body: CreateClientRequestRestModel
): Mono<CreateClientResponseRestModel>
}
and the retrofit interface is
interface RetrofitClient : BaseApiClient {
override fun type() = EXTERNAL_ONE
@POST("api/blah/blah")
override fun create(
@HeaderMap headers: Map<String, String>,
@Body body: @JvmSuppressWildcards CreatClientRequestRestModel
): Mono<CreateClientResponseRestModel>
}
I am encountering this error
Caused by: java.lang.IllegalArgumentException: HTTP method annotation is required (e.g., @GET, @POST, etc.).
for method RetrofitClient.type
is there a way to just add a @Ignore
annotation and tell to retrofit ignores the methods that are not annotation with http verb annotations? something like the below
interface RetrofitClient : BaseApiClient {
@Ignore // -> This is a new annotation
override fun type() = EXTERNAL_ONE
@POST("api/blah/blah")
override fun create(
@HeaderMap headers: Map<String, String>,
@Body body: @JvmSuppressWildcards CreatClientRequestRestModel
): Mono<CreateClientResponseRestModel>
}
Metadata
Metadata
Assignees
Labels
No labels