Skip to content

Commit

Permalink
[Incubator-kie-issues#1345] It shouldn't be possible to add\subtract …
Browse files Browse the repository at this point in the history
…a DateTime with a number (#6040)

* Removed the addition of temporal with number and added test cases

* removed unused import

* replaced null object with list of null
  • Loading branch information
bncriju authored Aug 5, 2024
1 parent fed30f8 commit 5456bc3
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import java.math.MathContext;
import java.time.Duration;
import java.time.LocalDate;
import java.time.Period;
import java.time.chrono.ChronoPeriod;
import java.time.temporal.Temporal;
import java.time.temporal.TemporalAmount;
Expand Down Expand Up @@ -90,10 +89,6 @@ private Object add(Object left, Object right, EvaluationContext ctx) {
if (right instanceof TemporalAmount temporalAmount) {
return temporal.plus(temporalAmount);
}
if (right instanceof BigDecimal bigDecimal) {
Period toAdd = Period.ofDays(bigDecimal.intValue());
return temporal.plus(toAdd);
}
} else if (left instanceof TemporalAmount temporalAmount) {
if (right instanceof Temporal temporal) {
return temporal.plus(temporalAmount);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -48,7 +49,8 @@ private static Collection<Object[]> data() {
final Object[][] cases = new Object[][] {
//normal:
{"for x in [1, 2, 3] return x+1", Stream.of(1, 2, 3 ).map(x -> BigDecimal.valueOf(x + 1 ) ).collect(Collectors.toList() ), null},
{"for x in @\"2021-01-01\"..@\"2021-01-03\" return x+1", Stream.of("2021-01-02", "2021-01-03", "2021-01-04" ).map(LocalDate::parse).collect(Collectors.toList() ), null},
{"for x in @\"2021-01-01\"..@\"2021-01-03\" return x + @\"P1D\"", Stream.of("2021-01-02", "2021-01-03", "2021-01-04" ).map(LocalDate::parse).collect(Collectors.toList() ), null},
{"for x in @\"2021-01-01\"..@\"2021-01-03\" return x+1", Arrays.asList(null, null, null), FEELEvent.Severity.ERROR},

//extended:
{"for x in 1..3 return x+1", Stream.of(1, 2, 3).map(x -> BigDecimal.valueOf(x + 1)).collect(Collectors.toList()), null},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ protected void instanceTest(String expression, Object result, FEELEvent.Severity
private static Collection<Object[]> data() {
final Object[][] cases = new Object[][] {
// date/time/duration function invocations
{ "@\"2021-01-01\" + 10", null , FEELEvent.Severity.ERROR},
{ "@\"2021-01-01T10:10:10\" + 10", null , FEELEvent.Severity.ERROR},
{ "date(\"2016-07-29\")", DateTimeFormatter.ISO_DATE.parse( "2016-07-29", LocalDate::from ) , null},
{ "@\"2016-07-29\"", DateTimeFormatter.ISO_DATE.parse( "2016-07-29", LocalDate::from ) , null},
{ "date(\"-0105-07-29\")", DateTimeFormatter.ISO_DATE.parse( "-0105-07-29", LocalDate::from ) , null}, // 105 BC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
<dmn:extensionElements/>
<dmn:variable id="_4608E42A-977F-4786-AD2A-DE62804DECBA" name="forloopdates" typeRef="tDates"/>
<dmn:literalExpression id="_3BC54643-D567-4148-8931-7A5892E5863F">
<dmn:text>for x in @"2021-01-01"..@"2021-01-03" return x+1</dmn:text>
<dmn:text>for x in @"2021-01-01"..@"2021-01-03" return x + duration("P1D")</dmn:text>
</dmn:literalExpression>
</dmn:decision>
<dmndi:DMNDI>
Expand Down

0 comments on commit 5456bc3

Please sign in to comment.