/** * Log request details. */ private void logRequest(final Request request) { log.debug("Request: {}", request); if (log.isTraceEnabled()) { if (request.getHeaders().isEmpty()) { log.trace("No request headers"); } else { log.trace("Request headers:"); for (Map.Entry<String, String> header : request.getHeaders()) { log.trace(" {}: {}", header.getKey(), header.getValue()); } } if (request.getAttributes().isEmpty()) { log.trace("No request attributes"); } else { log.trace("Request attributes:"); for (Map.Entry<String, Object> entry : request.getAttributes()) { log.trace(" {}={}", entry.getKey(), entry.getValue()); } } } }
/** * Un-stash the conditions originally found in {@link Request}. This method accepts only requests returned by {@link * #makeUnconditional(Request)} method, otherwise will throw {@link IllegalStateException}. This method must be used * in pair with the method above. */ @Nonnull public static Request makeConditional(@Nonnull final Request request) { checkNotNull(request); final Headers stashedHeaders = request.getAttributes().require(HTTP_CONDITIONS, Headers.class); for (Entry<String, String> entry : stashedHeaders.entries()) { request.getHeaders().set(entry.getKey(), stashedHeaders.getAll(entry.getKey())); } return request; }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { final String method = context.getRequest().getAction(); switch (method) { case GET: case HEAD: { final DispatchedRepositories dispatched = context.getRequest().getAttributes() .getOrCreate(DispatchedRepositories.class); return doGet(context, dispatched); } default: return HttpResponses.methodNotAllowed(method, GET, HEAD); } }
/** * Stashes the conditions of the passed in request, making it non-conditional request. To reverse this change, * use {@link #makeConditional(Request)} method. */ @Nonnull public static Request makeUnconditional(@Nonnull final Request request) { checkNotNull(request); final Headers stashedHeaders = new Headers(); for (String httpHeader : SUPPORTED_HEADERS) { List<String> headerValues = request.getHeaders().getAll(httpHeader); if (headerValues != null) { stashedHeaders.set(httpHeader, headerValues); } request.getHeaders().remove(httpHeader); } request.getAttributes().set(HTTP_CONDITIONS, stashedHeaders); return request; }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { Response response = context.proceed(); if (!Boolean.parseBoolean(context.getRequest().getAttributes().get(DO_NOT_REWRITE, String.class))) { if (response.getStatus().getCode() == HttpStatus.OK && response.getPayload() != null) { response = HttpResponses .ok(composerJsonProcessor.rewriteProviderJson(context.getRepository(), response.getPayload())); } } return response; } }
public Builder copy(final Request request) { checkNotNull(request); attributes = request.getAttributes(); headers = request.getHeaders(); action = request.getAction(); path = request.getPath(); parameters = request.getParameters(); payload = request.getPayload(); multipart = request.isMultipart(); multiparts = request.getMultiparts(); return this; }