@SuppressWarnings("rawtypes") private static Locale getLocale(MultivaluedMap headers) { if (headers.containsKey("Accept-Language") && headers.get("Accept-Language") != null) { String h = String.valueOf(headers.get("Accept-Language")); if (h != null) { MediaTypeRange[] mr = MediaTypeRange.parse(h); if (mr.length > 0) return toLocale(mr[0].getMediaType().getType()); } } return null; }
float q2 = mr.getQValue(); float matchQuant2 = mr.getMediaType().match(mt.getMediaType(), false) * mt.getQValue();
final void init(RestJavaMethod rjm, RequestProperties properties) throws NotAcceptable { this.restJavaMethod = rjm; this.properties = properties; // Find acceptable charset String h = request.getHeader("accept-charset"); String charset = null; if (h == null) charset = rjm.defaultCharset; else for (MediaTypeRange r : MediaTypeRange.parse(h)) { if (r.getQValue() > 0) { MediaType mt = r.getMediaType(); if (mt.getType().equals("*")) charset = rjm.defaultCharset; else if (Charset.isSupported(mt.getType())) charset = mt.getType(); if (charset != null) break; } } if (charset == null) throw new NotAcceptable("No supported charsets in header ''Accept-Charset'': ''{0}''", request.getHeader("Accept-Charset")); super.setCharacterEncoding(charset); this.responseMeta = rjm.responseMeta; }
mr = accept.asRanges().get(0); assertTextEquals("text/json", mr); assertTextEquals("text/json", mr.getMediaType()); assertObjectEquals("{}", mr.getMediaType().getParameters()); assertTextEquals("1.0", mr.getQValue()); assertObjectEquals("{}", mr.getExtensions()); assertTextEquals("foo", mr.getMediaType()); assertObjectEquals("{}", mr.getMediaType().getParameters()); assertTextEquals("1.0", mr.getQValue()); assertObjectEquals("{}", mr.getExtensions()); assertTextEquals("foo", mr.getMediaType()); assertObjectEquals("{}", mr.getMediaType().getParameters()); assertTextEquals("1.0", mr.getQValue()); assertObjectEquals("{}", mr.getExtensions()); assertTextEquals("text/json;a=1", mr.getMediaType()); assertObjectEquals("{a:['1']}", mr.getMediaType().getParameters()); assertTextEquals("0.9", mr.getQValue()); assertObjectEquals("{b:['2']}", mr.getExtensions()); assertTextEquals("text/json;a=1;a=2", mr.getMediaType()); assertObjectEquals("{a:['1','2']}", mr.getMediaType().getParameters()); assertTextEquals("0.9", mr.getQValue()); assertObjectEquals("{b:['3','4']}", mr.getExtensions()); assertTextEquals("text/json;a=1", mr.getMediaType()); assertObjectEquals("{a:['1']}", mr.getMediaType().getParameters());
private Accept(String value) { this.mediaRanges = MediaTypeRange.parse(value); this.mediaRangesList = immutableList(mediaRanges); }
int match = a.findMatch(mediaTypeRanges); if (match >= 0) { sm = new SerializerMatch(mediaTypeRanges[match].getMediaType(), mediaTypeRangeSerializers[match]); cache.putIfAbsent(acceptHeader, sm);
mtr = new MediaTypeRange[]{new MediaTypeRange(value)}; } else { Set<MediaTypeRange> ranges = new TreeSet<>(); if (r.isEmpty()) continue; ranges.add(new MediaTypeRange(r));
final void init(RestJavaMethod rjm, RequestProperties properties) throws NotAcceptable { this.restJavaMethod = rjm; this.properties = properties; // Find acceptable charset String h = request.getHeader("accept-charset"); String charset = null; if (h == null) charset = rjm.defaultCharset; else for (MediaTypeRange r : MediaTypeRange.parse(h)) { if (r.getQValue() > 0) { MediaType mt = r.getMediaType(); if (mt.getType().equals("*")) charset = rjm.defaultCharset; else if (Charset.isSupported(mt.getType())) charset = mt.getType(); if (charset != null) break; } } if (charset == null) throw new NotAcceptable("No supported charsets in header ''Accept-Charset'': ''{0}''", request.getHeader("Accept-Charset")); super.setCharacterEncoding(charset); this.responseMeta = rjm.responseMeta; }
private Accept(String value) { this.mediaRanges = MediaTypeRange.parse(value); this.mediaRangesList = immutableList(mediaRanges); }
int match = a.findMatch(mediaTypeRanges); if (match >= 0) { sm = new SerializerMatch(mediaTypeRanges[match].getMediaType(), mediaTypeRangeSerializers[match]); cache.putIfAbsent(acceptHeader, sm);
mtr = new MediaTypeRange[]{new MediaTypeRange(value)}; } else { Set<MediaTypeRange> ranges = new TreeSet<>(); if (r.isEmpty()) continue; ranges.add(new MediaTypeRange(r));
@SuppressWarnings("rawtypes") private static Locale getLocale(MultivaluedMap headers) { if (headers.containsKey("Accept-Language") && headers.get("Accept-Language") != null) { String h = String.valueOf(headers.get("Accept-Language")); if (h != null) { MediaTypeRange[] mr = MediaTypeRange.parse(h); if (mr.length > 0) return toLocale(mr[0].getMediaType().getType()); } } return null; }
/** * Convenience method for searching through all of the subtypes of all the media ranges in this header for the * presence of a subtype fragment. * * <p> * For example, given the header <js>"text/json+activity"</js>, calling * <code>hasSubtypePart(<js>"activity"</js>)</code> returns <jk>true</jk>. * * @param part The media type subtype fragment. * @return <jk>true</jk> if subtype fragment exists. */ public boolean hasSubtypePart(String part) { for (MediaTypeRange mr : this.mediaRanges) if (mr.getQValue() > 0 && mr.getMediaType().getSubTypes().indexOf(part) >= 0) return true; return false; }
final void init(RestJavaMethod rjm, RequestProperties properties) throws NotAcceptable { this.restJavaMethod = rjm; this.properties = properties; // Find acceptable charset String h = request.getHeader("accept-charset"); String charset = null; if (h == null) charset = rjm.defaultCharset; else for (MediaTypeRange r : MediaTypeRange.parse(h)) { if (r.getQValue() > 0) { MediaType mt = r.getMediaType(); if (mt.getType().equals("*")) charset = rjm.defaultCharset; else if (Charset.isSupported(mt.getType())) charset = mt.getType(); if (charset != null) break; } } if (charset == null) throw new NotAcceptable("No supported charsets in header ''Accept-Charset'': ''{0}''", request.getHeader("Accept-Charset")); super.setCharacterEncoding(charset); this.responseMeta = rjm.responseMeta; }
private Accept(String value) { this.mediaRanges = MediaTypeRange.parse(value); this.mediaRangesList = immutableList(mediaRanges); }
int match = a.findMatch(mediaTypeRanges); if (match >= 0) { sm = new SerializerMatch(mediaTypeRanges[match].getMediaType(), mediaTypeRangeSerializers[match]); cache.putIfAbsent(acceptHeader, sm);
mtr = new MediaTypeRange[]{new MediaTypeRange(value)}; } else { Set<MediaTypeRange> ranges = new TreeSet<>(); if (r.isEmpty()) continue; ranges.add(new MediaTypeRange(r));
@Override /* ServletRequest */ public Enumeration<Locale> getLocales() { String h = headers.getString("Accept-Language"); if (h != null) { MediaTypeRange[] mr = MediaTypeRange.parse(h); if (mr.length > 0) { List<Locale> l = new ArrayList<>(mr.length); for (MediaTypeRange r : mr) l.add(toLocale(r.getMediaType().getType())); return enumeration(l); } } return super.getLocales(); }
float q2 = mr.getQValue(); float matchQuant2 = mr.getMediaType().match(mt.getMediaType(), false) * mt.getQValue();
@Test public void test() { MediaTypeRange[] r = MediaTypeRange.parse(mediaRange); assertEquals(label + " failed", expected, SimpleJsonSerializer.DEFAULT.toString(r)); } }