| 1056 | } |
| 1057 | |
| 1058 | private String computeToString() { |
| 1059 | StringBuilder builder = new StringBuilder().append(type).append('/').append(subtype); |
| 1060 | if (!parameters.isEmpty()) { |
| 1061 | builder.append("; "); |
| 1062 | Multimap<String, String> quotedParameters = Multimaps.transformValues(parameters, new Function<String, String>() { |
| 1063 | @Override |
| 1064 | public String apply(String value) { |
| 1065 | return TOKEN_MATCHER.matchesAllOf(value) ? value : escapeAndQuote(value); |
| 1066 | } |
| 1067 | }); |
| 1068 | PARAMETER_JOINER.appendTo(builder, quotedParameters.entries()); |
| 1069 | } |
| 1070 | return builder.toString(); |
| 1071 | } |
| 1072 | |
| 1073 | private static String escapeAndQuote(String value) { |
| 1074 | StringBuilder escaped = new StringBuilder(value.length() + 16).append('"'); |