private static Patterns processAnythingButValuesSetSingleValueMatchExpression()

in src/main/software/amazon/event/ruler/JsonRuleCompiler.java [666:702]


    private static Patterns processAnythingButValuesSetSingleValueMatchExpression(JsonParser parser,
                JsonToken anythingButExpressionToken, MatchType matchType) throws IOException {
        Set<String> values = new HashSet<>();
        switch (anythingButExpressionToken) {
            case VALUE_STRING:
                String text = parser.getText();
                if ((matchType == MatchType.ANYTHING_BUT_PREFIX || matchType ==  MatchType.ANYTHING_BUT_SUFFIX)
                        && text.isEmpty()) {
                    barf(parser, "Null prefix/suffix not allowed");
                }
                values.add(generateValueBasedOnMatchType(text, matchType));
                break;
            default:
                if (matchType == MatchType.ANYTHING_BUT_IGNORE_CASE) {
                    barf(parser, "Inside anything-but/equals-ignore-case list, number|start|null|boolean is not supported.");
                } else if (matchType == MatchType.ANYTHING_BUT_WILDCARD) {
                    barf(parser, "wildcard match pattern must be a string");
                } else {
                    barf(parser, "prefix/suffix match pattern must be a string");
                }
        }

        switch (matchType) {
            case ANYTHING_BUT_IGNORE_CASE: return Patterns.anythingButIgnoreCaseMatch(values);
            case ANYTHING_BUT_PREFIX: return Patterns.anythingButPrefix(values);
            case ANYTHING_BUT_SUFFIX: return Patterns.anythingButSuffix(values);
            case ANYTHING_BUT_WILDCARD:
                try {
                    getParser().parse(MatchType.ANYTHING_BUT_WILDCARD, values.iterator().next());
                } catch (ParseException e) {
                    barf(parser, e.getLocalizedMessage());
                }
                return Patterns.anythingButWildcard(values);
            // Not barfing as this is a code bug rather than bad JSON.
            default: throw new IllegalArgumentException("processAnythingButValuesSetSingleValueMatchExpression received invalid matchType of " + matchType);
        }
    }