@Override public URI getBaseUri() { return acr.getBaseUri(); }
@Override public URI getBaseUri() { return request.getBaseUri(); }
@Override public UriBuilder getBaseUriBuilder() { return UriBuilder.fromUri(getBaseUri()); }
private String getEncodedPath() { if (encodedPath != null) return encodedPath; final int length = getBaseUri().getRawPath().length(); if(length < getRequestUri().getRawPath().length()) { return encodedPath = getRequestUri().getRawPath().substring(length); } else { return ""; } }
private void setHeaders(MultivaluedMap<String, Object> headers) { this.headers = headers; Object location = headers.getFirst(HttpHeaders.LOCATION); if (location != null) { if (location instanceof URI) { final URI locationUri = (URI)location; if (!locationUri.isAbsolute()) { final URI base = (statusType.getStatusCode() == Status.CREATED.getStatusCode()) ? request.getAbsolutePath() : request.getBaseUri(); location = UriBuilder.fromUri(base). path(locationUri.getRawPath()). replaceQuery(locationUri.getRawQuery()). fragment(locationUri.getRawFragment()). build(); } headers.putSingle(HttpHeaders.LOCATION, location); } } }
request.getBaseUri(), request.getRequestUriBuilder().replacePath(path).build());
ub.queryParam(param.getKey(), param.getValue().toArray()); request.setUris(request.getBaseUri(), ub.build());
@Override public ContainerRequest filter( ContainerRequest containerRequest ) { String xForwardedHost = containerRequest.getHeaderValue( X_FORWARD_HOST_HEADER_KEY ); String xForwardedProto = containerRequest.getHeaderValue( X_FORWARD_PROTO_HEADER_KEY ); URI externalBaseUri = XForwardUtil.externalUri( containerRequest.getBaseUri(), xForwardedHost, xForwardedProto ); URI externalRequestUri = XForwardUtil.externalUri( containerRequest.getRequestUri(), xForwardedHost, xForwardedProto ); containerRequest.setUris( externalBaseUri, externalRequestUri ); return containerRequest; } }
public WebApplicationContext createMatchResourceContext(URI u) { final URI base = request.getBaseUri(); if (u.isAbsolute()) { // TODO check if base is a base of u URI r = base.relativize(u); if (r == u) { throw new ContainerException("The URI " + u + " is not relative to the base URI " + base); } } else { u = UriBuilder.fromUri(base). path(u.getRawPath()). replaceQuery(u.getRawQuery()). fragment(u.getRawFragment()). build(); } final ContainerRequest _request = new ContainerRequest(app, HTTP_METHOD_MATCH_RESOURCE, base, u, new InBoundHeaders(), new ByteArrayInputStream(new byte[0])); _request.setSecurityContext(request.getSecurityContext()); // Propagate security context final ContainerResponse _response = new ContainerResponse(app, _request, null); return new WebApplicationContext(app, _request, _response); }
@Test public void shouldSetTheBaseUriToTheSameValueAsTheXForwardHostHeader() { // given final String xForwardHostAndPort = "jimwebber.org:1234"; XForwardFilter filter = new XForwardFilter(); InBoundHeaders headers = new InBoundHeaders(); headers.add( X_FORWARD_HOST_HEADER_KEY, xForwardHostAndPort ); ContainerRequest request = new ContainerRequest( WEB_APPLICATION, "GET", URI.create( "http://iansrobinson.com" ), URI.create( "http://iansrobinson.com/foo/bar" ), headers, INPUT_STREAM ); // when ContainerRequest result = filter.filter( request ); // then assertThat( result.getBaseUri().toString(), containsString( xForwardHostAndPort ) ); }
@Test public void shouldSetTheRequestUriToTheSameProtocolAsTheXForwardProtoHeader() { // given final String theProtocol = "https"; XForwardFilter filter = new XForwardFilter(); InBoundHeaders headers = new InBoundHeaders(); headers.add( X_FORWARD_PROTO_HEADER_KEY, theProtocol ); ContainerRequest request = new ContainerRequest( WEB_APPLICATION, "GET", URI.create( "http://jimwebber.org:1234" ), URI.create( "http://jimwebber.org:1234/foo/bar" ), headers, INPUT_STREAM ); // when ContainerRequest result = filter.filter( request ); // then assertThat( result.getBaseUri().getScheme(), containsString( theProtocol ) ); }
@Test public void shouldSetTheBaseUriToTheSameProtocolAsTheXForwardProtoHeader() { // given final String theProtocol = "https"; XForwardFilter filter = new XForwardFilter(); InBoundHeaders headers = new InBoundHeaders(); headers.add( X_FORWARD_PROTO_HEADER_KEY, theProtocol ); ContainerRequest request = new ContainerRequest( WEB_APPLICATION, "GET", URI.create( "http://jimwebber.org:1234" ), URI.create( "http://jimwebber.org:1234/foo/bar" ), headers, INPUT_STREAM ); // when ContainerRequest result = filter.filter( request ); // then assertThat( result.getBaseUri().getScheme(), containsString( theProtocol ) ); }
public ContainerRequest filter(ContainerRequest request) { if (resourceConfig.getFeature(ResourceConfig.FEATURE_NORMALIZE_URI)) { final URI uri = request.getRequestUri(); final URI normalizedUri = UriHelper.normalize(uri, !resourceConfig.getFeature(ResourceConfig.FEATURE_CANONICALIZE_URI_PATH)); if (uri != normalizedUri) { if (resourceConfig.getFeature(ResourceConfig.FEATURE_REDIRECT)) { throw new WebApplicationException( Response.temporaryRedirect(normalizedUri).build()); } else { final URI baseUri = UriHelper.normalize(request.getBaseUri(), !resourceConfig.getFeature(ResourceConfig.FEATURE_CANONICALIZE_URI_PATH)); request.setUris(baseUri, normalizedUri); } } } return request; } }
public ContainerRequest filter(ContainerRequest request) { final String absoluteUri = request.getAbsolutePath().toString(); final String extension = StringUtils.substringAfterLast(absoluteUri, DOT); if (shouldFilter("/" + StringUtils.difference(request.getBaseUri().toString(), absoluteUri), extension)) { request.getRequestHeaders().putSingle(HttpHeaders.ACCEPT, EXTENSION_TO_ACCEPT_HEADER.get(extension)); final String absoluteUriWithoutExtension = StringUtils.substringBeforeLast(absoluteUri, DOT); request.setUris(request.getBaseUri(), getRequestUri(absoluteUriWithoutExtension, request.getQueryParameters())); } return request; }
@Override public ContainerRequest filter(final ContainerRequest request) { final MultivaluedMap<String, String> parameters = request.getQueryParameters(); if (containsUpperCase(parameters.keySet())) { //rebuild URI final URI lower = rebuildQuery(request.getRequestUri(), parameters); request.setUris(request.getBaseUri(), lower); } return request; } };
@Override public URI getBaseUri() { return request.getBaseUri(); }
@Override public UriBuilder getBaseUriBuilder() { return UriBuilder.fromUri(getBaseUri()); }
private String getEncodedPath() { if (encodedPath != null) return encodedPath; final int length = getBaseUri().getRawPath().length(); if(length < getRequestUri().getRawPath().length()) { return encodedPath = getRequestUri().getRawPath().substring(length); } else { return ""; } }
@Override public ContainerRequest filter(final ContainerRequest request) { final MultivaluedMap<String, String> parameters = request.getQueryParameters(); if (containsUpperCase(parameters.keySet())) { //rebuild URI final URI lower = rebuildQuery(request.getRequestUri(), parameters); request.setUris(request.getBaseUri(), lower); } return request; } };
@Override public ContainerRequest filter( ContainerRequest containerRequest ) { String xForwardedHost = containerRequest.getHeaderValue( X_FORWARD_HOST_HEADER_KEY ); String xForwardedProto = containerRequest.getHeaderValue( X_FORWARD_PROTO_HEADER_KEY ); URI externalBaseUri = XForwardUtil.externalUri( containerRequest.getBaseUri(), xForwardedHost, xForwardedProto ); URI externalRequestUri = XForwardUtil.externalUri( containerRequest.getRequestUri(), xForwardedHost, xForwardedProto ); containerRequest.setUris( externalBaseUri, externalRequestUri ); return containerRequest; } }