pingidentity / scim

SCIM 1.1 SDK for Java
41 stars 10 forks source link

Support for Internalization Characters in attributes #23

Closed yushae closed 3 years ago

yushae commented 3 years ago

Due to validation, german umlauts (ä, ö, ü) and the sz-character (ß) are not supported as filter attributes .

` switch (c) { case ' ': case '(': case ')': break loop;

      case '+':
      case '-':
      case '.':
      case '0':
      case '1':
      case '2':
      case '3':
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9':
      case 'A':
      case 'B':
      case 'C':
      case 'D':
      case 'E':
      case 'F':
      case 'G':
      case 'H':
      case 'I':
      case 'J':
      case 'K':
      case 'L':
      case 'M':
      case 'N':
      case 'O':
      case 'P':
      case 'Q':
      case 'R':
      case 'S':
      case 'T':
      case 'U':
      case 'V':
      case 'W':
      case 'X':
      case 'Y':
      case 'Z':
      case 'a':
      case 'b':
      case 'c':
      case 'd':
      case 'e':
      case 'f':
      case 'g':
      case 'h':
      case 'i':
      case 'j':
      case 'k':
      case 'l':
      case 'm':
      case 'n':
      case 'o':
      case 'p':
      case 'q':
      case 'r':
      case 's':
      case 't':
      case 'u':
      case 'v':
      case 'w':
      case 'x':
      case 'y':
      case 'z':
        // These are all OK.
        currentPos++;
        break;

      case '/':
      case ':':
      case ';':
      case '<':
      case '=':
      case '>':
      case '?':
      case '@':
      case '[':
      case '\\':
      case ']':
      case '^':
      case '_':
      case '`':
        // These are not allowed, but they are explicitly called out because
        // they are included in the range of values between '-' and 'z', and
        // making sure all possible characters are included can help make
        // the switch statement more efficient.  We'll fall through to the
        // default clause to reject them.
      default:
        final String msg = String.format(
            "Invalid character '%c' in a number or boolean value at " +
            "position %d",
            c, currentPos);
        throw new IllegalArgumentException(msg);`