Я использую raml-to-jaxrs-maven-plugin:3.0.7
для создания клиента jax-rs из файла raml. Я использую RESTEasy в качестве реализации Jakarta RESTful Web Services.
Сгенерированный прокси из raml имеет класс ответа MyResponse
, который расширяет javax.ws.rs.core.Response
.
В resteasy-client класс DefaultEntityExtractorFactory
создает экстрактор как:
public EntityExtractor createExtractor(final Method method)
{
final Class returnType = method.getReturnType();
if (isVoidReturnType(returnType))
return createVoidExtractor();
if (returnType.equals(Response.Status.class))
return createStatusExtractor(true);
if (Response.class.isAssignableFrom(returnType))
return clientResponseExtractor;
if (returnType.isInterface() && returnType.isAnnotationPresent(ResponseObject.class))
return new ResponseObjectProxy(method, new ResponseObjectEntityExtractorFactory());
return new BodyEntityExtractor(method);
}
Этот код будет истинным
if (Response.class.isAssignableFrom(returnType))
return clientResponseExtractor;
и clientResponseExtractor
будет be
public static final EntityExtractor clientResponseExtractor = new EntityExtractor<ClientResponse>()
{
public ClientResponse extractEntity(ClientContext context, Object... args)
{
return context.getClientResponse();
}
};
В конечном итоге возвращаемый ответ - ManualClosingApacheHttpClient43Engine
, и он не может быть преобразован в класс MyReponse.
Как я могу сказать RESTEasy преобразовать ManualClosingApacheHttpClient43Engine
в MyResponse
?