gitgabrio commented on code in PR #5632:
URL: 
https://github.com/apache/incubator-kie-drools/pull/5632#discussion_r1431165997


##########
kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/lang/ast/infixexecutors/AddExecutor.java:
##########
@@ -51,77 +52,68 @@ public static AddExecutor instance() {
 
     @Override
     public Object evaluate(Object left, Object right, EvaluationContext ctx) {
-        return evaluate(new EvaluatedParameters(left, right), ctx);
+        return add(left, right, ctx);
     }
 
     @Override
     public Object evaluate(InfixOpNode infixNode, EvaluationContext ctx) {
         return evaluate(infixNode.getLeft().evaluate(ctx), 
infixNode.getRight().evaluate(ctx), ctx);
     }
 
-    private Object evaluate(EvaluatedParameters params, EvaluationContext ctx) 
{
-        if (params.getLeft() == null || params.getRight() == null) {
+    private Object add(Object left, Object right, EvaluationContext ctx) {
+        if (left == null || right == null) {
             return null;
-        }
-        ClassIdentifierTuple identifierTuple = new 
ClassIdentifierTuple(params.getLeft(), params.getRight());
-        if (addFunctionsByClassesTuple.containsKey(identifierTuple)) {
-            return 
addFunctionsByClassesTuple.get(identifierTuple).apply(params, ctx);
-        } else {
-            return math(params.getLeft(), params.getRight(), ctx, (l, r) -> 
l.add(r, MathContext.DECIMAL128));
-        }
-    }
-
-    private Map<ClassIdentifierTuple, BiFunction<EvaluatedParameters, 
EvaluationContext, Object>> getAddFunctionsByClassesTuple() {
-        Map<ClassIdentifierTuple, BiFunction<EvaluatedParameters, 
EvaluationContext, Object>> toReturn = new HashMap<>();
-        toReturn.put(new ClassIdentifierTuple(String.class, String.class), 
(parameters, ctx) -> parameters.getLeft() + (String) parameters.getRight());
-        toReturn.put(new ClassIdentifierTuple(ChronoPeriod.class, 
ChronoPeriod.class), (parameters, ctx) ->
-                new ComparablePeriod(((ChronoPeriod) 
parameters.getLeft()).plus((ChronoPeriod) parameters.getRight())));
-        toReturn.put(new ClassIdentifierTuple(Duration.class, Duration.class), 
(parameters, ctx) ->
-                ((Duration) parameters.getLeft()).plus((Duration) 
parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(ZonedDateTime.class, 
ChronoPeriod.class), (parameters, ctx) ->
-                ((ZonedDateTime) parameters.getLeft()).plus((ChronoPeriod) 
parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(OffsetDateTime.class, 
ChronoPeriod.class), (parameters, ctx) ->
-                ((OffsetDateTime) parameters.getLeft()).plus((ChronoPeriod) 
parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(LocalDateTime.class, 
ChronoPeriod.class), (parameters, ctx) ->
-                ((LocalDateTime) parameters.getLeft()).plus((ChronoPeriod) 
parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(LocalDate.class, 
ChronoPeriod.class), (parameters, ctx) ->
-                ((LocalDate) parameters.getLeft()).plus((ChronoPeriod) 
parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(ZonedDateTime.class, 
Duration.class), (parameters, ctx) ->
-                ((ZonedDateTime) parameters.getLeft()).plus((Duration) 
parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(OffsetDateTime.class, 
Duration.class), (parameters, ctx) ->
-                ((OffsetDateTime) parameters.getLeft()).plus((Duration) 
parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(LocalDateTime.class, 
Duration.class), (parameters, ctx) ->
-                ((LocalDateTime) parameters.getLeft()).plus((Duration) 
parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(LocalDate.class, 
Duration.class), (parameters, ctx) ->
-                addLocalDateAndDuration((LocalDate) parameters.getLeft(), 
(Duration) parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(ChronoPeriod.class, 
ZonedDateTime.class), (parameters, ctx) ->
-                ((ZonedDateTime) parameters.getRight()).plus((ChronoPeriod) 
parameters.getLeft()));
-        toReturn.put(new ClassIdentifierTuple(ChronoPeriod.class, 
OffsetDateTime.class), (parameters, ctx) ->
-                ((OffsetDateTime) parameters.getRight()).plus((ChronoPeriod) 
parameters.getLeft()));
-        toReturn.put(new ClassIdentifierTuple(ChronoPeriod.class, 
LocalDateTime.class), (parameters, ctx) ->
-                ((LocalDateTime) parameters.getRight()).plus((ChronoPeriod) 
parameters.getLeft()));
-        toReturn.put(new ClassIdentifierTuple(ChronoPeriod.class, 
LocalDate.class), (parameters, ctx) ->
-                ((LocalDate) parameters.getRight()).plus((ChronoPeriod) 
parameters.getLeft()));
-        toReturn.put(new ClassIdentifierTuple(Duration.class, 
ZonedDateTime.class), (parameters, ctx) ->
-                ((ZonedDateTime) parameters.getRight()).plus((Duration) 
parameters.getLeft()));
-        toReturn.put(new ClassIdentifierTuple(Duration.class, 
OffsetDateTime.class), (parameters, ctx) ->
-                ((OffsetDateTime) parameters.getRight()).plus((Duration) 
parameters.getLeft()));
-        toReturn.put(new ClassIdentifierTuple(Duration.class, 
LocalDateTime.class), (parameters, ctx) ->
-                ((LocalDateTime) parameters.getRight()).plus((Duration) 
parameters.getLeft()));
-        toReturn.put(new ClassIdentifierTuple(Duration.class, 
LocalDate.class), (parameters, ctx) ->
-                addLocalDateAndDuration((LocalDate) parameters.getRight(), 
(Duration) parameters.getLeft()));
-        toReturn.put(new ClassIdentifierTuple(LocalTime.class, 
Duration.class), (parameters, ctx) ->
-                ((LocalTime) parameters.getLeft()).plus((Duration) 
parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(Duration.class, 
LocalTime.class), (parameters, ctx) ->
-                ((LocalTime) parameters.getRight()).plus((Duration) 
parameters.getLeft()));
-        toReturn.put(new ClassIdentifierTuple(OffsetTime.class, 
Duration.class), (parameters, ctx) ->
-                ((OffsetTime) parameters.getLeft()).plus((Duration) 
parameters.getRight()));
-        toReturn.put(new ClassIdentifierTuple(Duration.class, 
OffsetTime.class), (parameters, ctx) ->
-                ((OffsetTime) parameters.getRight()).plus((Duration) 
parameters.getLeft()));
-        toReturn.put(new ClassIdentifierTuple(Temporal.class, Temporal.class), 
(parameters, ctx) -> {
+        } else if (left instanceof String && right instanceof String) {

Review Comment:
   @mariofusco 
   Thanks, but I think it is better to discuss it together, instead of keep 
doing the same wheel twice without clear comprehension of what's going on.
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to