@JsonCreator
  public static SizeRequest fromString(String str) throws ResolvingException {
    if (str.equals("full")) {
      return new SizeRequest();
    }
    if (str.equals("max")) {
      return new SizeRequest(true);
    }
    Matcher matcher = PARSE_PAT.matcher(str);
    if (!matcher.matches()) {
      throw new ResolvingException("Bad format: " + str);
    }
    if (matcher.group(1) != null) {
      if (matcher.group(1).equals("!")) {
        return new SizeRequest(
            Integer.valueOf(matcher.group(2)),
            Integer.valueOf(matcher.group(3)),
            true);
      } else if (matcher.group(1).equals("pct:")) {
        return new SizeRequest(new BigDecimal(matcher.group(4)));
      }
    }
    Integer width = null;
    Integer height = null;
    if (matcher.group(2) != null) {
      width = Integer.parseInt(matcher.group(2));
    }
    if (matcher.group(3) != null) {
      height = Integer.parseInt(matcher.group(3));
    }
    return new SizeRequest(width, height);
  }
@ JsonCreator public static SizeRequest fromString ( String str ) throws ResolvingException { if ( str . equals ( "full" ) ) { return new SizeRequest ( ) ; } if ( str . equals ( "max" ) ) { return new SizeRequest ( true ) ; } Matcher matcher = PARSE_PAT . matcher ( str ) ; if ( ! matcher . matches ( ) ) { throw new ResolvingException ( "Bad format: " + str ) ; } if ( matcher . group ( 1 ) != null ) { if ( matcher . group ( 1 ) . equals ( "!" ) ) { return new SizeRequest ( Integer . valueOf ( matcher . group ( 2 ) ) , Integer . valueOf ( matcher . group ( 3 ) ) , true ) ; } else if ( matcher . group ( 1 ) . equals ( "pct:" ) ) { return new SizeRequest ( new BigDecimal ( matcher . group ( 4 ) ) ) ; } } Integer width = null ; Integer height = null ; if ( matcher . group ( 2 ) != null ) { width = Integer . parseInt ( matcher . group ( 2 ) ) ; } if ( matcher . group ( 3 ) != null ) { height = Integer . parseInt ( matcher . group ( 3 ) ) ; } return new SizeRequest ( width , height ) ; }
Parse an IIIF Image API compliant size request string

@param str IIIF Image API compliant size request string
@return parsed SizeRequest
@throws ResolvingException if the request string is malformed