MCPcopy
hub / github.com/google/guava / parse

Method parse

guava/src/com/google/common/net/MediaType.java:1102–1138  ·  view source on GitHub ↗

Parses a media type from its string representation. @throws IllegalArgumentException if the input is not parsable

(String input)

Source from the content-addressed store, hash-verified

1100 * @throws IllegalArgumentException if the input is not parsable
1101 */
1102 @CanIgnoreReturnValue // TODO(b/219820829): consider removing
1103 public static MediaType parse(String input) {
1104 checkNotNull(input);
1105 Tokenizer tokenizer = new Tokenizer(input);
1106 try {
1107 String type = tokenizer.consumeToken(TOKEN_MATCHER);
1108 consumeSeparator(tokenizer, '/');
1109 String subtype = tokenizer.consumeToken(TOKEN_MATCHER);
1110 ImmutableListMultimap.Builder<String, String> parameters = ImmutableListMultimap.builder();
1111 while (tokenizer.hasMore()) {
1112 consumeSeparator(tokenizer, ';');
1113 String attribute = tokenizer.consumeToken(TOKEN_MATCHER);
1114 consumeSeparator(tokenizer, '=');
1115 String value;
1116 if (tokenizer.previewChar() == '"') {
1117 tokenizer.consumeCharacter('"');
1118 StringBuilder valueBuilder = new StringBuilder();
1119 while (tokenizer.previewChar() != '"') {
1120 if (tokenizer.previewChar() == '\\') {
1121 tokenizer.consumeCharacter('\\');
1122 valueBuilder.append(tokenizer.consumeCharacter(ascii()));
1123 } else {
1124 valueBuilder.append(tokenizer.consumeToken(QUOTED_TEXT_MATCHER));
1125 }
1126 }
1127 value = valueBuilder.toString();
1128 tokenizer.consumeCharacter('"');
1129 } else {
1130 value = tokenizer.consumeToken(TOKEN_MATCHER);
1131 }
1132 parameters.put(attribute, value);
1133 }
1134 return create(type, subtype, parameters.build());
1135 } catch (IllegalStateException e) {
1136 throw new IllegalArgumentException("Could not parse '" + input + "'", e);
1137 }
1138 }
1139
1140 private static void consumeSeparator(Tokenizer tokenizer, char c) {
1141 tokenizer.consumeTokenIfPresent(LINEAR_WHITE_SPACE);

Calls 13

consumeTokenMethod · 0.95
consumeSeparatorMethod · 0.95
builderMethod · 0.95
hasMoreMethod · 0.95
previewCharMethod · 0.95
consumeCharacterMethod · 0.95
createMethod · 0.95
toStringMethod · 0.65
putMethod · 0.65
checkNotNullMethod · 0.45
appendMethod · 0.45
asciiMethod · 0.45