private static Function<HttpResponse, HttpResponse> createModifiedLocationHeaderAddingResponseMapper( final HttpRequest request, final CommandResponse commandResponse) { return response -> { if (HttpStatusCode.CREATED == commandResponse.getStatusCode()) { Uri newUri = request.getUri(); if (!request.method().isIdempotent()) { // only for not idempotent requests (e.g.: POST), add the "createdId" to the path: final String uriStr = newUri.toString(); String createdLocation; final int uriIdIndex = uriStr.indexOf(commandResponse.getId()); // if the uri contains the id, but *not* at the beginning if (uriIdIndex > 0) { createdLocation = uriStr.substring(0, uriIdIndex) + commandResponse.getId() + commandResponse.getResourcePath().toString(); } else { createdLocation = uriStr + "/" + commandResponse.getId() + commandResponse.getResourcePath() .toString(); } if (createdLocation.endsWith("/")) { createdLocation = createdLocation.substring(0, createdLocation.length() - 1); } newUri = Uri.create(createdLocation); } return response.addHeader(Location.create(newUri)); } else { return response; } }; }
final String requestMethod = request.method().name(); final String requestUri = request.getUri().toRelative().toString(); return mapRouteResult(
/** * Prepares an {@link ExpiringTimerBuilder} with default {@link #HTTP_ROUNDTRIP_METRIC_NAME} and tags. * @param request The request to extract tags and request method. * @return The prepared {@link ExpiringTimerBuilder} */ public static ExpiringTimerBuilder newHttpRoundTripTimer(final HttpRequest request) { final String requestMethod = request.method().name(); final String requestPath = request.getUri().toRelative().path(); final TraceInformation traceInformation = determineTraceInformation(requestPath); return newExpiringTimer(HTTP_ROUNDTRIP_METRIC_NAME) .tags(traceInformation.getTags()) .tag(TracingTags.REQUEST_METHOD, requestMethod); }
/** * Prepares an {@link ExpiringTimerBuilder} with default {@link #HTTP_ROUNDTRIP_METRIC_NAME} and tags. * @param request The request to extract tags and request method. * @return The prepared {@link ExpiringTimerBuilder} */ public static ExpiringTimerBuilder newHttpRoundTripTimer(final HttpRequest request) { final String requestMethod = request.method().name(); final String requestPath = request.getUri().toRelative().path(); final TraceInformation traceInformation = determineTraceInformation(requestPath); return newExpiringTimer(HTTP_ROUNDTRIP_METRIC_NAME) .tags(traceInformation.getTags()) .tag(TracingTags.REQUEST_METHOD, requestMethod); }
final String requestMethod = request.method().name(); final String requestUri = request.getUri().toRelative().toString(); logger.warn("Request {} '{}' timed out after {}", requestMethod, requestUri, duration);