You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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>
}
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>
}
The text was updated successfully, but these errors were encountered:
Are you using -Xjvm-default=all in your Kotlin compiler flags? Retrofit should ignore any method that has a default implementation, but it needs to be a default as seen by Java's reflection. Since Kotlin used to target versions of the JVM older than 8, it has a compatibility mode for doing its default functions as rendered in bytecode.
You would also annotate each one with @JvmDefault, but that's a bit archaic nowadays with 8 being everyone's minimum (if not even higher).
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
and the retrofit interface is
I am encountering this error
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 belowThe text was updated successfully, but these errors were encountered: