public PatternCondition build()

in common/src/main/java/org/apache/rocketmq/eventbridge/tools/pattern/PatternConditionBuilder.java [86:120]


    public PatternCondition build(final JsonElement jsonElement) {
        AnythingButCondition butCondition = new AnythingButCondition();
        if (jsonElement.isJsonPrimitive() || jsonElement.isJsonNull()) {
            butCondition.addRuleCondition(new EqualCondition(jsonElement));
            return butCondition;
        }

        if (jsonElement.isJsonObject()) {
            final Set<Map.Entry<String, JsonElement>> entries = jsonElement.getAsJsonObject()
                .entrySet();
            for (final Map.Entry<String, JsonElement> elementEntry : entries) {
                if (!(ComplexConditionBuilders.prefix.toString()
                    .equals(elementEntry.getKey()) || ComplexConditionBuilders.suffix.toString()
                    .equals(elementEntry.getKey()))) {
                    throw new InvalidEventPatternException(PatternErrorMessages.INVALID_NESTED_ANYTHING_BUT_CONDITION);
                }
            }
            butCondition.addRuleCondition(PatternEvaluatorBuilder.parseCondition(jsonElement.getAsJsonObject()));
            return butCondition;
        }

        if (jsonElement.isJsonArray()) {
            for (final JsonElement element : jsonElement.getAsJsonArray()) {
                if (element.isJsonNull() || element.isJsonPrimitive()) {
                    butCondition.addRuleCondition(new EqualCondition(element));
                    continue;
                }
                throw new InvalidEventPatternException(PatternErrorMessages.INVALID_ANYTHING_BUT_CONDITION);
            }
            return butCondition;
        }

        // Can't be here, throw a exception
        throw new InvalidEventPatternException(PatternErrorMessages.INVALID_ANYTHING_BUT_CONDITION);
    }