如何使cxf-jax-rs-response.redEntity成为泛型



下面的代码运行良好。我需要对所有请求重复使用这些方法。如何将其作为泛型?

public class ApiResponse {
}

public class QuoteRespWrapper extends ApiResponse{
private String responseType;
private QuoteRespValue responseValue;
}

public class PolicyRespWrapper extends ApiResponse{
private String responseType;
private PolicyRespValue responseValue;
}

public QuoteRespWrapper callService(String endPoint, String payload, Class<? extends ApiResponse> respClass) throws Exception {
private static List<JacksonJsonProvider> providerList = singletonList(JacksonConfig.jacksonJsonProvider());
String userName="user1";
String password="password1";
WebClient client = WebClient.create(endPoint, providerList, userName, password, null);
Response webClientresponse = client.post(payload);
QuoteRespWrapper strResponse = webClientresponse.readEntity(QuoteRespWrapper.class);
return strResponse;
}

我需要根据类类型修改下面的行。它可以是ApiResponse的任何子类(QuoteRespWrapper,PolicyRespWrapper…(argument.class动态获取响应。

QuoteRespWrapper strResponse=webClientresponse.readEntity(QuoteRespWrapper.class(;

您可以使用toString按预期生成类名输出(例如class java.lang.String(:

webClientresponse.readEntity(respClass.toString());
public ApiResponse callService(String endPoint, String payload, Class<? extends ApiResponse> respClass) throws Exception {
private static List<JacksonJsonProvider> providerList = singletonList(JacksonConfig.jacksonJsonProvider());
String userName="user1";
String password="password1";
WebClient client = WebClient.create(endPoint, providerList, userName, password, null);
Response webClientresponse = client.post(payload);
ApiResponse strResponse = (ApiResponse) webClientresponse.readEntity(respClass);
return strResponse;
}

上面的代码满足了我的需要。

最新更新