Skip to content

Commit

Permalink
[#662] XML dialects: Set default dialects in Maven Mojos to the ones …
Browse files Browse the repository at this point in the history
…based on java.time API.
  • Loading branch information
opatrascoiu committed Oct 23, 2024
1 parent 7c732dd commit 3ac6b02
Show file tree
Hide file tree
Showing 158 changed files with 679 additions and 674 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public class JavaTimeKotlinNativeTypeFactory extends KotlinTypeFactory {
private static final Map<String, String> FEEL_TYPE_TO_JAVA_TYPE = new LinkedHashMap<>();

public static final String KOTLIN_ANY = "kotlin.Any";
public static final String KOTLIN_NUMBER = "kotlin.Number";

static {
FEEL_TYPE_TO_JAVA_TYPE.put(ENUMERATION.getName(), String.class.getName());
Expand All @@ -41,7 +42,7 @@ public class JavaTimeKotlinNativeTypeFactory extends KotlinTypeFactory {
FEEL_TYPE_TO_JAVA_TYPE.put(DATE.getName(), java.time.LocalDate.class.getName());
FEEL_TYPE_TO_JAVA_TYPE.put(STRING.getName(), String.class.getSimpleName());
FEEL_TYPE_TO_JAVA_TYPE.put(BOOLEAN.getName(), Boolean.class.getSimpleName());
FEEL_TYPE_TO_JAVA_TYPE.put(NUMBER.getName(), java.lang.Number.class.getName());
FEEL_TYPE_TO_JAVA_TYPE.put(NUMBER.getName(), KOTLIN_NUMBER);
FEEL_TYPE_TO_JAVA_TYPE.put(ANY.getName(), KOTLIN_ANY);
FEEL_TYPE_TO_JAVA_TYPE.put(NULL.getName(), KOTLIN_ANY);
}
Expand All @@ -56,7 +57,7 @@ public class JavaTimeKotlinNativeTypeFactory extends KotlinTypeFactory {
FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(DATE.getName(), java.time.LocalDate.class.getName());
FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(STRING.getName(), String.class.getName());
FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(BOOLEAN.getName(), Boolean.class.getName());
FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(NUMBER.getName(), java.lang.Number.class.getName());
FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(NUMBER.getName(), KOTLIN_NUMBER);
FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(ANY.getName(), KOTLIN_ANY);
FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(NULL.getName(), KOTLIN_ANY);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ class KotlinNativeTypeFactoryTest {

@Test
public void testToNativeType() {
assertEquals("java.lang.Number", typeFactory.toNativeType("number"));
assertEquals("kotlin.Number", typeFactory.toNativeType("number"));
assertEquals("String", typeFactory.toNativeType("string"));
}

@Test
public void testToQualifiedNativeType() {
assertEquals("java.lang.Number", typeFactory.toQualifiedNativeType("number"));
assertEquals("kotlin.Number", typeFactory.toQualifiedNativeType("number"));
}

@Test
Expand All @@ -47,7 +47,7 @@ public void testClassOf() {

@Test
public void testGetNativeNumberType() {
assertEquals("java.lang.Number", typeFactory.getNativeNumberType());
assertEquals("kotlin.Number", typeFactory.getNativeNumberType());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
@SuppressWarnings("CanBeFinal")
@Mojo(name = "dmn-to-java", defaultPhase = LifecyclePhase.GENERATE_SOURCES, configurator = "dmn-mojo-configurator")
public class DMNToJavaMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION, TEST> extends AbstractDMNToNativeMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION, TEST> {
@Parameter(required = true, defaultValue = "com.gs.dmn.dialect.StandardDMNDialectDefinition")
@Parameter(required = true, defaultValue = "com.gs.dmn.dialect.JavaTimeDMNDialectDefinition")
public String dmnDialect;

@Parameter(required = true, defaultValue = "com.gs.dmn.transformation.template.TreeTemplateProvider")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
@SuppressWarnings("CanBeFinal")
@Mojo(name = "dmn-to-kotlin", defaultPhase = LifecyclePhase.GENERATE_SOURCES, configurator = "dmn-mojo-configurator")
public class DMNToKotlinMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION, TEST> extends AbstractDMNToNativeMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION, TEST> {
@Parameter(required = true, defaultValue = "com.gs.dmn.dialect.KotlinStandardDMNDialectDefinition")
@Parameter(required = true, defaultValue = "com.gs.dmn.dialect.JavaTimeKotlinStandardDMNDialectDefinition")
public String dmnDialect;

@Parameter(required = true, defaultValue = "com.gs.dmn.transformation.template.KotlinTreeTemplateProvider")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
@SuppressWarnings("CanBeFinal")
@Mojo(name = "tck-to-java", defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES, configurator = "dmn-mojo-configurator")
public class TCKToJavaJUnitMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION> extends AbstractTestToJunitMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION, TestCases> {
@Parameter(required = true, defaultValue = "com.gs.dmn.dialect.StandardDMNDialectDefinition")
@Parameter(required = true, defaultValue = "com.gs.dmn.dialect.JavaTimeDMNDialectDefinition")
public String dmnDialect;

@Parameter(required = true, defaultValue = "com.gs.dmn.transformation.template.TreeTemplateProvider")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
@SuppressWarnings("CanBeFinal")
@Mojo(name = "tck-to-kotlin", defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES, configurator = "dmn-mojo-configurator")
public class TCKToKotlinJUnitMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION> extends AbstractTestToJunitMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION, TestCases> {
@Parameter(required = true, defaultValue = "com.gs.dmn.dialect.KotlinStandardDMNDialectDefinition")
@Parameter(required = true, defaultValue = "com.gs.dmn.dialect.JavaTimeKotlinStandardDMNDialectDefinition")
public String dmnDialect;

@Parameter(required = true, defaultValue = "com.gs.dmn.transformation.template.KotlinTreeTemplateProvider")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
@SuppressWarnings("CanBeFinal")
@Mojo(name = "testlab-to-java", defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES, configurator = "dmn-mojo-configurator")
public class TestLabToJavaJUnitMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION> extends AbstractTestToJunitMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION, TestLab> {
@Parameter(required = true, defaultValue = "com.gs.dmn.signavio.dialect.SignavioDMNDialectDefinition")
@Parameter(required = true, defaultValue = "com.gs.dmn.signavio.dialect.JavaTimeSignavioDMNDialectDefinition")
public String dmnDialect;

@Parameter(required = true, defaultValue = "com.gs.dmn.signavio.transformation.template.SignavioTreeTemplateProvider")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
@SuppressWarnings("CanBeFinal")
@Mojo(name = "testlab-to-kotlin", defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES, configurator = "dmn-mojo-configurator")
public class TestLabToKotlinJUnitMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION> extends AbstractTestToJunitMojo<NUMBER, DATE, TIME, DATE_TIME, DURATION, TestLab> {
@Parameter(required = true, defaultValue = "com.gs.dmn.signavio.dialect.KotlinSignavioDMNDialectDefinition")
@Parameter(required = true, defaultValue = "com.gs.dmn.signavio.dialect.JavaTimeKotlinSignavioDMNDialectDefinition")
public String dmnDialect;

@Parameter(required = true, defaultValue = "com.gs.dmn.signavio.transformation.template.KotlinSignavioTreeTemplateProvider")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/
package com.gs.dmn.maven;

import com.gs.dmn.dialect.StandardDMNDialectDefinition;
import com.gs.dmn.dialect.JavaTimeDMNDialectDefinition;
import com.gs.dmn.maven.configuration.components.DMNTransformerComponent;
import com.gs.dmn.transformation.ToQuotedNameTransformer;
import com.gs.dmn.transformation.lazy.NopLazyEvaluationDetector;
Expand All @@ -31,7 +31,7 @@ public void testExecute() throws Exception {

String input = this.getClass().getClassLoader().getResource("input/0004-lending.dmn").getFile();
mojo.project = project;
mojo.dmnDialect = StandardDMNDialectDefinition.class.getName();
mojo.dmnDialect = JavaTimeDMNDialectDefinition.class.getName();
mojo.dmnValidators = new String[] {NopDMNValidator.class.getName()};
mojo.dmnTransformers = new DMNTransformerComponent[] { new DMNTransformerComponent(ToQuotedNameTransformer.class.getName()) };
mojo.lazyEvaluationDetectors = new String[] {NopLazyEvaluationDetector.class.getName()};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/
package com.gs.dmn.maven;

import com.gs.dmn.dialect.StandardDMNDialectDefinition;
import com.gs.dmn.dialect.JavaTimeKotlinStandardDMNDialectDefinition;
import com.gs.dmn.maven.configuration.components.DMNTransformerComponent;
import com.gs.dmn.transformation.ToQuotedNameTransformer;
import com.gs.dmn.transformation.lazy.NopLazyEvaluationDetector;
Expand All @@ -31,7 +31,7 @@ public void testExecute() throws Exception {

String input = this.getClass().getClassLoader().getResource("input/0004-lending.dmn").getFile();
mojo.project = project;
mojo.dmnDialect = StandardDMNDialectDefinition.class.getName();
mojo.dmnDialect = JavaTimeKotlinStandardDMNDialectDefinition.class.getName();
mojo.dmnValidators = new String[] {NopDMNValidator.class.getName()};
mojo.dmnTransformers = new DMNTransformerComponent[] { new DMNTransformerComponent(ToQuotedNameTransformer.class.getName()) };
mojo.lazyEvaluationDetectors = new String[] {NopLazyEvaluationDetector.class.getName()};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/
package com.gs.dmn.maven;

import com.gs.dmn.dialect.StandardDMNDialectDefinition;
import com.gs.dmn.dialect.JavaTimePythonStandardDMNDialectDefinition;
import com.gs.dmn.maven.configuration.components.DMNTransformerComponent;
import com.gs.dmn.transformation.ToQuotedNameTransformer;
import com.gs.dmn.transformation.lazy.NopLazyEvaluationDetector;
Expand All @@ -31,7 +31,7 @@ public void testExecute() throws Exception {

String input = this.getClass().getClassLoader().getResource("input/0004-lending.dmn").getFile();
mojo.project = project;
mojo.dmnDialect = StandardDMNDialectDefinition.class.getName();
mojo.dmnDialect = JavaTimePythonStandardDMNDialectDefinition.class.getName();
mojo.dmnValidators = new String[] {NopDMNValidator.class.getName()};
mojo.dmnTransformers = new DMNTransformerComponent[] { new DMNTransformerComponent(ToQuotedNameTransformer.class.getName()) };
mojo.lazyEvaluationDetectors = new String[] {NopLazyEvaluationDetector.class.getName()};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/
package com.gs.dmn.maven;

import com.gs.dmn.dialect.StandardDMNDialectDefinition;
import com.gs.dmn.dialect.JavaTimeDMNDialectDefinition;
import com.gs.dmn.maven.configuration.components.DMNTransformerComponent;
import com.gs.dmn.tck.ast.TestCases;
import com.gs.dmn.transformation.ToQuotedNameTransformer;
Expand All @@ -32,7 +32,7 @@ public void testExecute() throws Exception {
String inputModel = this.getClass().getClassLoader().getResource("input/0004-lending.dmn").getFile();
String inputTest = this.getClass().getClassLoader().getResource("input/0004-lending-test-01.xml").getFile();
mojo.project = project;
mojo.dmnDialect = StandardDMNDialectDefinition.class.getName();
mojo.dmnDialect = JavaTimeDMNDialectDefinition.class.getName();
mojo.dmnValidators = new String[] {NopDMNValidator.class.getName()};
mojo.dmnTransformers = new DMNTransformerComponent[] { new DMNTransformerComponent(ToQuotedNameTransformer.class.getName()) };
mojo.templateProvider = TreeTemplateProvider.class.getName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/
package com.gs.dmn.maven;

import com.gs.dmn.dialect.StandardDMNDialectDefinition;
import com.gs.dmn.dialect.JavaTimeKotlinStandardDMNDialectDefinition;
import com.gs.dmn.maven.configuration.components.DMNTransformerComponent;
import com.gs.dmn.tck.ast.TestCases;
import com.gs.dmn.transformation.ToQuotedNameTransformer;
Expand All @@ -32,7 +32,7 @@ public void testExecute() throws Exception {
String inputModel = this.getClass().getClassLoader().getResource("input/0004-lending.dmn").getFile();
String inputTest = this.getClass().getClassLoader().getResource("input/0004-lending-test-01.xml").getFile();
mojo.project = project;
mojo.dmnDialect = StandardDMNDialectDefinition.class.getName();
mojo.dmnDialect = JavaTimeKotlinStandardDMNDialectDefinition.class.getName();
mojo.dmnValidators = new String[] {NopDMNValidator.class.getName()};
mojo.dmnTransformers = new DMNTransformerComponent[] { new DMNTransformerComponent(ToQuotedNameTransformer.class.getName()) };
mojo.templateProvider = TreeTemplateProvider.class.getName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/
package com.gs.dmn.maven;

import com.gs.dmn.dialect.StandardDMNDialectDefinition;
import com.gs.dmn.dialect.JavaTimePythonStandardDMNDialectDefinition;
import com.gs.dmn.maven.configuration.components.DMNTransformerComponent;
import com.gs.dmn.tck.ast.TestCases;
import com.gs.dmn.transformation.ToQuotedNameTransformer;
Expand All @@ -32,7 +32,7 @@ public void testExecute() throws Exception {
String inputModel = this.getClass().getClassLoader().getResource("input/0004-lending.dmn").getFile();
String inputTest = this.getClass().getClassLoader().getResource("input/0004-lending-test-01.xml").getFile();
mojo.project = project;
mojo.dmnDialect = StandardDMNDialectDefinition.class.getName();
mojo.dmnDialect = JavaTimePythonStandardDMNDialectDefinition.class.getName();
mojo.dmnValidators = new String[] {NopDMNValidator.class.getName()};
mojo.dmnTransformers = new DMNTransformerComponent[] { new DMNTransformerComponent(ToQuotedNameTransformer.class.getName()) };
mojo.templateProvider = TreeTemplateProvider.class.getName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
package com.gs.dmn.maven;

import com.gs.dmn.maven.configuration.components.DMNTransformerComponent;
import com.gs.dmn.signavio.dialect.SignavioDMNDialectDefinition;
import com.gs.dmn.signavio.dialect.JavaTimeSignavioDMNDialectDefinition;
import com.gs.dmn.signavio.testlab.TestLab;
import com.gs.dmn.signavio.transformation.template.SignavioTreeTemplateProvider;
import com.gs.dmn.transformation.NopDMNTransformer;
Expand All @@ -31,7 +31,7 @@ public void testExecute() throws Exception {
String inputModel = this.getClass().getClassLoader().getResource("input/NPEValidation2.dmn").getFile();
String inputTest = this.getClass().getClassLoader().getResource("input/NPEValidation2.json").getFile();
mojo.project = project;
mojo.dmnDialect = SignavioDMNDialectDefinition.class.getName();
mojo.dmnDialect = JavaTimeSignavioDMNDialectDefinition.class.getName();
mojo.dmnTransformers = new DMNTransformerComponent[] { new DMNTransformerComponent(NopDMNTransformer.class.getName()) };
mojo.templateProvider = SignavioTreeTemplateProvider.class.getName();
mojo.inputModelFileDirectory = new File(inputModel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
package com.gs.dmn.maven;

import com.gs.dmn.maven.configuration.components.DMNTransformerComponent;
import com.gs.dmn.signavio.dialect.SignavioDMNDialectDefinition;
import com.gs.dmn.signavio.dialect.JavaTimeKotlinSignavioDMNDialectDefinition;
import com.gs.dmn.signavio.testlab.TestLab;
import com.gs.dmn.signavio.transformation.template.SignavioTreeTemplateProvider;
import com.gs.dmn.transformation.NopDMNTransformer;
Expand All @@ -31,7 +31,7 @@ public void testExecute() throws Exception {
String inputModel = this.getClass().getClassLoader().getResource("input/NPEValidation2.dmn").getFile();
String inputTest = this.getClass().getClassLoader().getResource("input/NPEValidation2.json").getFile();
mojo.project = project;
mojo.dmnDialect = SignavioDMNDialectDefinition.class.getName();
mojo.dmnDialect = JavaTimeKotlinSignavioDMNDialectDefinition.class.getName();
mojo.dmnTransformers = new DMNTransformerComponent[] { new DMNTransformerComponent(NopDMNTransformer.class.getName()) };
mojo.templateProvider = SignavioTreeTemplateProvider.class.getName();
mojo.inputModelFileDirectory = new File(inputModel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

import org.junit.jupiter.api.Test;

public class DateTimeProtoHandwrittenTest extends com.gs.dmn.runtime.DefaultDMNBaseDecision {
import java.time.LocalDate;
import java.time.temporal.TemporalAccessor;

public class DateTimeProtoHandwrittenTest extends com.gs.dmn.runtime.JavaTimeDMNBaseDecision {
private final Date dateDecision = new Date();
private final Time timeDecision = new Time();
private final DateTime dateTimeDecision = new DateTime();
Expand All @@ -11,7 +14,7 @@ public class DateTimeProtoHandwrittenTest extends com.gs.dmn.runtime.DefaultDMNB
public void testCase1() {
com.gs.dmn.runtime.ExecutionContext context_ = new com.gs.dmn.runtime.ExecutionContext();
// Initialize input data
javax.xml.datatype.XMLGregorianCalendar inputDate = date("2020-09-10");
LocalDate inputDate = date("2020-09-10");

// Check Date
checkValues(date("2020-09-10"), dateDecision.apply(inputDate, context_));
Expand All @@ -28,7 +31,7 @@ public void testCase1() {
public void testCase2() {
com.gs.dmn.runtime.ExecutionContext context_ = new com.gs.dmn.runtime.ExecutionContext();
// Initialize input data
javax.xml.datatype.XMLGregorianCalendar inputTime = time("12:10:10");
TemporalAccessor inputTime = time("12:10:10");

// Check Time
checkValues(time("12:10:10"), timeDecision.apply(inputTime, context_));
Expand All @@ -45,7 +48,7 @@ public void testCase2() {
public void testCase3() {
com.gs.dmn.runtime.ExecutionContext context_ = new com.gs.dmn.runtime.ExecutionContext();
// Initialize input data
javax.xml.datatype.XMLGregorianCalendar inputDateTime = dateAndTime("2020-09-19T12:10:10");
TemporalAccessor inputDateTime = dateAndTime("2020-09-19T12:10:10");

// Check DateTime
checkValues(dateAndTime("2020-09-19T12:10:10"), dateTimeDecision.apply(inputDateTime, context_));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;
import java.math.RoundingMode;

import static org.junit.jupiter.api.Assertions.assertTrue;

public abstract class AbstractHandwrittenDecisionTest {
Expand All @@ -36,4 +39,8 @@ public void testPerformance() {
public void setUp() {
this.context = ExecutionContextBuilder.executionContext().build();
}

protected String round(Number number, int scale) {
return new BigDecimal(number.toString()).setScale(scale, RoundingMode.FLOOR).toPlainString();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@
import com.gs.dmn.generated.tck.cl2_0009_invocation_arithmetic.type.TLoanImpl;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;
import java.math.RoundingMode;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class HandwrittenMonthlyPaymentTest extends AbstractHandwrittenDecisionTest {
Expand All @@ -30,9 +27,9 @@ public void testApply1() {
loan.setAmount(decision.number("600000"));
loan.setRate(decision.number("0.0375"));
loan.setTerm(decision.number("360"));
BigDecimal fee = decision.number("100");
BigDecimal output = applyDecision(loan, fee);
assertEquals("2878.69", output.setScale(2, RoundingMode.FLOOR).toPlainString());
Number fee = decision.number("100");
Number output = applyDecision(loan, fee);
assertEquals("2878.69", round(output, 2));
}

@Test
Expand All @@ -41,17 +38,17 @@ public void testApply2() {
loan.setAmount(decision.number("30000"));
loan.setRate(decision.number("0.0475"));
loan.setTerm(decision.number("60"));
BigDecimal fee = decision.number("100");
BigDecimal output = applyDecision(loan, fee);
assertEquals("662.70", output.setScale(2, RoundingMode.FLOOR).toPlainString());
Number fee = decision.number("100");
Number output = applyDecision(loan, fee);
assertEquals("662.70", round(output, 2));
}

@Override
protected void applyDecision() {
applyDecision(null, null);
}

private BigDecimal applyDecision(TLoanImpl loan, BigDecimal fee) {
private Number applyDecision(TLoanImpl loan, Number fee) {
return decision.apply(loan, fee, context);
}
}
Loading

0 comments on commit 3ac6b02

Please sign in to comment.