Java 类javax.ws.rs.client.ClientResponseContext 实例源码
项目:ameba
文件:LoggingFilter.java
/**
* {@inheritDoc}
*/
@Override
public void filter(final ClientRequestContext requestContext, final ClientResponseContext responseContext)
throws IOException {
final Object requestId = requestContext.getProperty(LOGGING_ID_PROPERTY);
final long id = requestId != null ? (Long) requestId : _id.incrementAndGet();
StringBuilder b = (StringBuilder) requestContext.getProperty(LOGGER_BUFFER_PROPERTY);
if (b == null) {
b = new StringBuilder();
requestContext.setProperty(LOGGER_BUFFER_PROPERTY, b);
}
printResponseLine(b, "Client response received", id, responseContext.getStatus());
printPrefixedHeaders(b, id, RESPONSE_PREFIX, responseContext.getHeaders());
if (printEntity && responseContext.hasEntity() && isSupportPrintType(responseContext.getMediaType())) {
responseContext.setEntityStream(logInboundEntity(b, responseContext.getEntityStream(),
MessageUtils.getCharset(responseContext.getMediaType())));
}
log(b);
}
项目:keycloak-jaxrs-client-authfilter
文件:BearerAuthFilter.java
@Override
public void filter( final ClientRequestContext requestContext, final ClientResponseContext responseContext )
throws IOException
{
if ( Response.Status.UNAUTHORIZED.getStatusCode() == responseContext.getStatus() )
{
final List<Object> headers = requestContext.getHeaders().get( HttpHeaders.AUTHORIZATION );
if ( null == headers )
{
return;
}
for ( final Object header : headers )
{
if ( header instanceof String )
{
final String headerValue = (String) header;
if ( headerValue.startsWith( AUTH_HEADER_PREFIX ) )
{
final String token = headerValue.substring( AUTH_HEADER_PREFIX.length() );
_keycloak.invalidate( token );
}
}
}
}
}
项目:Mastering-Java-EE-Development-with-WildFly
文件:MyClientResponseFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
logger.info("getAllowedMethods : " + responseContext.getAllowedMethods());
logger.info("getCookies : " + responseContext.getCookies());
logger.info("getDate : " + responseContext.getDate());
logger.info("getEntityStream : " + responseContext.getEntityStream());
logger.info("getEntityTag : " + responseContext.getEntityTag());
logger.info("getHeaders : " + responseContext.getHeaders());
logger.info("getLanguage : " + responseContext.getLanguage());
logger.info("getLastModified : " + responseContext.getLastModified());
logger.info("getLength : " + responseContext.getLength());
logger.info("getLinks : " + responseContext.getLinks());
logger.info("getLocation : " + responseContext.getLocation());
logger.info("getMediaType : " + responseContext.getMediaType());
logger.info("getStatus : " + responseContext.getStatus());
logger.info("getStatusInfo : " + responseContext.getStatusInfo());
responseContext.getHeaders().putSingle(CONTENT_TYPE_STRING,
requestContext.getHeaderString(CONTENT_TYPE_STRING));
}
项目:Mastering-Java-EE-Development-with-WildFly
文件:OtherClientResponseFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
logger.info("getAllowedMethods : " + responseContext.getAllowedMethods());
logger.info("getCookies : " + responseContext.getCookies());
logger.info("getDate : " + responseContext.getDate());
logger.info("getEntityStream : " + responseContext.getEntityStream());
logger.info("getEntityTag : " + responseContext.getEntityTag());
logger.info("getHeaders : " + responseContext.getHeaders());
logger.info("getLanguage : " + responseContext.getLanguage());
logger.info("getLastModified : " + responseContext.getLastModified());
logger.info("getLength : " + responseContext.getLength());
logger.info("getLinks : " + responseContext.getLinks());
logger.info("getLocation : " + responseContext.getLocation());
logger.info("getMediaType : " + responseContext.getMediaType());
logger.info("getStatus : " + responseContext.getStatus());
logger.info("getStatusInfo : " + responseContext.getStatusInfo());
}
项目:SpanEE
文件:SpanEEClientRequestFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
System.out.println("Response = " + requestContext + " " + responseContext);
Long start = concurrentRequests.get(requestContext);
concurrentRequests.remove(requestContext);
long duration = (System.nanoTime() - start);
System.out.println("Duration: " + duration);
URI uri = requestContext.getUri();
String ipv4 = extractIpAddress(uri);
System.out.println("ipv4 = " + ipv4);
String serviceName = extractServiceName(uri);
System.out.println("serviceName = " + serviceName);
String spanName = uri.getPath();
System.out.println("spanName = " + spanName);
String traceId = extractTraceId(requestContext).orElse("--no spanid--");
Boolean spanExists = Optional.ofNullable(requestContext.getProperty(SPAN_EXISTED)).
map((o) -> (boolean) o).
orElse(false);
if (spanExists) {
this.tracEE.saveChildSpan(traceId, spanName, serviceName, ipv4, duration);
} else {
this.tracEE.saveParentSpan(spanName, serviceName, ipv4, duration);
}
}
项目:servicebuilder
文件:ClientErrorResponseFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext)
throws IOException
{
// for non-200 response, deal with the custom error messages
if (! Response.Status.Family.SUCCESSFUL.equals(responseContext.getStatusInfo().getFamily())) {
MetaData metaData = MetaData.builder()
.httpRequestMetaData(getRequestMetaData(requestContext))
.httpResponseMetaData(getResponseMetaData(responseContext))
.gotAnswer(true)
.targetName(serviceDefinition.getName())
.build();
if (Response.Status.NOT_FOUND.getStatusCode() == responseContext.getStatus()) {
throw new ExternalResourceNotFoundException(metaData);
}
throw new ExternalResourceException(metaData);
}
}
项目:robozonky
文件:RoboZonkyFilter.java
@Override
public void filter(final ClientRequestContext clientRequestContext,
final ClientResponseContext clientResponseContext) throws IOException {
this.logger.debug("HTTP {} Response from {}: {} {}.", clientRequestContext.getMethod(),
clientRequestContext.getUri(), clientResponseContext.getStatus(),
clientResponseContext.getStatusInfo().getReasonPhrase());
final String responseEntity = getResponseEntity(clientResponseContext);
if (clientResponseContext.getStatus() == 400) {
if (responseEntity.contains("invalid_token")) { // Zonky is dumb and throws 400 when it should throw 401
clientResponseContext.setStatus(401);
}
}
responseHeaders = clientResponseContext.getHeaders().entrySet().stream()
.filter(e -> e.getValue().size() > 0)
.collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().get(0)));
}
项目:robozonky
文件:RoboZonkyFilterTest.java
@Test
public void response() throws IOException {
final String key = UUID.randomUUID().toString();
final String key2 = UUID.randomUUID().toString();
final String value = UUID.randomUUID().toString();
final MultivaluedMap<String, String> map = new MultivaluedMapImpl<>();
map.add(key, value);
map.addAll(key2, Collections.emptyList());
final ClientRequestContext ctx = Mockito.mock(ClientRequestContext.class);
final ClientResponseContext ctx2 = Mockito.mock(ClientResponseContext.class);
Mockito.when(ctx2.getHeaders()).thenReturn(map);
Mockito.when(ctx2.getStatusInfo()).thenReturn(Mockito.mock(Response.StatusType.class));
final RoboZonkyFilter filter = new RoboZonkyFilter();
filter.filter(ctx, ctx2);
SoftAssertions.assertSoftly(softly -> {
softly.assertThat(filter.getLastResponseHeader(key)).contains(value);
softly.assertThat(filter.getLastResponseHeader(key2)).isEmpty();
});
}
项目:camel-alma
文件:AlmaResponseFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
if (LOG.isTraceEnabled()) {
LOG.trace("Response status: {} {}", responseContext.getStatus(), responseContext.getStatusInfo().toString());
LOG.trace("Response headers: {}", responseContext.getHeaders());
InputStream stream = responseContext.getEntityStream();
ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = stream.read(buffer)) != -1) {
result.write(buffer, 0, length);
}
stream.close();
LOG.trace("Response body: {}", result.toString("UTF-8"));
responseContext.setEntityStream(new ByteArrayInputStream(result.toByteArray()));
}
}
项目:java-jaxrs
文件:ClientTracingFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
SpanWrapper spanWrapper = CastUtils
.cast(requestContext.getProperty(PROPERTY_NAME), SpanWrapper.class);
if (spanWrapper != null && !spanWrapper.isFinished()) {
log.finest("Finishing client span");
if (spanDecorators != null) {
for (ClientSpanDecorator decorator: spanDecorators) {
decorator.decorateResponse(responseContext, spanWrapper.get());
}
}
spanWrapper.finish();
}
}
项目:fili
文件:BardLoggingFilter.java
@Override
public void filter(ClientRequestContext request, ClientResponseContext response) throws IOException {
StringBuilder debugMsgBuilder = new StringBuilder();
debugMsgBuilder.append("ClientRequest: ").append(request.getMethod()).append("\t");
debugMsgBuilder.append(request.getUri().toASCIIString()).append("\t");
appendObjectHeaders(debugMsgBuilder, "> ", request.getHeaders().entrySet());
appendStringHeaders(debugMsgBuilder, "< ", response.getHeaders().entrySet());
debugMsgBuilder.append(response.getStatusInfo()).append(", length=").append(response.getLength()).append(" ");
Long requestStartTime = (Long) request.getProperty(PROPERTY_NANOS);
if (requestStartTime != null) {
debugMsgBuilder
.append((System.nanoTime() - requestStartTime) / MILLISECONDS_PER_NANOSECOND)
.append(" ms\t");
}
LOG.debug(debugMsgBuilder.toString());
RequestLog.stopTiming(CLIENT_TOTAL_TIMER);
}
项目:Camel
文件:LinkedInExceptionResponseFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
if (responseContext.getStatus() != Response.Status.OK.getStatusCode() && responseContext.hasEntity()) {
try {
final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
final Error error = (Error) unmarshaller.unmarshal(responseContext.getEntityStream());
final Response.ResponseBuilder builder = Response.status(responseContext.getStatusInfo());
builder.entity(error);
// copy response headers
for (Map.Entry<String, List<String>> header : responseContext.getHeaders().entrySet()) {
builder.header(header.getKey(), header.getValue());
}
throw new LinkedInException(error, builder.build());
} catch (JAXBException e) {
// log and ignore
LOG.warn("Unable to parse LinkedIn error: " + e.getMessage(), e);
}
}
}
项目:msf4j
文件:MSF4JClientTracingFilter.java
/**
* Intercepts the client response flow and extract response information
* to be published to the DAS server for tracing.
*/
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
long time = new Date().getTime();
TraceEvent traceEvent = (TraceEvent) requestContext.getProperty(TRACE_EVENT_ATTRIBUTE);
if (traceEvent != null) {
TraceEvent endTraceEvent = new TraceEvent(
TracingConstants.CLIENT_TRACE_END,
traceEvent.getTraceId(),
traceEvent.getOriginId(),
time
);
endTraceEvent.setStatusCode(responseContext.getStatus());
TracingUtil.pushToDAS(endTraceEvent, dasUrl);
}
}
项目:qds-sdk-java
文件:ErrorResponseFilter.java
@Override
public void filter(final ClientRequestContext requestContext,
final ClientResponseContext responseContext) {
try {
// For non-200 response, log the custom error message.
if (responseContext.getStatus() != Response.Status.OK.getStatusCode()) {
if (responseContext.hasEntity()) {
String error = CharStreams.toString(
new InputStreamReader(responseContext.getEntityStream(), Charsets.UTF_8));
LOG.severe(error);
System.err.println(error);
}
}
} catch (Exception e) {
// Silently pass. We don't want anything to fail because of this filter.
LOG.warning("Error while checking response code: " + e.getMessage());
}
}
项目:jive-sdk-java-jersey
文件:StripAllowIllegalResourceCallFilter.java
private void stripResponse(ClientResponseContext responseContext) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream in = responseContext.getEntityStream();
final StringBuilder b = new StringBuilder();
try {
if (in.available() > 0) {
ReaderWriter.writeTo(in, out);
StringBuffer sbuf = new StringBuffer(new String(out.toByteArray()));
if (sbuf.indexOf(ALLOW_ILLEGAL_RESOURCE_CALL_PREFIX) == 0) {
if (log.isDebugEnabled()) { log.debug("Stripping "+ALLOW_ILLEGAL_RESOURCE_CALL_PREFIX); }
responseContext.setEntityStream(new ByteArrayInputStream(sbuf.substring(ALLOW_ILLEGAL_RESOURCE_CALL_PREFIX.length()).getBytes()));
} else {
responseContext.setEntityStream(new ByteArrayInputStream(out.toByteArray()));
} // end if
} // end if
} catch (IOException ex) {
throw new ContainerException(ex);
} // end try/catch
}
项目:jive-sdk-java-jersey
文件:DebugClientResponseFilter.java
private void logResponse(ClientResponseContext responseContext) throws IOException {
String responseBody = null;
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream in = responseContext.getEntityStream();
final StringBuilder b = new StringBuilder();
try {
if (in.available() > 0) {
ReaderWriter.writeTo(in, out);
responseContext.setEntityStream(new ByteArrayInputStream(out.toByteArray()));
responseBody = new String(out.toByteArray());
} // end if
} catch (IOException ex) {
throw new ContainerException(ex);
} // end try/catch
responseBody = (responseBody == null) ? "" : "\n"+responseBody;
log.debug("\nClient Response:\nStatus: "+responseContext.getStatus()+ responseBody);
}
项目:docker-java
文件:ResponseStatusExceptionFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
int status = responseContext.getStatus();
switch (status) {
case 200:
case 201:
case 204:
return;
case 304:
throw new NotModifiedException(getBodyAsMessage(responseContext));
case 400:
throw new BadRequestException(getBodyAsMessage(responseContext));
case 401:
throw new UnauthorizedException(getBodyAsMessage(responseContext));
case 404:
throw new NotFoundException(getBodyAsMessage(responseContext));
case 406:
throw new NotAcceptableException(getBodyAsMessage(responseContext));
case 409:
throw new ConflictException(getBodyAsMessage(responseContext));
case 500:
throw new InternalServerErrorException(getBodyAsMessage(responseContext));
default:
throw new DockerException(getBodyAsMessage(responseContext), status);
}
}
项目:stdlib
文件:RestExceptionFactory.java
public RestException build(final RestFailure failure, final ClientResponseContext responseContext)
{
final Constructor<RestException> constructor = getExceptionConstructor(failure);
final RestException exception;
if (constructor != null)
{
exception = buildKnown(constructor, failure);
}
else
{
exception = buildUnknown(failure);
}
// Copy the information from the failure+response to the newly-built exception
exception.setFailure(failure);
exception.setCausedByRemote(true);
exception.setResponseContext(responseContext);
exception.setHttpCode(responseContext.getStatus());
exception.setErrorCode(failure.errorCode);
return exception;
}
项目:open-kilda
文件:ErrorResponseFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
// TODO - add other non-error responses here
if (responseContext.getStatus() != Response.Status.OK.getStatusCode() &&
responseContext.getStatus() != Response.Status.CREATED.getStatusCode()) {
if (responseContext.hasEntity()) {
// get the "real" error message
Error error = _MAPPER.readValue(responseContext.getEntityStream(), Error.class);
Response.Status status = Response.Status.fromStatusCode(responseContext.getStatus());
MaxinetWebException maxinetException;
switch (status) {
case INTERNAL_SERVER_ERROR:
maxinetException = new MaxinetInternalException(error.getMessage(), responseContext.getStatus());
break;
case BAD_REQUEST:
maxinetException = new MaxinetClientException(error.getMessage(), responseContext.getStatus());
break;
default:
maxinetException = new MaxinetWebException(error.getMessage(), responseContext.getStatus());
}
throw maxinetException;
}
}
}
项目:newrelic-alerts-configurator
文件:NewRelicClientInterceptor.java
@Override
public void filter(ClientRequestContext request, ClientResponseContext response) throws IOException {
logResponse(request, response);
if (!isSuccess(response)) {
logResponseBody(response);
throw new NewRelicClientException(request, response);
}
}
项目:newrelic-alerts-configurator
文件:NewRelicClientInterceptor.java
private void logResponse(ClientRequestContext request, ClientResponseContext response) {
LOG.info("{} {}: {} {}",
request.getMethod(),
request.getUri(),
response.getStatus(),
response.getStatusInfo().getReasonPhrase());
}
项目:newrelic-alerts-configurator
文件:NewRelicClientInterceptor.java
private void logResponseBody(ClientResponseContext response) {
try {
LOG.info("{}", IOUtils.toString(response.getEntityStream(), StandardCharsets.UTF_8));
} catch (IOException e) {
LOG.error("Failed to log response body", e);
}
}
项目:newrelic-alerts-configurator
文件:NewRelicClientException.java
private static String formatMessage(ClientRequestContext request, ClientResponseContext response) {
String method = request.getMethod();
String url = request.getUri().toString();
int statusCode = response.getStatus();
String statusText = response.getStatusInfo().getReasonPhrase();
return String.format("%s %s: %d %s", method, url, statusCode, statusText);
}
项目:haystack-client-java
文件:ClientFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
try {
Span span = (Span) requestContext.getProperty(CLIENT_SPAN_CONTEXT_KEY);
if (span != null) {
Tags.HTTP_STATUS.set(span, responseContext.getStatus());
span.finish();
}
}
catch (Exception e) {
LOGGER.error("Client Tracing Filter failed:", e);
}
}
项目:apm-client
文件:TraceClientFilterTest.java
@Test
public void test() throws Exception {
TracerTestImpl tracer = new TracerTestImpl();
TraceClientFilter tcf = new TraceClientFilter();
tcf.setTracer(tracer);
MultivaluedMap<String, Object> headerAccess = new MultivaluedHashMap<>();
ClientRequestContext requestContext = Mockito.mock(ClientRequestContext.class);
Mockito.when(requestContext.getUri()).thenReturn(new URI("https://example.com:7110/some/path"));
Mockito.when(requestContext.getMethod()).thenReturn("GET");
Mockito.when(requestContext.getHeaders()).thenReturn(headerAccess);
Mockito.when(requestContext.getEntityAnnotations()).thenReturn(new Annotation[]{});
tcf.filter(requestContext);
Assert.assertNotNull(tracer.getCurrentSpan());
ClientResponseContext responseContext = Mockito.mock(ClientResponseContext.class);
tcf.filter(requestContext, responseContext);
Assert.assertNull(tracer.getCurrentSpan());
Span span = tracer.getCapturedSpan();
Assert.assertEquals("service", span.getService());
Assert.assertEquals("example.com:7110", span.getResource());
Assert.assertEquals("GET /some/path", span.getOperation());
Assert.assertEquals(Long.parseUnsignedLong((String)headerAccess.getFirst(TracerImpl.TRACE_ID)), span.getTraceId());
Assert.assertEquals(Long.parseUnsignedLong((String)headerAccess.getFirst(TracerImpl.SPAN_ID)), span.getSpanId());
}
项目:servicebuilder
文件:ClientLogFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
Long totalMillis = null;
Long startNanos = (Long) requestContext.getProperty(PROPERTYNAME);
if (startNanos != null) {
long totalNanos = System.nanoTime() - startNanos;
totalMillis = totalNanos / 1_000_000;
}
log.info(getCallSignature(requestContext) + " response: " + responseContext.getStatus() + ", millis: " + totalMillis);
}
项目:servicebuilder
文件:ClientErrorResponseFilter.java
private HttpResponseMetaData getResponseMetaData(ClientResponseContext responseContext) throws IOException {
Map<String, String> headers = FormatUtil.MultiMapAsStringMap(responseContext.getHeaders());
HttpResponseMetaData.HttpResponseMetaDataBuilder builder = HttpResponseMetaData.builder()
.status(responseContext.getStatus())
.headers(headers);
if (responseContext.hasEntity()) {
String body;
// setUp the "real" error message
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(responseContext.getEntityStream(), "UTF-8"))) {
body = buffer.lines().collect(Collectors.joining("\n"));
}
try {
ProblemResponse problem = mapper.readValue(body, ProblemResponse.class);
if (problemWasParsed(problem)) {
builder.problemResponse(problem)
.incidentReferenceId(problem.incidentReferenceId);
}
} catch (JsonParseException | JsonMappingException e) {
//ignore
}
if (builder.build().problemResponse == null) {
builder.response(body);
}
}
return builder.build();
}
项目:smart-id-java-client
文件:LoggingFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
if (logger.isDebugEnabled()) {
logger.debug("Response status: " + responseContext.getStatus() + " - " + responseContext.getStatusInfo());
}
if (logger.isTraceEnabled() && responseContext.hasEntity()) {
logResponseBody(responseContext);
}
}
项目:smart-id-java-client
文件:LoggingFilter.java
private void logResponseBody(ClientResponseContext responseContext) throws IOException {
Charset charset = MessageUtils.getCharset(responseContext.getMediaType());
InputStream entityStream = responseContext.getEntityStream();
byte[] bodyBytes = readInputStreamBytes(entityStream);
responseContext.setEntityStream(new ByteArrayInputStream(bodyBytes));
logger.trace("Response body: " + new String(bodyBytes, charset));
}
项目:robozonky
文件:RoboZonkyFilter.java
private static boolean shouldLogEntity(final ClientResponseContext responseCtx) {
if (!responseCtx.hasEntity()) {
return false;
} else if (responseCtx.getStatus() < 400) {
return Settings.INSTANCE.isDebugHttpResponseLoggingEnabled();
} else {
return true;
}
}
项目:robozonky
文件:RoboZonkyFilter.java
private String getResponseEntity(final ClientResponseContext clientResponseContext) throws IOException {
if (shouldLogEntity(clientResponseContext)) {
final InterceptingInputStream s = new InterceptingInputStream(clientResponseContext.getEntityStream());
clientResponseContext.setEntityStream(s);
logger.debug("Response body is: {}", s.getContents());
return s.getContents();
} else {
return "";
}
}
项目:robozonky
文件:AuthenticatedFilterTest.java
@Test
public void changes400to401() throws IOException {
final int expectedCode = 400;
final ClientRequestContext ctx = Mockito.mock(ClientRequestContext.class);
final ClientResponseContext ctx2 = Mockito.mock(ClientResponseContext.class);
final ZonkyApiToken token = new ZonkyApiToken("", "", 299);
Mockito.when(ctx2.hasEntity()).thenReturn(true);
Mockito.when(ctx2.getHeaders()).thenReturn(new MultivaluedMapImpl<>());
Mockito.when(ctx2.getEntityStream()).thenReturn(c(token));
Mockito.when(ctx2.getStatusInfo()).thenReturn(Response.Status.fromStatusCode(expectedCode));
Mockito.when(ctx2.getStatus()).thenReturn(expectedCode);
final RoboZonkyFilter filter = new AuthenticatedFilter(token);
filter.filter(ctx, ctx2);
Mockito.verify(ctx2, Mockito.times(1)).setStatus(401);
}
项目:bootique-jersey-client
文件:ClientTimingFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) {
Timer.Context requestTimerContext = (Timer.Context) requestContext.getProperty(TIMER_PROPERTY);
// TODO: this timing does not take into account reading response
// content... May need to add additional interceptor for that.
long timeNanos = requestTimerContext.stop();
LOGGER.info("Client request finished. Status: {}, time: {} ms.", responseContext.getStatus(),
timeNanos / 1000000);
}
项目:cf-java-logging-support
文件:RequestMetricsClientResponseFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
try {
handler.handle(new ClientResponseContextAdapter(responseContext), (RequestRecord) requestContext
.getProperty(REQ_METRICS_KEY));
} catch (Exception ex) {
LoggerFactory.getLogger(RequestMetricsClientResponseFilter.class).error("Can't handle client response", ex);
}
}
项目:jahhan
文件:CryptoFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
boolean needDecrypt = AuthenticationVariable.getAuthenticationVariable().isCrypt();
URI uriInfo = requestContext.getUri();
String path = uriInfo.getPath();
boolean docRequest = path.endsWith("/swagger");
if (needDecrypt && !(docRequest && BaseConfiguration.IS_DEBUG)) {
InputStream entityStream = responseContext.getEntityStream();
BufferedReader br = new BufferedReader(new InputStreamReader(entityStream));
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
String context = sb.toString();
String key = AuthenticationVariable.getAuthenticationVariable().getKey();
Assert.notNullString(key, "鉴权秘钥获取失败!", HttpStatus.SC_UNAUTHORIZED, JahhanErrorCode.NO_AUTHORITY);
context = aesCrypto.decrypt(context, key);
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
out.write(context.getBytes());
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
responseContext.setEntityStream(in);
} catch (Exception e) {
JahhanException.throwException(JahhanErrorCode.UNKNOW_ERROR, "未知错误", e);
} finally {
out.close();
}
}
}
项目:pay-publicapi
文件:RestClientLoggingFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
long elapsed = timer.get().elapsed(TimeUnit.MILLISECONDS);
responseContext.getHeaders().add(HEADER_REQUEST_ID, requestId.get());
logger.info(format("[%s] - %s to %s ended - total time %dms",
requestId.get(),
requestContext.getMethod(),
requestContext.getUri(),
elapsed));
requestId.remove();
timer.get().stop();
timer.remove();
}
项目:robots
文件:HttpStatusHandler.java
@Override
public void filter(@Nonnull ClientRequestContext requestContext, @Nonnull ClientResponseContext responseContext)
throws TemporaryAllow, TemporaryDisallow {
final Response.StatusType statusInfo = responseContext.getStatusInfo();
handleStatusCode(statusInfo);
handleStatus(statusInfo);
handleFamily(statusInfo);
}
项目:robots
文件:LoggingClientFilter.java
@Override
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
level.log(logger, "Response: [{} {}] {} {}",
requestContext.getMethod(),
requestContext.getUri(),
responseContext.getStatusInfo(),
responseContext.getHeaders());
}
项目:robots
文件:FollowRedirectsFilter.java
@Override
public void filter(@Nonnull ClientRequestContext requestContext, @Nonnull ClientResponseContext responseContext) throws IOException {
if (isValidRedirect(requestContext, responseContext)) {
final URI location = getAbsoluteRedirectLocation(requestContext, responseContext);
if (isRedirectWithinLimits(requestContext, location)) {
followRedirect(requestContext, responseContext, location);
}
}
}
项目:robots
文件:FollowRedirectsFilter.java
private boolean isValidRedirect(ClientRequestContext requestContext, ClientResponseContext responseContext) {
if (responseContext.getStatusInfo().getFamily() != Response.Status.Family.REDIRECTION) {
log.debug("No redirect to follow:", requestContext.getUri());
return false;
}
if (responseContext.getLocation() == null) {
log.warn("Missing redirect location in response for: {}", requestContext.getUri());
return false;
}
return true;
}