private <T> ClientRequest createClientRequest(String method,
Class<T> responseEntity,
Type responseEntityType,
Object requestEntity) {
ClientRequest request = new ClientRequestImpl();
request.setEntity(requestEntity);
URI requestURI = uriBuilder.build();
request.setURI(requestURI);
request.setMethod(method);
request.getHeaders().putAll(headers);
if (logger.isInfoEnabled()) {
Class<?> requestEntityClass = (requestEntity == null) ? null : requestEntity.getClass();
logger.info(Messages.getMessage("clientIssueRequest"), new Object[] {method,
requestURI, requestEntityClass, headers});
}
if (headers.getFirst(HttpHeaders.USER_AGENT) == null) {
request.getHeaders().add(HttpHeaders.USER_AGENT, USER_AGENT);
}
request.getAttributes().putAll(attributes);
request.setAttribute(ProvidersRegistry.class, providersRegistry);
request.setAttribute(ClientConfig.class, config);
request.getAttributes().put(ClientRequestImpl.RESPONSE_ENTITY_GENERIC_TYPE,
responseEntityType);
request.getAttributes().put(ClientRequestImpl.RESPONSE_ENTITY_CLASS_TYPE, responseEntity);
return request;
}