reader.hasNext(); String type = reader.nextToken().toString(); String subType = "*"; if (reader.hasNextSeparator('/', false)) { reader.next(false); subType = reader.nextToken().toString(); if (reader.hasNext()) { parameters = HttpHeaderReader.readParameters(reader); if (parameters != null) { String v = parameters.get(Quality.QUALITY_PARAMETER_NAME); if (v != null) { quality = HttpHeaderReader.readQualityFactor(v);
public static ContentEncoding fromString(String input) throws ParseException { HttpHeaderReader reader = HttpHeaderReader.newInstance(input); // Skip any white space reader.hasNext(); return new ContentEncoding(reader.nextToken().toString(), HttpHeaderReader.readQualityFactorParameter(reader)); }
Map<String, String> m = null; while (reader.hasNext()) { reader.nextSeparator(';'); while (reader.hasNextSeparator(';', true)) { reader.next(); if (!reader.hasNext()) { break; String name = reader.nextToken().toString().toLowerCase(); reader.nextSeparator('='); value = reader.nextTokenOrQuotedString(true).toString(); value = value.substring(value.lastIndexOf('\\') + 1); } else { value = reader.nextTokenOrQuotedString(false).toString();
@Override public boolean hasNext() { if (isTerminated) { return false; } if (reader.hasNext()) { if (reader.hasNextSeparator(',', true)) { isTerminated = true; return false; } else { return true; } } return false; }
public AcceptableToken(HttpHeaderReader reader) throws ParseException { // Skip any white space reader.hasNext(); token = reader.nextToken().toString(); if (reader.hasNext()) { quality = HttpHeaderReader.readQualityFactorParameter(reader); } }
private CharSequence nextTokenOrQuotedString(boolean preserveBackslash) throws ParseException { Event e = next(false, preserveBackslash); if (e != Event.Token && e != Event.QuotedString) { throw new ParseException("Next event is not a Token or a Quoted String, " + getEventValue(), getIndex()); } return getEventValue(); }
/** * Create a new {@link javax.ws.rs.core.MediaType} instance from a header reader. * * @param reader header reader. * @return new {@code MediaType} instance. * * @throws ParseException in case of a header parsing error. */ public static MediaType valueOf(HttpHeaderReader reader) throws ParseException { // Skip any white space reader.hasNext(); // Get the type final String type = reader.nextToken().toString(); reader.nextSeparator('/'); // Get the subtype final String subType = reader.nextToken().toString(); Map<String, String> params = null; if (reader.hasNext()) { params = HttpHeaderReader.readParameters(reader); } return new MediaType(type, subType, params); } }
/** * TODO javadoc. */ public static int readQualityFactorParameter(HttpHeaderReader reader) throws ParseException { while (reader.hasNext()) { reader.nextSeparator(';'); // Ignore a ';' with no parameters if (!reader.hasNext()) { return Quality.DEFAULT; } // Get the parameter name CharSequence name = reader.nextToken(); reader.nextSeparator('='); // Get the parameter value CharSequence value = reader.nextTokenOrQuotedString(); if (name.length() == 1 && (name.charAt(0) == 'q' || name.charAt(0) == 'Q')) { return readQualityFactor(value); } } return Quality.DEFAULT; }
/** * Create a parameterized header from given {@link HttpHeaderReader http header reader}. * * @param reader reader to initialize new parameterized header from. * @throws ParseException if an un-expected/in-correct value is found during parsing the header. */ public ParameterizedHeader(final HttpHeaderReader reader) throws ParseException { reader.hasNext(); value = ""; while (reader.hasNext() && !reader.hasNextSeparator(';', false)) { reader.next(); value += reader.getEventValue(); } if (reader.hasNext()) { parameters = HttpHeaderReader.readParameters(reader); } if (parameters == null) { parameters = Collections.emptyMap(); } else { parameters = Collections.unmodifiableMap(parameters); } }
private void readDirective(CacheControl cacheControl, HttpHeaderReader reader) throws ParseException { final String directiveName = reader.nextToken().toString().toLowerCase(); if ("private".equals(directiveName)) { cacheControl.setPrivate(true); } else { String value = null; if (reader.hasNextSeparator('=', false)) { reader.nextSeparator('='); value = reader.nextTokenOrQuotedString().toString();
@Override public CacheControl fromString(String header) { throwIllegalArgumentExceptionIfNull(header, LocalizationMessages.CACHE_CONTROL_IS_NULL()); try { HttpHeaderReader reader = HttpHeaderReader.newInstance(header); CacheControl cacheControl = new CacheControl(); cacheControl.setNoTransform(false); // defaults to true while (reader.hasNext()) { readDirective(cacheControl, reader); if (reader.hasNextSeparator(',', true)) { reader.nextSeparator(','); } } return cacheControl; } catch (ParseException pe) { throw new IllegalArgumentException( "Error parsing cache control '" + header + "'", pe); } }
public ContentDisposition(final HttpHeaderReader reader, final boolean fileNameFix) throws ParseException { reader.hasNext(); type = reader.nextToken(); final Map<String, String> paramsOrNull = reader.hasNext() ? HttpHeaderReader.readParameters(reader, fileNameFix) : null; parameters = paramsOrNull == null ? Collections.<String, String>emptyMap() : Collections.unmodifiableMap(paramsOrNull); createParameters(); }
/** * Get a list of media types that are acceptable for a request. * * @return a read-only list of requested response media types sorted according * to their q-value, with highest preference first. */ public List<AcceptableMediaType> getQualifiedAcceptableMediaTypes() { final String value = getHeaderString(HttpHeaders.ACCEPT); if (value == null || value.isEmpty()) { return WILDCARD_ACCEPTABLE_TYPE_SINGLETON_LIST; } try { return Collections.unmodifiableList(HttpHeaderReader.readAcceptMediaType(value)); } catch (ParseException e) { throw exception(HttpHeaders.ACCEPT, value, e); } }
/** * Create a parameterized header from given string value. * * @param header header to create parameterized header from. * @throws ParseException if an un-expected/in-correct value is found during parsing the header. */ public ParameterizedHeader(final String header) throws ParseException { this(HttpHeaderReader.newInstance(header)); }
private int readIntValue(HttpHeaderReader reader, String directiveName) throws ParseException { reader.nextSeparator('='); int index = reader.getIndex(); try { return Integer.parseInt(reader.nextToken().toString()); } catch (NumberFormatException nfe) { ParseException pe = new ParseException( "Error parsing integer value for " + directiveName + " directive", index); pe.initCause(nfe); throw pe; } }
/** * Get the list of language tag from the "Accept-Charset" of an HTTP request. * * @return The list of AcceptableToken. This list * is ordered with the highest quality acceptable charset occurring first. */ public List<AcceptableToken> getQualifiedAcceptCharset() { final String acceptCharset = getHeaderString(HttpHeaders.ACCEPT_CHARSET); try { if (acceptCharset == null || acceptCharset.isEmpty()) { return Collections.singletonList(new AcceptableToken("*")); } return HttpHeaderReader.readAcceptToken(acceptCharset); } catch (java.text.ParseException e) { throw exception(HttpHeaders.ACCEPT_CHARSET, acceptCharset, e); } }
/** * Get a list of languages that are acceptable for the message. * * @return a read-only list of acceptable languages sorted according * to their q-value, with highest preference first. */ public List<AcceptableLanguageTag> getQualifiedAcceptableLanguages() { final String value = getHeaderString(HttpHeaders.ACCEPT_LANGUAGE); if (value == null || value.isEmpty()) { return Collections.singletonList(new AcceptableLanguageTag("*", null)); } try { return Collections.unmodifiableList(HttpHeaderReader.readAcceptLanguage(value)); } catch (ParseException e) { throw exception(HttpHeaders.ACCEPT_LANGUAGE, value, e); } }
private void readFieldNames(List<String> fieldNames, HttpHeaderReader reader) throws ParseException { if (!reader.hasNextSeparator('=', false)) { return; } reader.nextSeparator('='); fieldNames.addAll(Arrays.asList(COMMA_SEPARATED_LIST.split(reader.nextQuotedString()))); }