@Test public void cannotParseMediaTypesWithEmptySubtype() throws Exception { try { ImmutableMediaType.fromString("text/ ", MediaTypes.preferredSyntax()); fail("Should fail for invalid media range"); } catch (final InvalidMediaTypeException e) { assertThat(Throwables.getRootCause(e).getMessage(),containsString("No media range subtype specified")); } }
static ImmutableMediaType fromString(final String mediaType, final MediaRangeSyntax syntax) { if(mediaType==null) { throw new InvalidMediaTypeException("Media type cannot be null"); } if(mediaType.isEmpty()) { throw new InvalidMediaTypeException(mediaType,"Media type cannot be empty"); } final String[] parts = mediaType.split(PARAM_SEPARATOR); String fullType = parts[0]; if(MediaTypes.WILDCARD_TYPE.equals(fullType)) { fullType = "*/*"; } final MediaRange mr=parseMediaRange(mediaType,HttpUtils.trimWhitespace(fullType)); final Map<String,String> parameters=parseParameters(mediaType,parts); try { return new ImmutableMediaType(syntax,mr.type,mr.subType,mr.suffix,parameters); } catch (final IllegalArgumentException ex) { throw new InvalidMediaTypeException(mediaType,ex,"Could not create media type"); } }
ImmutableMediaType implements MediaType { static ImmutableMediaType fromString(final String mediaType, final MediaRangeSyntax syntax) { if(mediaType==null) { throw new InvalidMediaTypeException("Media type cannot be null"); } if(mediaType.isEmpty()) { throw new InvalidMediaTypeException(mediaType,"Media type cannot be empty"); } final String[] parts = mediaType.split(PARAM_SEPARATOR); String fullType = parts[0]; if(MediaTypes.WILDCARD_TYPE.equals(fullType)) { fullType = "*/*"; } final MediaRange mr=parseMediaRange(mediaType,HttpUtils.trimWhitespace(fullType)); final Map<String,String> parameters=parseParameters(mediaType,parts); try { return new ImmutableMediaType(syntax,mr.type,mr.subType,mr.suffix,parameters); } catch (final IllegalArgumentException ex) { throw new InvalidMediaTypeException(mediaType,ex,"Could not create media type"); } } }
ImmutableMediaType implements MediaType { static ImmutableMediaType fromString(final String mediaType, final MediaRangeSyntax syntax) { if(mediaType==null) { throw new InvalidMediaTypeException("Media type cannot be null"); } if(mediaType.isEmpty()) { throw new InvalidMediaTypeException(mediaType,"Media type cannot be empty"); } final String[] parts = mediaType.split(PARAM_SEPARATOR); String fullType = parts[0]; if(MediaTypes.WILDCARD_TYPE.equals(fullType)) { fullType = "*/*"; } final MediaRange mr=parseMediaRange(mediaType,HttpUtils.trimWhitespace(fullType)); final Map<String,String> parameters=parseParameters(mediaType,parts); try { return new ImmutableMediaType(syntax,mr.type,mr.subType,mr.suffix,parameters); } catch (final IllegalArgumentException ex) { throw new InvalidMediaTypeException(mediaType,ex,"Could not create media type"); } } ImmutableMediaType(final MediaRangeSyntax syntax, final String type, final String subtype, String suffix, final Map<String, String> parameters); }
ImmutableMediaType implements MediaType { static ImmutableMediaType fromString(final String mediaType, final MediaRangeSyntax syntax) { if(mediaType==null) { throw new InvalidMediaTypeException("Media type cannot be null"); } if(mediaType.isEmpty()) { throw new InvalidMediaTypeException(mediaType,"Media type cannot be empty"); } final String[] parts = mediaType.split(PARAM_SEPARATOR); String fullType = parts[0]; if(MediaTypes.WILDCARD_TYPE.equals(fullType)) { fullType = "*/*"; } final MediaRange mr=parseMediaRange(mediaType,HttpUtils.trimWhitespace(fullType)); final Map<String,String> parameters=parseParameters(mediaType,parts); try { return new ImmutableMediaType(syntax,mr.type,mr.subType,mr.suffix,parameters); } catch (final IllegalArgumentException ex) { throw new InvalidMediaTypeException(mediaType,ex,"Could not create media type"); } } ImmutableMediaType(final MediaRangeSyntax syntax, final String type, final String subtype, String suffix, final Map<String, String> parameters); @Override String type(); @Override String subType(); @Override Charset charset(); @Override String suffix(); @Override Map<String,String> parameters(); @Override boolean isWildcard(); @Override String toHeader(); @Override int hashCode(); @Override boolean equals(final Object other); @Override String toString(); }
ImmutableMediaType implements MediaType { static ImmutableMediaType fromString(final String mediaType, final MediaRangeSyntax syntax) { if(mediaType==null) { throw new InvalidMediaTypeException("Media type cannot be null"); } if(mediaType.isEmpty()) { throw new InvalidMediaTypeException(mediaType,"Media type cannot be empty"); } final String[] parts = mediaType.split(PARAM_SEPARATOR); String fullType = parts[0]; if(MediaTypes.WILDCARD_TYPE.equals(fullType)) { fullType = "*/*"; } final MediaRange mr=parseMediaRange(mediaType,HttpUtils.trimWhitespace(fullType)); final Map<String,String> parameters=parseParameters(mediaType,parts); try { return new ImmutableMediaType(syntax,mr.type,mr.subType,mr.suffix,parameters); } catch (final IllegalArgumentException ex) { throw new InvalidMediaTypeException(mediaType,ex,"Could not create media type"); } } ImmutableMediaType(final MediaRangeSyntax syntax, final String type, final String subtype, String suffix, final Map<String, String> parameters); @Override String type(); @Override String subType(); @Override Charset charset(); @Override String suffix(); @Override Map<String,String> parameters(); @Override boolean isWildcard(); @Override String toHeader(); @Override int hashCode(); @Override boolean equals(final Object other); @Override String toString();  }