@Override public void filter(ContainerRequestContext rc) { String maybeType = rc.getUriInfo().getQueryParameters().getFirst("type"); if (maybeType != null && maybeType.equals("gpx")) { rc.getHeaders().putSingle(HttpHeaders.ACCEPT, "application/gpx+xml"); } }
@Override public void filter(ClientRequestContext requestContext) throws IOException { if (!requestContext.getHeaders().containsKey(HttpHeaders.ACCEPT_ENCODING)) { requestContext.getHeaders().add(HttpHeaders.ACCEPT_ENCODING, "gzip"); } if (hasEntity(requestContext) && isCompressionEnabled()) { Object contentEncoding = requestContext.getHeaders().getFirst(HttpHeaders.CONTENT_ENCODING); if (!"gzip".equals(contentEncoding)) { requestContext.getHeaders().add(HttpHeaders.CONTENT_ENCODING, "gzip"); } } }
protected void logHttpHeaders(MultivaluedMap<String, String> headers) { StringBuilder msg = new StringBuilder("The HTTP headers are: \n"); for (Map.Entry<String, List<String>> entry : headers.entrySet()) { msg.append(entry.getKey()).append(": "); for (int i = 0; i < entry.getValue().size(); i++) { msg.append(entry.getValue().get(i)); if (i < entry.getValue().size() - 1) { msg.append(", "); } } msg.append("\n"); } logger.info(msg.toString()); }
private static Map<String, List<String>> getQueryParams(MultivaluedMap<String, String> params) { Map<String, List<String>> output = new HashMap<String, List<String>>(); if (params != null) { for (String key : params.keySet()) { List<String> values = params.get(key); output.put(key, values); } } return output; }
private static Map<String, List<String>> getHeaders(HttpHeaders headers) { Map<String, List<String>> output = new HashMap<String, List<String>>(); if (headers != null) { for (String key : headers.getRequestHeaders().keySet()) { List<String> values = headers.getRequestHeaders().get(key); output.put(key, values); } } return output; }
/** * Add new headers. * * @param newHeaders new headers. * @return updated context. */ public InboundMessageContext headers(MultivaluedMap<String, String> newHeaders) { for (Map.Entry<String, List<String>> header : newHeaders.entrySet()) { headers.addAll(header.getKey(), header.getValue()); } return this; }
final String incomingReqUri = req.getUriInfo().getRequestUri().toString(); final String incomingBaseUri = req.getUriInfo().getBaseUri().toASCIIString(); try { String baseUriWithoutSlash = incomingBaseUri; URI newReqUri = new URI(baseUriWithoutSlash + "/" + relativeUri); LOGGER .warn("Rewriting new Request URI {} (incomingBaseUri = {}, incomingReqUri = {})", newReqUri.toString(), incomingBaseUri, incomingReqUri); req.setRequestUri(newReqUri); String path = req.getUriInfo().getPath(); if ((req.getMethod().equalsIgnoreCase("PUT") || req.getMethod().equalsIgnoreCase("POST"))) { String mediaType = modifiedContentType(path); if (mediaType != null) { req.getHeaders().remove(HttpHeaders.CONTENT_TYPE); req.getHeaders().add(HttpHeaders.CONTENT_TYPE, mediaType);
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Path("/{jpaQuery}") public Response executeUpdateJPAQuery(@Context HttpHeaders headers, @Context UriInfo info, String parameters) { String jpaQuery = info.getPathParameters().getFirst("jpaQuery"); String params = info.getRequestUri().getQuery(); String sessionToken = headers.getRequestHeader(Constants.SESSION_TOKEN_HEADER_NAME).get(0); sessionToken = sessionToken.replaceAll("^\"|\"$", ""); String mediaType = headers != null && headers.getRequestHeaders().containsKey("Content-type")? headers.getRequestHeader("Content-type").get(0) : MediaType.APPLICATION_JSON; mediaType = mediaType.equalsIgnoreCase(MediaType.APPLICATION_XML) ? MediaType.APPLICATION_XML return Response.noContent().build(); return Response.noContent().build(); return Response.ok(result, mediaType).build();
@Test public void shouldReturnAbsoluteURIForSeeOther() throws Exception { URI relativeURI = new URI( "/test/path" ); OutputFormat outputFormat = new OutputFormat( new JsonFormat(), new URI( "http://base.local:8765/" ), null ); Response response = outputFormat.seeOther( relativeURI ); assertEquals( 303, response.getStatus() ); assertEquals( new URI( "http://base.local:8765/test/path" ), response.getMetadata().getFirst( "Location" ) ); } }
/** * Handler for DELETE method requests for this resource Closes EMF and * removes application token along with from repository * * @param id * @return */ @DELETE @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public Response closeApplication( @HeaderParam(Constants.APPLICATION_TOKEN_HEADER_NAME) String applicationToken, @Context HttpHeaders headers) { String mediaType = headers != null && headers.getRequestHeaders().containsKey("Content-type")? headers.getRequestHeader("Content-type").get(0) : MediaType.APPLICATION_JSON; mediaType = mediaType.equalsIgnoreCase(MediaType.APPLICATION_XML) ? MediaType.APPLICATION_XML : MediaType.APPLICATION_JSON; if (log.isDebugEnabled()) log.debug("DELETE: Application Token:" + applicationToken); EntityManagerFactory emf = EMFRepository.INSTANCE .getEMF(applicationToken); if (emf == null) { log.warn("DELETE: Application Token:" + applicationToken + " doesn't exist and hence can't be closed"); return Response.serverError().build();// ResponseCode.DELETE_AT_FAILED; } EMFRepository.INSTANCE.removeEMF(applicationToken); return Response.ok(new String(ResponseCode.DELETE_AT_SUCCESS), mediaType).build(); }
@Test public void shouldReturnRedirectToAbsoluteAPIUsingOutputFormat() throws Exception { Config config = Config.defaults( ServerSettings.browser_path, "/browser/" ); String baseUri = "http://www.example.com:5435"; DiscoveryService ds = new DiscoveryService( config, new EntityOutputFormat( new JsonFormat(), new URI( baseUri ), null ), communityDiscoverableURIs( config, null ) ); Response response = ds.redirectToBrowser(); assertThat( response.getMetadata().getFirst( "Location" ), is( new URI( "http://www.example" + ".com:5435/browser/" ) ) ); }
@GET @Produces(MIMETYPE_BINARY) public Response getBinary(final @Context UriInfo uriInfo) { if (LOG.isTraceEnabled()) { LOG.trace("GET " + uriInfo.getAbsolutePath() + " as "+ MIMETYPE_BINARY); return Response.status(Response.Status.BAD_REQUEST).type(MIMETYPE_TEXT) .entity("Bad request: Default 'GET' method only works if there is exactly 1 column " + "in the row. Using the 'Accept' header with one of these formats lets you " + "retrieve the entire row if it has multiple columns: " + CRLF).build(); MultivaluedMap<String, String> params = uriInfo.getQueryParameters(); try { ResultGenerator generator = ResultGenerator.fromRowSpec(tableResource.getName(), rowspec, null, !params.containsKey(NOCACHE_PARAM_NAME)); if (!generator.hasNext()) { servlet.getMetrics().incrementFailedGetRequests(1); return Response.status(Response.Status.NOT_FOUND) .type(MIMETYPE_TEXT).entity("Not found" + CRLF) .build(); ResponseBuilder response = Response.ok(CellUtil.cloneValue(value)); response.header("X-Timestamp", value.getTimestamp()); servlet.getMetrics().incrementSucessfulGetRequests(1);
@Test public void shouldGetContentLengthHeaderForRetrievingProperties() { String entity = JsonHelper.createJsonFrom( Collections.singletonMap( "foo", "bar" ) ); final RestRequest request = req; JaxRsResponse createResponse = request.post( functionalTestHelper.dataUri() + "node/", entity ); JaxRsResponse response = request.get( createResponse.getLocation().toString() + "/properties" ); assertNotNull( response.getHeaders().get( "Content-Length" ) ); }
@GET @Produces({ MIMETYPE_XML, MIMETYPE_JSON, MIMETYPE_PROTOBUF, MIMETYPE_PROTOBUF_IETF }) public Response get(final @Context UriInfo uriInfo) { MultivaluedMap<String, String> params = uriInfo.getQueryParameters(); for (String rk : params.get(ROW_KEYS_PARAM_NAME)) { RowSpec rowSpec = new RowSpec(rk); !params.containsKey(NOCACHE_PARAM_NAME)); Cell value = null; RowModel rowModel = new RowModel(rowSpec.getRow()); return Response.status(Response.Status.NOT_FOUND) .type(MIMETYPE_TEXT).entity("No rows found." + CRLF) .build(); } else { servlet.getMetrics().incrementSucessfulGetRequests(1); return Response.ok(model).build();
@Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { final Response.StatusType responseStatus = responseContext.getStatusInfo(); final String requestPath = requestContext.getUriInfo().getAbsolutePath().getPath(); final List<MediaType> acceptableMediaTypes = requestContext.getAcceptableMediaTypes(); final boolean acceptsHtml = acceptableMediaTypes.stream() .anyMatch(mediaType -> mediaType.isCompatible(MediaType.TEXT_HTML_TYPE) || mediaType.isCompatible(MediaType.APPLICATION_XHTML_XML_TYPE)); final boolean isGetRequest = "get".equalsIgnoreCase(requestContext.getMethod()); if (isGetRequest && responseStatus == Response.Status.NOT_FOUND && acceptsHtml && !requestPath.startsWith("/" + HttpConfiguration.PATH_API)) { final String entity = indexHtmlGenerator.get(requestContext.getHeaders()); responseContext.setStatusInfo(Response.Status.OK); responseContext.setEntity(entity, new Annotation[0], MediaType.TEXT_HTML_TYPE); responseContext.getHeaders().putSingle("X-UA-Compatible", "IE=edge"); } } }
@GET @Path( "needs-auth-header" ) @Produces( MediaType.APPLICATION_JSON ) public Response authHeader( @Context HttpHeaders headers ) { StringBuilder theEntity = new StringBuilder( "{" ); Iterator<Map.Entry<String, List<String>>> headerIt = headers.getRequestHeaders().entrySet().iterator(); while ( headerIt.hasNext() ) { Map.Entry<String, List<String>> header = headerIt.next(); if ( header.getValue().size() != 1 ) { throw new IllegalArgumentException( "Multivalued header: " + header.getKey() ); } theEntity.append( "\"" ).append( header.getKey() ).append( "\":\"" ) .append( header.getValue().get( 0 ) ).append( "\"" ); if ( headerIt.hasNext() ) { theEntity.append( ", " ); } } theEntity.append( "}" ); return Response.ok().entity( theEntity.toString() ).build(); }
return Response.status(Status.NOT_FOUND).build(); MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); Set<Entry<String, List<String>>> entrySet = queryParams.entrySet(); Map<String, String> metadataMap = instanceInfo.getMetadata(); return Response.ok().build(); } catch (Throwable e) { logger.error("Error updating metadata for instance {}", id, e); return Response.serverError().build();
TimeSurface surface = new TimeSurface(spt); surface.params = Maps.newHashMap(); for (Map.Entry<String, List<String>> e : uriInfo.getQueryParameters().entrySet()) { return Response.ok().entity(new TimeSurfaceShort(surface)).build(); // .created(URI) } else { return Response.noContent().entity("NO SPT").build(); return Response.status(Response.Status.BAD_REQUEST).entity("BAD USER").build();
@Produces("application/x-www-form-urlencoded") @TokenResource public Response postReqTokenRequest() { parameters.put(n, request.getParameterValues(n)); resp.param(OAuth1Parameters.TOKEN_SECRET, rt.getSecret()); resp.param(OAuth1Parameters.CALLBACK_CONFIRMED, "true"); return Response.ok(resp).build();
@Override public void filter(final ContainerRequestContext rc) throws IOException { final UriInfo uriInfo = rc.getUriInfo(); String path = uriInfo.getRequestUri().getRawPath(); if (path.indexOf('.') == -1) { return; final List<PathSegment> l = uriInfo.getPathSegments(false); if (l.isEmpty()) { return; rc.getHeaders().putSingle(HttpHeaders.ACCEPT, accept.toString()); rc.getHeaders().putSingle(HttpHeaders.ACCEPT_LANGUAGE, acceptLanguage); rc.setRequestUri(uriInfo.getRequestUriBuilder().replacePath(path).build());