Search in sources :

Example 1 with DMNUnaryTest

use of org.kie.dmn.api.core.DMNUnaryTest in project drools by kiegroup.

the class FEELSchemaEnum method parseNumberAllowedValuesIntoSchema.

public static void parseNumberAllowedValuesIntoSchema(Schema schema, List<DMNUnaryTest> list) {
    // we leverage the property of the *base* FEEL grammar(non visited by ASTVisitor, only the ParseTree->AST Visitor) that `>x` is a Range
    List<Object> uts = evaluateUnaryTests(list);
    if (uts.size() <= 2 && uts.stream().allMatch(o -> o instanceof Range)) {
        // cast intentional.
        Range range = consolidateRanges((List) uts);
        if (range != null) {
            if (range.getLowEndPoint() != null) {
                schema.minimum((BigDecimal) range.getLowEndPoint());
                schema.exclusiveMinimum(range.getLowBoundary() == RangeBoundary.OPEN);
            }
            if (range.getHighEndPoint() != null) {
                schema.maximum((BigDecimal) range.getHighEndPoint());
                schema.exclusiveMaximum(range.getHighBoundary() == RangeBoundary.OPEN);
            }
        }
    } else if (uts.stream().allMatch(o -> o instanceof Number)) {
        schema.enumeration(uts);
    } else {
        LOG.warn("Unable to parse generic allowed value into the JSON Schema for enumeration");
    }
}
Also used : FEEL(org.kie.dmn.feel.FEEL) BigDecimal(java.math.BigDecimal) List(java.util.List) RangeBoundary(org.kie.dmn.feel.runtime.Range.RangeBoundary) UnaryTestImpl(org.kie.dmn.feel.runtime.UnaryTestImpl) Logger(org.slf4j.Logger) Schema(org.eclipse.microprofile.openapi.models.media.Schema) DMNUnaryTest(org.kie.dmn.api.core.DMNUnaryTest) LoggerFactory(org.slf4j.LoggerFactory) RangeImpl(org.kie.dmn.feel.runtime.impl.RangeImpl) Collectors(java.util.stream.Collectors) Range(org.kie.dmn.feel.runtime.Range) Range(org.kie.dmn.feel.runtime.Range)

Aggregations

BigDecimal (java.math.BigDecimal)1 List (java.util.List)1 Collectors (java.util.stream.Collectors)1 Schema (org.eclipse.microprofile.openapi.models.media.Schema)1 DMNUnaryTest (org.kie.dmn.api.core.DMNUnaryTest)1 FEEL (org.kie.dmn.feel.FEEL)1 Range (org.kie.dmn.feel.runtime.Range)1 RangeBoundary (org.kie.dmn.feel.runtime.Range.RangeBoundary)1 UnaryTestImpl (org.kie.dmn.feel.runtime.UnaryTestImpl)1 RangeImpl (org.kie.dmn.feel.runtime.impl.RangeImpl)1 Logger (org.slf4j.Logger)1 LoggerFactory (org.slf4j.LoggerFactory)1