/** * Get the content type from a String. * <p> * @param contentTypeString the content type as a String. * @return The content type. If no "Content-Type is present then null is * returned. */ public static MediaType getContentType(String contentTypeString) { try { return (contentTypeString != null) ? MediaType.valueOf(contentTypeString) : null; } catch(IllegalArgumentException e) { throw clientError("Bad Content-Type header value: '" + contentTypeString + "'", e); } }
public static Variant selectVariant(ContainerRequest r, List<Variant> variants) { LinkedList<VariantHolder> vhs = getVariantHolderList(variants); Set<String> vary = new HashSet<String>(); vhs = selectVariants(vhs, HttpHelper.getAccept(r), MEDIA_TYPE_DC, vary); vhs = selectVariants(vhs, HttpHelper.getAcceptLanguage(r), LANGUAGE_TAG_DC, vary); vhs = selectVariants(vhs, HttpHelper.getAcceptCharset(r), CHARSET_DC, vary); vhs = selectVariants(vhs, HttpHelper.getAcceptEncoding(r), ENCODING_DC, vary); if (vhs.isEmpty()) { return null; } else { StringBuilder varyHeader = new StringBuilder(); for (String v : vary) { if (varyHeader.length() > 0) { varyHeader.append(','); } varyHeader.append(v); } r.getProperties().put(ContainerRequest.VARY_HEADER, varyHeader.toString()); return vhs.iterator().next().v; } } }
@Override public List<Locale> getAcceptableLanguages() { if (acceptLanguages == null || headersModCount != headers.getModCount()) { List<AcceptableLanguageTag> alts = HttpHelper.getAcceptLangauge(this); acceptLanguages = new ArrayList<Locale>(alts.size()); for (AcceptableLanguageTag alt : alts) { acceptLanguages.add(alt.getAsLocale()); } } return acceptLanguages; }
private ResponseBuilder evaluateIfNoneMatch(EntityTag eTag) { Set<MatchingEntityTag> matchingTags = HttpHelper.getIfNoneMatch(this); if (matchingTags == null) return null; final String httpMethod = getMethod(); return evaluateIfNoneMatch( eTag, matchingTags, httpMethod.equals("GET") || httpMethod.equals("HEAD")); }
@Override public MediaType getMediaType() { if (contentType == null || headersModCount != headers.getModCount()) contentType = HttpHelper.getContentType(this); return contentType; }
@Override public List<MediaType> getAcceptableMediaTypes(List<QualitySourceMediaType> priorityMediaTypes) { return new ArrayList<MediaType>(HttpHelper.getAccept(this, priorityMediaTypes)); }
@Override public ResponseBuilder evaluatePreconditions() { Set<MatchingEntityTag> matchingTags = HttpHelper.getIfMatch(this); if (matchingTags == null) { return null; } // Since the resource does not exist the method must not be // perform and 412 Precondition Failed is returned return Responses.preconditionFailed(); }
/** * Get the list of language tag from the "Accept-Language" of an HTTP request. * <p> * @deprecated see {@link #getAcceptLanguage(com.sun.jersey.api.core.HttpRequestContext) }. * @param request The HTTP request. * @return The list of LanguageTag. This list * is ordered with the highest quality acceptable language tag occurring first. */ @Deprecated public static List<AcceptableLanguageTag> getAcceptLangauge(HttpRequestContext request) { return getAcceptLanguage(request); }
@Override public Locale getLanguage() { return HttpHelper.getContentLanguageAsLocale(this); }
final Set<MatchingEntityTag> matchingTags = HttpHelper.getIfNoneMatch(this); if (matchingTags != null) { r = evaluateIfNoneMatch(eTag, matchingTags, isGetOrHead);
/** * Get the content type from the "Content-Type" of an HTTP request. * <p> * @param request The HTTP request. * @return The content type. If no "Content-Type is present then null is * returned. */ public static MediaType getContentType(HttpRequestContext request) { return getContentType(request.getRequestHeaders().getFirst(HttpHeaders.CONTENT_TYPE)); }
@Override public List<MediaType> getAcceptableMediaTypes() { if (accept == null || headersModCount != headers.getModCount()) accept = new ArrayList<MediaType>(HttpHelper.getAccept(this)); return accept; }
private ResponseBuilder evaluateIfMatch(EntityTag eTag) { Set<MatchingEntityTag> matchingTags = HttpHelper.getIfMatch(this); if (matchingTags == null) { return null; } // The strong comparison function must be used to compare the entity // tags. Thus if the entity tag of the entity is weak then matching // of entity tags in the If-Match header should fail. if (eTag.isWeak()) { return Responses.preconditionFailed(); } if (matchingTags != MatchingEntityTag.ANY_MATCH && !matchingTags.contains(eTag)) { // 412 Precondition Failed return Responses.preconditionFailed(); } return null; }
/** * Get the list of language tag from the "Accept-Language" of an HTTP request. * <p> * @deprecated see {@link #getAcceptLanguage(com.sun.jersey.api.core.HttpRequestContext) }. * @param request The HTTP request. * @return The list of LanguageTag. This list * is ordered with the highest quality acceptable language tag occurring first. */ @Deprecated public static List<AcceptableLanguageTag> getAcceptLangauge(HttpRequestContext request) { return getAcceptLanguage(request); }
@Override public Locale getLanguage() { return HttpHelper.getContentLanguageAsLocale(this); }
public static Variant selectVariant(ContainerRequest r, List<Variant> variants) { LinkedList<VariantHolder> vhs = getVariantHolderList(variants); Set<String> vary = new HashSet<String>(); vhs = selectVariants(vhs, HttpHelper.getAccept(r), MEDIA_TYPE_DC, vary); vhs = selectVariants(vhs, HttpHelper.getAcceptLanguage(r), LANGUAGE_TAG_DC, vary); vhs = selectVariants(vhs, HttpHelper.getAcceptCharset(r), CHARSET_DC, vary); vhs = selectVariants(vhs, HttpHelper.getAcceptEncoding(r), ENCODING_DC, vary); if (vhs.isEmpty()) { return null; } else { StringBuilder varyHeader = new StringBuilder(); for (String v : vary) { if (varyHeader.length() > 0) { varyHeader.append(','); } varyHeader.append(v); } r.getProperties().put(ContainerRequest.VARY_HEADER, varyHeader.toString()); return vhs.iterator().next().v; } } }
public static Set<MatchingEntityTag> getIfMatch(HttpRequestContext request) { final String ifMatch = request.getHeaderValue(HttpHeaders.IF_MATCH); if (ifMatch == null || ifMatch.length() == 0) { return null; } try { return HttpHeaderReader.readMatchingEntityTag(ifMatch); } catch (java.text.ParseException e) { throw clientError("Bad If-Match header value: '" + ifMatch + "'", e); } }
private ResponseBuilder evaluateIfNoneMatch(EntityTag eTag) { Set<MatchingEntityTag> matchingTags = HttpHelper.getIfNoneMatch(this); if (matchingTags == null) return null; final String httpMethod = getMethod(); return evaluateIfNoneMatch( eTag, matchingTags, httpMethod.equals("GET") || httpMethod.equals("HEAD")); }
@Override public MediaType getMediaType() { if (contentType == null || headersModCount != headers.getModCount()) contentType = HttpHelper.getContentType(this); return contentType; }
@Override public List<MediaType> getAcceptableMediaTypes(List<QualitySourceMediaType> priorityMediaTypes) { return new ArrayList<MediaType>(HttpHelper.getAccept(this, priorityMediaTypes)); }