diff --git a/build-parent/pom.xml b/build-parent/pom.xml index 843d151faad..d6cd0ca6e2e 100644 --- a/build-parent/pom.xml +++ b/build-parent/pom.xml @@ -60,10 +60,10 @@ 1.1.1 2.15.1 1.11.0 - 2.17.2 - 2.17.2 - 2.17.2 - 4.31.0 + 2.18.2 + 2.18.2 + 2.18.2 + 4.37.0 3.7.4 1.0.1 3.25.5 @@ -73,10 +73,12 @@ 1.4.21 0.18.0 4.7.5 - 1.12.2 - 3.15.3.1 + 1.14.5 + 3.20.0 4.1.118.Final - 3.10.0 + 4.0.8 + 3.11.4 + 8.5.11 4.13.1 1.8.0 @@ -100,11 +102,11 @@ 2.2 2.3.0 - 15.0.11.Final - 5.0.8.Final + 15.0.14.Final + 5.0.13.Final 3.26.0-GA 7.0.2.Final - 3.5.3.Final + 3.6.1.Final 8.0.0.Final 3.1.6.Final 3.1 @@ -194,10 +196,10 @@ 1.14.11 - 42.7.4 + 42.7.5 2.0.1 - 3.2.3 + 3.2.7 3.0.3 3.25.8 @@ -412,6 +414,22 @@ ${version.io.smallrye.openapi.core} + + io.smallrye.config + smallrye-config + ${version.io.smallrye.config.core} + + + org.osgi + org.osgi.annotation.versioning + + + org.ow2.asm + asm + + + + org.eclipse.parsson parsson diff --git a/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-multiunit/pom.xml b/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-multiunit/pom.xml index 6bce3217d9b..461c155ba92 100644 --- a/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-multiunit/pom.xml +++ b/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-multiunit/pom.xml @@ -82,6 +82,16 @@ + + org.drools + drools-quarkus-util-deployment + test + + + io.quarkus + quarkus-rest + test + diff --git a/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-reactive/pom.xml b/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-reactive/pom.xml index d659b481304..081ac97154f 100644 --- a/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-reactive/pom.xml +++ b/drools-quarkus-extension/drools-quarkus-examples/drools-quarkus-examples-reactive/pom.xml @@ -97,6 +97,16 @@ + + org.drools + drools-quarkus-util-deployment + test + + + io.quarkus + quarkus-rest + test + diff --git a/drools-quarkus-extension/drools-quarkus-integration-test-kmodule/pom.xml b/drools-quarkus-extension/drools-quarkus-integration-test-kmodule/pom.xml index 64cfdd756c0..8d61e53fc50 100644 --- a/drools-quarkus-extension/drools-quarkus-integration-test-kmodule/pom.xml +++ b/drools-quarkus-extension/drools-quarkus-integration-test-kmodule/pom.xml @@ -57,7 +57,7 @@ io.quarkus - quarkus-resteasy-reactive + quarkus-rest org.assertj diff --git a/drools-quarkus-extension/drools-quarkus-integration-test/pom.xml b/drools-quarkus-extension/drools-quarkus-integration-test/pom.xml index 75f28f356ea..ee60b42e684 100644 --- a/drools-quarkus-extension/drools-quarkus-integration-test/pom.xml +++ b/drools-quarkus-extension/drools-quarkus-integration-test/pom.xml @@ -61,7 +61,7 @@ io.quarkus - quarkus-resteasy-reactive + quarkus-rest org.assertj diff --git a/drools-quarkus-extension/drools-quarkus-ruleunit-integration-test/pom.xml b/drools-quarkus-extension/drools-quarkus-ruleunit-integration-test/pom.xml index 4a23cfdaa1f..f1df8766b40 100644 --- a/drools-quarkus-extension/drools-quarkus-ruleunit-integration-test/pom.xml +++ b/drools-quarkus-extension/drools-quarkus-ruleunit-integration-test/pom.xml @@ -52,11 +52,11 @@ io.quarkus - quarkus-resteasy-reactive + quarkus-rest io.quarkus - quarkus-resteasy-reactive-jackson + quarkus-rest-jackson org.assertj diff --git a/drools-reliability/drools-reliability-tests/infinispan-remote-config/infinispan-local.xml b/drools-reliability/drools-reliability-tests/infinispan-remote-config/infinispan-local.xml index ba003cff8b8..7421791e382 100644 --- a/drools-reliability/drools-reliability-tests/infinispan-remote-config/infinispan-local.xml +++ b/drools-reliability/drools-reliability-tests/infinispan-remote-config/infinispan-local.xml @@ -19,20 +19,19 @@ --> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:infinispan:config:15.0 https://infinispan.org/schemas/infinispan-config-15.0.xsd + urn:infinispan:server:15.0 https://infinispan.org/schemas/infinispan-server-15.0.xsd" + xmlns="urn:infinispan:config:15.0" + xmlns:server="urn:infinispan:server:15.0"> - - + @@ -41,33 +40,24 @@ - - - - - - - - - - + - + \ No newline at end of file diff --git a/drools-reliability/drools-reliability-tests/src/test/java/org/drools/reliability/test/example/infinispan/RemoteCacheManagerExample.java b/drools-reliability/drools-reliability-tests/src/test/java/org/drools/reliability/test/example/infinispan/RemoteCacheManagerExample.java index 266146e84a3..63b5cfd8c86 100644 --- a/drools-reliability/drools-reliability-tests/src/test/java/org/drools/reliability/test/example/infinispan/RemoteCacheManagerExample.java +++ b/drools-reliability/drools-reliability-tests/src/test/java/org/drools/reliability/test/example/infinispan/RemoteCacheManagerExample.java @@ -41,7 +41,7 @@ * After running this example, you can run RemoteCacheManagerExampleAfterFailOver to see the results. *

* So the steps are: - * docker run -p 11222:11222 -e USER="admin" -e PASS="secret" quay.io/infinispan/server:14.0 + * docker run -p 11222:11222 -e USER="admin" -e PASS="secret" quay.io/infinispan/server:15.0 * Run RemoteCacheManagerExample * Run RemoteCacheManagerExampleAfterFailOver */ diff --git a/kie-dmn/kie-dmn-openapi/pom.xml b/kie-dmn/kie-dmn-openapi/pom.xml index e4d8419b41a..f97d27d6c9a 100644 --- a/kie-dmn/kie-dmn-openapi/pom.xml +++ b/kie-dmn/kie-dmn-openapi/pom.xml @@ -94,6 +94,12 @@ provided + + io.smallrye.config + smallrye-config + test + + org.junit.jupiter junit-jupiter-api diff --git a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNOASConstants.java b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNOASConstants.java index 4f1b562b3e1..e9ef336c573 100644 --- a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNOASConstants.java +++ b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNOASConstants.java @@ -20,12 +20,15 @@ public class DMNOASConstants { + public static final String X_NULLABLE = "nullable"; public static final String X_DMN_TYPE = "x-dmn-type"; public static final String X_DMN_ALLOWED_VALUES = "x-dmn-allowed-values"; public static final String X_DMN_TYPE_CONSTRAINTS = "x-dmn-type-constraints"; public static final String X_DMN_DESCRIPTIONS = "x-dmn-descriptions"; public static final String X_DMN_MINIMUM_VALUE = "x-dmn-minimum-value"; public static final String X_DMN_MAXIMUM_VALUE = "x-dmn-maximum-value"; + public static final String X_DMN_EXCLUSIVE_MINIMUM_VALUE = "x-dmn-exclusive-minimum-value"; + public static final String X_DMN_EXCLUSIVE_MAXIMUM_VALUE = "x-dmn-exclusive-maximum-value"; private DMNOASConstants() { // no constructor for contants/utility classes. diff --git a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNOASGeneratorImpl.java b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNOASGeneratorImpl.java index 1e948f09ce5..6199983fd2e 100644 --- a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNOASGeneratorImpl.java +++ b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNOASGeneratorImpl.java @@ -18,9 +18,14 @@ */ package org.kie.dmn.openapi.impl; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; -import io.smallrye.openapi.runtime.io.JsonUtil; -import io.smallrye.openapi.runtime.io.schema.SchemaWriter; +import io.smallrye.openapi.api.OpenApiConfig; +import io.smallrye.openapi.runtime.io.IOContext; +import io.smallrye.openapi.runtime.io.JsonIO; +import io.smallrye.openapi.runtime.io.media.SchemaIO; +import org.eclipse.microprofile.config.ConfigProvider; import org.eclipse.microprofile.openapi.models.media.Schema; import org.kie.dmn.api.core.DMNModel; import org.kie.dmn.api.core.DMNType; @@ -54,10 +59,14 @@ public class DMNOASGeneratorImpl implements DMNOASGenerator { private NamingPolicy namingPolicy; private final Map schemas = new HashMap<>(); private ObjectNode jsonSchema; + private JsonIO jsonIO; + private SchemaIO schemaIO; public DMNOASGeneratorImpl(Collection models, String refPrefix) { this.dmnModels = new ArrayList<>(models); this.refPrefix = refPrefix; + this.jsonIO = JsonIO.newInstance(OpenApiConfig.fromConfig(ConfigProvider.getConfig())); + this.schemaIO = new SchemaIO<>(IOContext.forJson(jsonIO)); } @Override @@ -79,14 +88,14 @@ private void indexModels() { } private void prepareSerializaton() { - ObjectNode tree = JsonUtil.objectNode(); - ObjectNode definitions = JsonUtil.objectNode(); + ObjectNode tree = jsonIO.createObject(); + ObjectNode definitions = jsonIO.createObject(); tree.set("definitions", definitions); // It would be better if the map is a TreeMap, however that breaks test ProcessItemTest.test_together // For some reason, it looks like there is some reliance on the map being a HashMap, which should be investigated later as that should never happen. final List> sortedEntries = schemas.entrySet().stream().sorted(Map.Entry.comparingByKey(Comparator.comparing(DMNType::getName))).toList(); for (Entry kv : sortedEntries) { - SchemaWriter.writeSchema(definitions, kv.getValue(), namingPolicy.getName(kv.getKey())); + definitions.set(namingPolicy.getName(kv.getKey()), schemaIO.write(kv.getValue()).get()); } jsonSchema = tree; } diff --git a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNTypeSchemas.java b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNTypeSchemas.java index 7f7006f6634..f45fcce5b56 100644 --- a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNTypeSchemas.java +++ b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNTypeSchemas.java @@ -147,7 +147,7 @@ private Optional> ioSetDoc(DMNType t) { } private Schema schemaFromCompositeType(CompositeTypeImpl ct) { - Schema schema = OASFactory.createObject(Schema.class).type(SchemaType.OBJECT); + Schema schema = OASFactory.createObject(Schema.class).addType(SchemaType.OBJECT); if (ct.getBaseType() == null) { // main case for (Entry fkv : ct.getFields().entrySet()) { schema.addProperty(fkv.getKey(), refOrBuiltinSchema(fkv.getValue())); @@ -170,7 +170,7 @@ private void processIoSetDoc(final Schema schema, final DMNType type) { private Schema nestAsItemIfCollection(Schema original, DMNType t) { if (t.isCollection()) { - return OASFactory.createObject(Schema.class).type(SchemaType.ARRAY).items(original); + return OASFactory.createObject(Schema.class).addType(SchemaType.ARRAY).items(original); } else { return original; } diff --git a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNUnaryTestsMapper.java b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNUnaryTestsMapper.java index 885a1e61a60..d3225c0ef08 100644 --- a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNUnaryTestsMapper.java +++ b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/DMNUnaryTestsMapper.java @@ -44,6 +44,7 @@ import org.slf4j.LoggerFactory; import static java.util.stream.Collectors.groupingBy; +import static org.kie.dmn.openapi.impl.DMNOASConstants.X_NULLABLE; import static org.kie.dmn.openapi.impl.RangeNodeSchemaMapper.populateSchemaFromListOfRanges; public class DMNUnaryTestsMapper { @@ -64,7 +65,7 @@ public static void populateSchemaFromUnaryTests(Schema toPopulate, List nullNodes.size()) { // Let's create enum only if there is at least one node != NullNode enumBaseNodes.forEach(unaryEvaluationNode -> populateSchemaFromBaseNode(toPopulate, unaryEvaluationNode)); diff --git a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/FEELBuiltinTypeSchemaMapper.java b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/FEELBuiltinTypeSchemaMapper.java index 78d24419d51..73e641e52e0 100644 --- a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/FEELBuiltinTypeSchemaMapper.java +++ b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/FEELBuiltinTypeSchemaMapper.java @@ -26,6 +26,8 @@ import org.kie.dmn.feel.lang.types.BuiltInType; import org.kie.dmn.typesafe.DMNTypeUtils; +import java.util.List; + public class FEELBuiltinTypeSchemaMapper { public static Schema from(DMNType t) { @@ -41,10 +43,10 @@ private static Schema convertDurationToSchema(DMNType t) { switch (t.getName()) { case SimpleType.YEARS_AND_MONTHS_DURATION: case "yearMonthDuration": - return OASFactory.createObject(Schema.class).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:years and months duration").type(SchemaType.STRING).format("years and months duration").example("P1Y2M"); + return OASFactory.createObject(Schema.class).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:years and months duration").addType(SchemaType.STRING).format("years and months duration").examples(List.of("P1Y2M")); case SimpleType.DAYS_AND_TIME_DURATION: case "dayTimeDuration": - return OASFactory.createObject(Schema.class).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:days and time duration").type(SchemaType.STRING).format("days and time duration").example("P1D"); + return OASFactory.createObject(Schema.class).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:days and time duration").addType(SchemaType.STRING).format("days and time duration").examples(List.of("P1D")); default: throw new IllegalArgumentException(); } @@ -55,17 +57,17 @@ private static Schema convertBuiltInToJavaClass(BuiltInType builtin) { case UNKNOWN: return OASFactory.createObject(Schema.class).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:Any"); // intentional, do NOT add .type(SchemaType.OBJECT), the JSONSchema to represent FEEL:Any is {} case DATE: - return OASFactory.createObject(Schema.class).type(SchemaType.STRING).format("date").addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:date"); + return OASFactory.createObject(Schema.class).addType(SchemaType.STRING).format("date").addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:date"); case TIME: - return OASFactory.createObject(Schema.class).type(SchemaType.STRING).format("time").addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:time"); + return OASFactory.createObject(Schema.class).addType(SchemaType.STRING).format("time").addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:time"); case DATE_TIME: - return OASFactory.createObject(Schema.class).type(SchemaType.STRING).format("date-time").addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:date and time"); + return OASFactory.createObject(Schema.class).addType(SchemaType.STRING).format("date-time").addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:date and time"); case BOOLEAN: - return OASFactory.createObject(Schema.class).type(SchemaType.BOOLEAN).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:boolean"); + return OASFactory.createObject(Schema.class).addType(SchemaType.BOOLEAN).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:boolean"); case NUMBER: - return OASFactory.createObject(Schema.class).type(SchemaType.NUMBER).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:number"); + return OASFactory.createObject(Schema.class).addType(SchemaType.NUMBER).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:number"); case STRING: - return OASFactory.createObject(Schema.class).type(SchemaType.STRING).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:string"); + return OASFactory.createObject(Schema.class).addType(SchemaType.STRING).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:string"); case CONTEXT: return OASFactory.createObject(Schema.class).addExtension(DMNOASConstants.X_DMN_TYPE, "FEEL:context"); // intentional, do NOT add .type(SchemaType.OBJECT), the JSONSchema to represent FEEL:context is {} case DURATION: diff --git a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/RangeNodeSchemaMapper.java b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/RangeNodeSchemaMapper.java index c435a098b9b..0825afbe7f7 100644 --- a/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/RangeNodeSchemaMapper.java +++ b/kie-dmn/kie-dmn-openapi/src/main/java/org/kie/dmn/openapi/impl/RangeNodeSchemaMapper.java @@ -35,19 +35,33 @@ static void populateSchemaFromListOfRanges(Schema toPopulate, List ra if (range != null) { if (range.getLowEndPoint() != null) { if (range.getLowEndPoint() instanceof BigDecimal bigDecimal) { - toPopulate.minimum(bigDecimal); + if (range.getLowBoundary() == Range.RangeBoundary.OPEN){ + toPopulate.exclusiveMinimum(bigDecimal); + } else { + toPopulate.minimum(bigDecimal); + } } else { - toPopulate.addExtension(DMNOASConstants.X_DMN_MINIMUM_VALUE, range.getLowEndPoint()); + if (range.getLowBoundary() == Range.RangeBoundary.OPEN){ + toPopulate.addExtension(DMNOASConstants.X_DMN_EXCLUSIVE_MINIMUM_VALUE, range.getLowEndPoint()); + } else { + toPopulate.addExtension(DMNOASConstants.X_DMN_MINIMUM_VALUE, range.getLowEndPoint()); + } } - toPopulate.exclusiveMinimum(range.getLowBoundary() == Range.RangeBoundary.OPEN); } if (range.getHighEndPoint() != null) { if (range.getHighEndPoint() instanceof BigDecimal bigDecimal) { - toPopulate.maximum(bigDecimal); + if (range.getHighBoundary() == Range.RangeBoundary.OPEN ){ + toPopulate.exclusiveMaximum(bigDecimal); + } else { + toPopulate.maximum(bigDecimal); + } } else { - toPopulate.addExtension(DMNOASConstants.X_DMN_MAXIMUM_VALUE, range.getHighEndPoint()); + if (range.getHighBoundary() == Range.RangeBoundary.OPEN){ + toPopulate.addExtension(DMNOASConstants.X_DMN_EXCLUSIVE_MAXIMUM_VALUE, range.getHighEndPoint()); + } else { + toPopulate.addExtension(DMNOASConstants.X_DMN_MAXIMUM_VALUE, range.getHighEndPoint()); + } } - toPopulate.exclusiveMaximum(range.getHighBoundary() == Range.RangeBoundary.OPEN); } } } diff --git a/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/BaseDMNOASTest.java b/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/BaseDMNOASTest.java index 725a5ceabb3..fcdba84913a 100644 --- a/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/BaseDMNOASTest.java +++ b/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/BaseDMNOASTest.java @@ -24,12 +24,12 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.json.JsonMapper; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.networknt.schema.JsonSchema; import com.networknt.schema.JsonSchemaFactory; import com.networknt.schema.ValidationMessage; -import io.smallrye.openapi.runtime.io.JsonUtil; import org.kie.dmn.api.core.DMNModel; import org.kie.dmn.api.core.DMNRuntime; import org.kie.dmn.api.core.DMNType; @@ -71,7 +71,7 @@ protected static ObjectNode synthesizeSchema(DMNOASResult result, DMNModel model private static ObjectNode synthesizeSchema(DMNOASResult result, DMNType InputSetTypeUT) { String dollarRef = result.getNamingPolicy().getRef(InputSetTypeUT); ObjectNode syntheticJSONSchema = result.getJsonSchemaNode().deepCopy(); - JsonUtil.stringProperty(syntheticJSONSchema, "$ref", dollarRef); + syntheticJSONSchema.set("$ref", JsonNodeFactory.instance.textNode(dollarRef)); JacksonUtils.printoutJSON(syntheticJSONSchema); return syntheticJSONSchema; } diff --git a/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/EnumGenerationTest.java b/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/EnumGenerationTest.java index 9c2c11accb8..be6dec4929f 100644 --- a/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/EnumGenerationTest.java +++ b/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/EnumGenerationTest.java @@ -35,6 +35,7 @@ import org.kie.dmn.openapi.model.DMNOASResult; import static org.assertj.core.api.Assertions.assertThat; +import static org.kie.dmn.openapi.impl.DMNOASConstants.X_NULLABLE; class EnumGenerationTest extends BaseDMNOASTest { @@ -65,8 +66,8 @@ void numberAllowedValues() { assertThat(e).isInstanceOf(DecimalNode.class); assertThat(expected).contains(e.decimalValue()); }); - assertThat(node.get("nullable")).isNotNull().isInstanceOf(BooleanNode.class); - assertThat(node.get("nullable").asBoolean()).isFalse(); + assertThat(node.get(X_NULLABLE)).isNotNull().isInstanceOf(BooleanNode.class); + assertThat(node.get(X_NULLABLE).asBoolean()).isFalse(); } @Test @@ -80,8 +81,8 @@ void stringAllowedValues() { assertThat(e).isInstanceOf(TextNode.class); assertThat(expected).contains(e.textValue()); }); - assertThat(node.get("nullable")).isNotNull().isInstanceOf(BooleanNode.class); - assertThat(node.get("nullable").asBoolean()).isFalse(); + assertThat(node.get(X_NULLABLE)).isNotNull().isInstanceOf(BooleanNode.class); + assertThat(node.get(X_NULLABLE).asBoolean()).isFalse(); } @Test @@ -94,8 +95,8 @@ void stringNullableAllowedValues() { assertThat(arrayNode).allSatisfy(e -> { assertThat(expected).contains(e.textValue()); }); - assertThat(node.get("nullable")).isNotNull().isInstanceOf(BooleanNode.class); - assertThat(node.get("nullable").asBoolean()).isTrue(); + assertThat(node.get(X_NULLABLE)).isNotNull().isInstanceOf(BooleanNode.class); + assertThat(node.get(X_NULLABLE).asBoolean()).isTrue(); } @Test @@ -109,8 +110,8 @@ void numberTypeConstraint() { assertThat(e).isInstanceOf(DecimalNode.class); assertThat(expected).contains(e.decimalValue()); }); - assertThat(node.get("nullable")).isNotNull().isInstanceOf(BooleanNode.class); - assertThat(node.get("nullable").asBoolean()).isFalse(); + assertThat(node.get(X_NULLABLE)).isNotNull().isInstanceOf(BooleanNode.class); + assertThat(node.get(X_NULLABLE).asBoolean()).isFalse(); } @Test @@ -124,8 +125,8 @@ void stringTypeConstraint() { assertThat(e).isInstanceOf(TextNode.class); assertThat(expected).contains(e.textValue()); }); - assertThat(node.get("nullable")).isNotNull().isInstanceOf(BooleanNode.class); - assertThat(node.get("nullable").asBoolean()).isFalse(); + assertThat(node.get(X_NULLABLE)).isNotNull().isInstanceOf(BooleanNode.class); + assertThat(node.get(X_NULLABLE).asBoolean()).isFalse(); } @Test @@ -137,7 +138,7 @@ void stringNullableTypeConstraint() { assertThat(arrayNode).extracting(node1 -> node1.textValue()).containsExactlyInAnyOrder("a", "b", "c", null); - assertThat(node.get("nullable")).isNotNull().isInstanceOf(BooleanNode.class); - assertThat(node.get("nullable").asBoolean()).isTrue(); + assertThat(node.get(X_NULLABLE)).isNotNull().isInstanceOf(BooleanNode.class); + assertThat(node.get(X_NULLABLE).asBoolean()).isTrue(); } } diff --git a/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/DMNTypeSchemasTest.java b/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/DMNTypeSchemasTest.java index 90c94cb31bc..8346876ed32 100644 --- a/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/DMNTypeSchemasTest.java +++ b/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/DMNTypeSchemasTest.java @@ -104,10 +104,8 @@ void populateSchemaWithRangesForAllowedValues() { SimpleTypeImpl toRead = getSimpleType(allowedValuesString, null, FEEL_STRING, BuiltInType.STRING); AtomicReference toPopulate = new AtomicReference<>(getSchemaForSimpleType(toRead)); DMNTypeSchemas.populateSchemaWithConstraints(toPopulate.get(), toRead); - assertThat(toPopulate.get().getMinimum()).isEqualTo(BigDecimal.ONE); - assertThat(toPopulate.get().getExclusiveMinimum()).isTrue(); + assertThat(toPopulate.get().getExclusiveMinimum()).isEqualTo(BigDecimal.ONE); assertThat(toPopulate.get().getMaximum()).isEqualTo(BigDecimal.TEN); - assertThat(toPopulate.get().getExclusiveMaximum()).isFalse(); assertThat(toPopulate.get().getExtensions()).containsKey(DMNOASConstants.X_DMN_ALLOWED_VALUES); String retrieved = ((String) toPopulate.get().getExtensions().get(DMNOASConstants.X_DMN_ALLOWED_VALUES)).replace(" ", ""); @@ -123,10 +121,8 @@ void populateSchemaWithRangesForTypeConstraints() { SimpleTypeImpl toRead = getSimpleType(null, typeConstraintsString, FEEL_STRING, BuiltInType.STRING); AtomicReference toPopulate = new AtomicReference<>(getSchemaForSimpleType(toRead)); DMNTypeSchemas.populateSchemaWithConstraints(toPopulate.get(), toRead); - assertThat(toPopulate.get().getMinimum()).isEqualTo(BigDecimal.ONE); - assertThat(toPopulate.get().getExclusiveMinimum()).isTrue(); + assertThat(toPopulate.get().getExclusiveMinimum()).isEqualTo(BigDecimal.ONE); assertThat(toPopulate.get().getMaximum()).isEqualTo(BigDecimal.TEN); - assertThat(toPopulate.get().getExclusiveMaximum()).isFalse(); assertThat(toPopulate.get().getExtensions().containsKey(DMNOASConstants.X_DMN_TYPE_CONSTRAINTS)).isTrue(); String retrieved = ((String) toPopulate.get().getExtensions().get(DMNOASConstants.X_DMN_TYPE_CONSTRAINTS)).replace(" ", diff --git a/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/DMNUnaryTestsMapperTest.java b/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/DMNUnaryTestsMapperTest.java index 90885ba04c0..95d48d09926 100644 --- a/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/DMNUnaryTestsMapperTest.java +++ b/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/DMNUnaryTestsMapperTest.java @@ -34,6 +34,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; +import static org.kie.dmn.openapi.impl.DMNOASConstants.X_NULLABLE; import static org.kie.dmn.openapi.impl.DMNUnaryTestsMapper.getUnaryEvaluationNodesFromUnaryTests; import static org.kie.dmn.openapi.impl.SchemaMapperTestUtils.FEEL_NUMBER; import static org.kie.dmn.openapi.impl.SchemaMapperTestUtils.FEEL_STRING; @@ -51,7 +52,7 @@ void populateSchemaFromUnaryTestsForEnumsWithoutNull() { expression += ", count (?) > 1"; List unaryTests = feel.evaluateUnaryTests(expression).stream().map(DMNUnaryTest.class::cast).toList(); DMNUnaryTestsMapper.populateSchemaFromUnaryTests(toPopulate, unaryTests); - assertThat(toPopulate.getNullable()).isFalse(); + assertThat(toPopulate.getExtensions().get(X_NULLABLE)).isNotNull().isEqualTo(Boolean.FALSE); assertThat(toPopulate.getEnumeration()).isNotNull(); assertThat(toPopulate.getEnumeration()).hasSameSizeAs(expectedStrings).containsAll(expectedStrings); } @@ -64,7 +65,7 @@ void populateSchemaFromUnaryTestsForEnumsWithNull() { String expression = String.join(",", toEnum.stream().map(toMap -> String.format("%s", toMap.toString())).toList()); List unaryTests = feel.evaluateUnaryTests(expression).stream().map(DMNUnaryTest.class::cast).toList(); DMNUnaryTestsMapper.populateSchemaFromUnaryTests(toPopulate, unaryTests); - assertThat(toPopulate.getNullable()).isTrue(); + assertThat(toPopulate.getExtensions().get(X_NULLABLE)).isNotNull().isEqualTo(Boolean.TRUE); assertThat(toPopulate.getEnumeration()).isNotNull(); assertThat(toPopulate.getEnumeration()).hasSameSizeAs(expectedStrings).containsAll(expectedStrings); } @@ -95,7 +96,7 @@ void populateSchemaFromUnaryTestsForEnumSucceed() { .toList(); expression = String.join(",", formattedDates.stream().map(toMap -> String.format("%s", toMap)).toList()); toCheck = feel.evaluateUnaryTests(expression).stream().map(DMNUnaryTest.class::cast).toList(); - assertThat(toPopulate.get().getNullable()).isNull(); + assertThat(toPopulate.get().getExtensions()).isNull(); DMNUnaryTestsMapper.populateSchemaFromUnaryTests(toPopulate.get(), toCheck); assertThat(toPopulate.get().getEnumeration()).isNotNull(); assertThat(toPopulate.get().getEnumeration()).hasSameSizeAs(expectedDates).containsAll(expectedDates); diff --git a/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/RangeNodeSchemaMapperTest.java b/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/RangeNodeSchemaMapperTest.java index d2c634f858b..2db5c90a4f6 100644 --- a/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/RangeNodeSchemaMapperTest.java +++ b/kie-dmn/kie-dmn-openapi/src/test/java/org/kie/dmn/openapi/impl/RangeNodeSchemaMapperTest.java @@ -45,10 +45,10 @@ void evaluateUnaryTestsForNumberRange() { List ranges = getBaseNodes(toRange, RangeNode.class); Schema toPopulate = OASFactory.createObject(Schema.class); RangeNodeSchemaMapper.populateSchemaFromListOfRanges(toPopulate, ranges); - assertThat(toPopulate.getMinimum()).isEqualTo(BigDecimal.ONE); - assertThat(toPopulate.getExclusiveMinimum()).isTrue(); + assertThat(toPopulate.getExclusiveMinimum()).isEqualTo(BigDecimal.ONE); + assertThat(toPopulate.getMinimum()).isNull(); assertThat(toPopulate.getMaximum()).isEqualTo(BigDecimal.TEN); - assertThat(toPopulate.getExclusiveMaximum()).isFalse(); + assertThat(toPopulate.getExclusiveMaximum()).isNull(); } @Test @@ -63,10 +63,10 @@ void evaluateUnaryTestsForDateRange() { Schema toPopulate = OASFactory.createObject(Schema.class); RangeNodeSchemaMapper.populateSchemaFromListOfRanges(toPopulate, ranges); - assertThat(toPopulate.getExtensions().get(DMNOASConstants.X_DMN_MINIMUM_VALUE)).isEqualTo(expectedDates.get(0)); - assertThat(toPopulate.getExclusiveMinimum()).isTrue(); + assertThat(toPopulate.getExtensions().get(DMNOASConstants.X_DMN_EXCLUSIVE_MINIMUM_VALUE)).isEqualTo(expectedDates.get(0)); + assertThat(toPopulate.getExtensions().get(DMNOASConstants.X_DMN_MINIMUM_VALUE)).isNull(); assertThat(toPopulate.getExtensions().get(DMNOASConstants.X_DMN_MAXIMUM_VALUE)).isEqualTo(expectedDates.get(1)); - assertThat(toPopulate.getExclusiveMaximum()).isFalse(); + assertThat(toPopulate.getExtensions().get(DMNOASConstants.X_DMN_EXCLUSIVE_MAXIMUM_VALUE)).isNull(); } @Test