/** * @param mediaTypes list of media types * @return list of {@link Variant} */ public static List<Variant> getAvailableVariants(List<MediaType> mediaTypes) { VariantListBuilder builder = Variant.VariantListBuilder.newInstance(); MediaType[] types = mediaTypes.toArray(new MediaType[mediaTypes.size()]); builder.mediaTypes(types); return builder.build(); }
return notAcceptable(VariantListBuilder.newInstance().mediaTypes(mediaType).build()).build();
Variant.mediaTypes(new MediaType("application", "pdf")); List<Variant> allVariants = variantBuilder.encodings("gzip", "identity").build();
/** * Select a single media type based on the headers in the request and the @Produces * annotation on a resource. * * @param request servlet request. * @param resourceInfo information about the resource matched. * @return selected media type or {@code null} if no matches. */ public static MediaType selectVariant(HttpServletRequest request, ResourceInfo resourceInfo) { Produces produces = resourceInfo.getResourceMethod().getAnnotation(Produces.class); if (produces == null) { produces = getAnnotation(resourceInfo.getResourceClass(), Produces.class); } if (produces != null) { final String[] mediaTypes = produces.value(); final List<Variant> variants = Arrays.asList(mediaTypes).stream().map((String mt) -> { return Variant.mediaTypes(MediaType.valueOf(mt)).build().get(0); }).collect(Collectors.toList()); return selectVariant(request, variants); } return null; } }
/** * Create a new SPARQL 1.1 query resource based on a repository. * * @param rep the repository this resources operates on */ public SPARQLQuery(SailRepository rep) { super(rep); // initialize additional result MIME-Types queryResultVariants = Variant.mediaTypes( MediaType.valueOf(RDFMediaType.SPARQL_RESULTS_JSON), MediaType.valueOf(RDFMediaType.SPARQL_RESULTS_XML), MediaType.valueOf(RDFMediaType.SPARQL_RESULTS_CSV), MediaType.valueOf(RDFMediaType.SPARQL_RESULTS_TSV) ).add().build(); booleanResultVariants = Variant.mediaTypes( MediaType.valueOf(RDFMediaType.SPARQL_RESULTS_JSON), MediaType.valueOf(RDFMediaType.SPARQL_RESULTS_XML), MediaType.valueOf(MediaType.TEXT_PLAIN) ).add().build(); // get reference to query rewriting component this.qwfactory = QueryRewriterFactory.getInstance(rep); // get query timeout from properties String sout = SPARQLExtensionProps.getProperty("query.timeout"); this.timeout = Integer.parseInt(sout); }
/** * Select a single media type based on the headers in the request and the @Produces * annotation on a resource. * * @param request servlet request. * @param resourceInfo information about the resource matched. * @return selected media type or {@code null} if no matches. */ public static MediaType selectVariant(HttpServletRequest request, ResourceInfo resourceInfo) { Produces produces = resourceInfo.getResourceMethod().getAnnotation(Produces.class); if (produces == null) { produces = resourceInfo.getResourceClass().getAnnotation(Produces.class); } if (produces != null) { final String[] mediaTypes = produces.value(); final List<Variant> variants = Arrays.asList(mediaTypes).stream().map((String mt) -> { return Variant.mediaTypes(MediaType.valueOf(mt)).build().get(0); }).collect(Collectors.toList()); return selectVariant(request, variants); } return null; } }
/** * Get media types for which the {@link org.glassfish.jersey.server.mvc.spi.ResolvedViewable resolved viewable} could be * produced. * * @param containerRequest request to obtain acceptable media types. * @param extendedUriInfo uri info to obtain resource method from and its producible media types. * @param varyHeaderValue Vary header reference. * @return list of producible media types. */ public static List<MediaType> getProducibleMediaTypes(final ContainerRequest containerRequest, final ExtendedUriInfo extendedUriInfo, final Ref<String> varyHeaderValue) { final List<MediaType> producedTypes = getResourceMethodProducibleTypes(extendedUriInfo); final MediaType[] mediaTypes = producedTypes.toArray(new MediaType[producedTypes.size()]); final List<Variant> variants = VariantSelector.selectVariants( containerRequest, Variant.mediaTypes(mediaTypes).build(), varyHeaderValue == null ? Refs.<String>emptyRef() : varyHeaderValue); return variants.stream() .map(variant -> MediaTypes.stripQualityParams(variant.getMediaType())) .collect(Collectors.toList()); }
/** * Get media types for which the {@link org.glassfish.jersey.server.mvc.spi.ResolvedViewable resolved viewable} could be * produced. * * @param containerRequest request to obtain acceptable media types. * @param extendedUriInfo uri info to obtain resource method from and its producible media types. * @param varyHeaderValue Vary header reference. * @return list of producible media types. */ public static List<MediaType> getProducibleMediaTypes(final ContainerRequest containerRequest, final ExtendedUriInfo extendedUriInfo, final Ref<String> varyHeaderValue) { final List<MediaType> producedTypes = getResourceMethodProducibleTypes(extendedUriInfo); final MediaType[] mediaTypes = producedTypes.toArray(new MediaType[producedTypes.size()]); final List<Variant> variants = VariantSelector.selectVariants(containerRequest, Variant.mediaTypes(mediaTypes) .build(), varyHeaderValue == null ? Refs.<String>emptyRef() : varyHeaderValue); return Lists.transform(variants, new Function<Variant, MediaType>() { @Override public MediaType apply(final Variant variant) { return MediaTypes.stripQualityParams(variant.getMediaType()); } }); }
@Override public Variant expectedVariant() { List<Variant> variants=VariantUtils.defaultVariants(); Variant variant=this.request.selectVariant(variants); if(variant==null) { throw new NotAcceptableException(this); } String acceptableCharset=acceptedCharset(); if(acceptableCharset==null) { throw new NotAcceptableException(this); } return Variant. encodings(variant.getEncoding()). languages(variant.getLanguage()). mediaTypes(variant.getMediaType().withCharset(acceptableCharset)). add(). build(). get(0); }
/** * Get media types for which the {@link org.glassfish.jersey.server.mvc.spi.ResolvedViewable resolved viewable} could be * produced. * * @param containerRequest request to obtain acceptable media types. * @param extendedUriInfo uri info to obtain resource method from and its producible media types. * @param varyHeaderValue Vary header reference. * @return list of producible media types. */ public static List<MediaType> getProducibleMediaTypes(final ContainerRequest containerRequest, final ExtendedUriInfo extendedUriInfo, final Ref<String> varyHeaderValue) { final List<MediaType> producedTypes = getResourceMethodProducibleTypes(extendedUriInfo); final MediaType[] mediaTypes = producedTypes.toArray(new MediaType[producedTypes.size()]); final List<Variant> variants = VariantSelector.selectVariants(containerRequest, Variant.mediaTypes(mediaTypes) .build(), varyHeaderValue == null ? Refs.<String>emptyRef() : varyHeaderValue); return Lists.transform(variants, new Function<Variant, MediaType>() { @Override public MediaType apply(final Variant variant) { return MediaTypes.stripQualityParams(variant.getMediaType()); } }); }
/** * Get media types for which the {@link org.glassfish.jersey.server.mvc.spi.ResolvedViewable resolved viewable} could be * produced. * * @param containerRequest request to obtain acceptable media types. * @param extendedUriInfo uri info to obtain resource method from and its producible media types. * @param varyHeaderValue Vary header reference. * @return list of producible media types. */ public static List<MediaType> getProducibleMediaTypes(final ContainerRequest containerRequest, final ExtendedUriInfo extendedUriInfo, final Ref<String> varyHeaderValue) { final List<MediaType> producedTypes = getResourceMethodProducibleTypes(extendedUriInfo); final MediaType[] mediaTypes = producedTypes.toArray(new MediaType[producedTypes.size()]); final List<Variant> variants = VariantSelector.selectVariants(containerRequest, Variant.mediaTypes(mediaTypes) .build(), varyHeaderValue == null ? Refs.emptyRef() : varyHeaderValue); return Lists.transform(variants, variant -> MediaTypes.stripQualityParams(variant.getMediaType())); }
/** * Get a list of acceptable variants. Current implementation only leverages * media type for the specification of variants. * * @param mediaTypes * The list of acceptable media types. * @return A list of acceptable variants. */ public static List<Variant> createVariants(MediaType... mediaTypes) { return Variant.VariantListBuilder. newInstance(). mediaTypes(mediaTypes). encodings(). languages(). add(). build(); }
protected Response getRequest(int requestId, List<MediaType> accept) throws SQLException, IOException, NotFoundException{ MediaType[] available = getTypeManager().createMediaTypes(getBroker().getRequestTypes(requestId)); if( available.length == 0 ){ throw new NotFoundException(); } // find acceptable request definition RequestConverter rc = getTypeManager().buildConverterChain(accept, Arrays.asList(available)); if( rc == null ){ // no acceptable response type available return Response.notAcceptable(Variant.mediaTypes(available).build()).build(); }else{ Reader def = getBroker().getRequestDefinition(requestId, rc.getConsumedType()); // transform def = rc.transform(def); // output using UTF-8. The HTTP default charset ISO-8859-1 has some missing characters like e.g Euro sign. return Response.ok(def, MediaType.valueOf(rc.getProducedType()).withCharset("UTF-8")).build(); } }
/** * Create a {@link VariantListBuilder} initialized with a set of supported * media types. * * @param mediaTypes the available mediaTypes. If specific char-sets * are supported they should be included as parameters of the respective * media type. * @return the initialized builder. * @throws java.lang.IllegalArgumentException * if mediaTypes is null or * contains no elements. */ public static VariantListBuilder mediaTypes(MediaType... mediaTypes) { VariantListBuilder b = VariantListBuilder.newInstance(); b.mediaTypes(mediaTypes); return b; }