Пример #1
0
  public static java.util.List<RDNEntry> parse(String data) throws ParseException {
    java.util.List<RDNEntry> results = new java.util.LinkedList<>();
    RDNEntry current = new RDNEntry();
    ParseState state = new ParseState();
    state.data = data;
    state.pos = 0;
    while (state.pos < state.data.length()) {
      eatWhite(state);
      if (state.pos < state.data.length() && state.data.charAt(state.pos) == '!') {
        if (!current.rdn.isEmpty()) {
          throw new ParseException("negation symbol '!' must appear at start of list");
        }
        ++state.pos;
        current.negate = true;
      }
      current.rdn.add(parseNameComponent(state));
      eatWhite(state);
      if (state.pos < state.data.length() && state.data.charAt(state.pos) == ',') {
        ++state.pos;
      } else if (state.pos < state.data.length() && state.data.charAt(state.pos) == ';') {
        ++state.pos;
        results.add(current);
        current = new RDNEntry();
      } else if (state.pos < state.data.length()) {
        throw new ParseException(
            "expected ',' or ';' at `" + state.data.substring(state.pos) + "'");
      }
    }
    if (!current.rdn.isEmpty()) {
      results.add(current);
    }

    return results;
  }
Пример #2
0
 public static java.util.List<RDNPair> parseStrict(String data) throws ParseException {
   java.util.List<RDNPair> results = new java.util.LinkedList<>();
   ParseState state = new ParseState();
   state.data = data;
   state.pos = 0;
   while (state.pos < state.data.length()) {
     results.add(parseNameComponent(state));
     eatWhite(state);
     if (state.pos < state.data.length()
         && (state.data.charAt(state.pos) == ',' || state.data.charAt(state.pos) == ';')) {
       ++state.pos;
     } else if (state.pos < state.data.length()) {
       throw new ParseException(
           "expected ',' or ';' at `" + state.data.substring(state.pos) + "'");
     }
   }
   return results;
 }