ChinchuAjith commented on code in PR #6537:
URL:
https://github.com/apache/incubator-kie-drools/pull/6537#discussion_r2588996989
##########
kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/lang/ast/UnaryTestNode.java:
##########
@@ -117,37 +117,59 @@ public UnaryTest evaluate(EvaluationContext ctx) {
}
public UnaryTest getUnaryTest() {
- switch ( operator ) {
- case LTE:
- return new UnaryTestImpl( createCompareUnaryTest( (l, r) ->
l.compareTo( r ) <= 0 ) , value.getText() );
- case LT:
- return new UnaryTestImpl( createCompareUnaryTest( (l, r) ->
l.compareTo( r ) < 0 ) , value.getText() );
- case GT:
- return new UnaryTestImpl( createCompareUnaryTest( (l, r) ->
l.compareTo( r ) > 0 ) , value.getText() );
- case GTE:
- return new UnaryTestImpl( createCompareUnaryTest( (l, r) ->
l.compareTo( r ) >= 0 ) , value.getText() );
- case EQ:
- return new UnaryTestImpl( createIsEqualUnaryTest( ) ,
value.getText() );
- case NE:
- return new UnaryTestImpl( createIsNotEqualUnaryTest( ) ,
value.getText() );
- case IN:
- return new UnaryTestImpl( createInUnaryTest() ,
value.getText() );
- case NOT:
- return new UnaryTestImpl( createNotUnaryTest() ,
value.getText() );
- case TEST:
- return new UnaryTestImpl( createBooleanUnaryTest(),
value.getText() );
- }
- return null;
- }
+ return new UnaryTestImpl((context, left) -> {
+ Object right = value.evaluate(context);
+ DialectHandler handler = DialectHandlerFactory.getHandler(context);
- private UnaryTest createCompareUnaryTest( BiPredicate<Comparable,
Comparable> op ) {
- return (context, left) -> {
- Object right = value.evaluate( context );
- // Defaulting FEELDialect to FEEL
- return BooleanEvalHelper.compare(left, right, FEELDialect.FEEL, op
);
- };
+ Object result;
+ switch (operator) {
+ case LTE:
+ result = handler.executeLte(left, right, context);
+ break;
+ case LT:
+ result = handler.executeLt(left, right, context);
+ break;
+ case GT:
+ result = handler.executeGt(left, right, context);
+ break;
+ case GTE:
+ result = handler.executeGte(left, right, context);
+ break;
+ case EQ:
+ return createIsEqualUnaryTest().apply(context, left);
+ case NE:
+ return createIsNotEqualUnaryTest().apply(context, left);
+ case IN:
+ return createInUnaryTest().apply(context, left);
+ case NOT:
+ return createNotUnaryTest().apply(context, left);
+ case TEST:
+ return createBooleanUnaryTest().apply(context, left);
+
+ default:
+ throw new UnsupportedOperationException("Unsupported
operator: " + operator);
+ }
+
+ return (result instanceof Boolean) ? (Boolean) result :
Boolean.FALSE;
+ }, value.getText());
}
+ /*
+ * private UnaryTest createCompareUnaryTest(InfixExecutor executor) {
+ * return (context, left) -> {
+ * Object right = value.evaluate(context);
+ *
+ * Object result = executor.evaluate(left, right, context);
+ * //return (result instanceof Boolean) ? (Boolean) result : null;
+ * if (result == null) {
+ * // treat null comparison as false
+ * return Boolean.FALSE;
+ * }
+ * return (result instanceof Boolean) ? (Boolean) result : Boolean.FALSE;
+ * };
+ * }
+ */
+
Review Comment:
done
--
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]