下面列出了javax.ws.rs.client.ClientRequestContext#getUri ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void filter(ClientRequestContext clientRequestContext) throws IOException {
final HttpClientRequest httpClientRequest = new HttpClientRequest() {
@Override
public void addHeader(String s, String s1) {
clientRequestContext.getHeaders().add(s, s1);
}
@Override
public URI getUri() {
return clientRequestContext.getUri();
}
@Override
public String getHttpMethod() {
return clientRequestContext.getMethod();
}
};
requestInterceptor.handle(new HttpClientRequestAdapter(httpClientRequest, spanNameProvider));
}
@Nullable
@Override
public String getHost(ClientRequestContext request) {
if (request == null) {
return "null_request";
} else if (request.getUri() == null) {
return "null_uri";
} else {
return request.getUri().getHost();
}
}
@Override
public void filter(final ClientRequestContext requestContext) throws IOException {
final TraceScopeHolder<TraceScope> holder = super.startTraceSpan(requestContext.getStringHeaders(),
requestContext.getUri(), requestContext.getMethod());
if (holder != null) {
requestContext.setProperty(TRACE_SPAN, holder);
}
}
@Override
public void filter(final ClientRequestContext requestContext) throws IOException {
final TraceScopeHolder<TraceScope> holder = super.startTraceSpan(requestContext.getStringHeaders(),
requestContext.getUri(), requestContext.getMethod());
if (holder != null) {
requestContext.setProperty(TRACE_SPAN, holder);
}
}
@Override
public void filter(final ClientRequestContext request) throws IOException {
if (!HttpMethod.GET.equals(request.getMethod())) {
//TODO: Review the possibility of supporting POST responses, example,
// POST create request may get a created entity representation returned
request.setProperty(NO_CACHE_PROPERTY, "true");
return;
}
final URI uri = request.getUri();
final String accepts = request.getHeaderString(HttpHeaders.ACCEPT);
final Key key = new Key(uri, accepts);
Entry entry = cache.get(key);
if (entry != null) {
//TODO: do the extra validation against the conditional headers
// which may be contained in the current request
if (entry.isOutDated()) {
String ifNoneMatchHeader = entry.getCacheHeaders().get(HttpHeaders.IF_NONE_MATCH);
String ifModifiedSinceHeader = entry.getCacheHeaders().get(HttpHeaders.IF_MODIFIED_SINCE);
if (StringUtils.isEmpty(ifNoneMatchHeader) && StringUtils.isEmpty(ifModifiedSinceHeader)) {
cache.remove(key, entry);
} else {
request.getHeaders().add(HttpHeaders.IF_NONE_MATCH, ifNoneMatchHeader);
request.getHeaders().add(HttpHeaders.IF_MODIFIED_SINCE, ifModifiedSinceHeader);
request.setProperty(CACHED_ENTITY_PROPERTY, entry.getData());
}
} else {
Object cachedEntity = entry.getData();
Response.ResponseBuilder ok = Response.ok(cachedEntity);
if (entry.getHeaders() != null) {
for (Map.Entry<String, List<String>> h : entry.getHeaders().entrySet()) {
for (final Object instance : h.getValue()) {
ok = ok.header(h.getKey(), instance);
}
}
}
request.setProperty(CACHED_ENTITY_PROPERTY, cachedEntity);
request.abortWith(ok.build());
}
}
// Should the map of all request headers shared ?
request.setProperty(CLIENT_ACCEPTS, accepts);
request.setProperty(CLIENT_CACHE_CONTROL, request.getHeaderString(HttpHeaders.CACHE_CONTROL));
}