From 12ae119d32589c166e430f1f28e9614501bf5bef Mon Sep 17 00:00:00 2001 From: Gabriele-Cardosi Date: Thu, 27 Jun 2024 12:29:31 +0200 Subject: [PATCH] [incubator-kie-issues#1344] Rrefactoring/reorganizing Functions --- .../src/main/java/org/kie/dmn/feel/FEEL.java | 2 +- .../visitor/ASTTemporalConstantVisitor.java | 7 +- .../java/org/kie/dmn/feel/runtime/Range.java | 2 +- .../runtime/functions/BuiltInFunctions.java | 15 +- .../{extended => }/ContextFunction.java | 5 +- .../{extended => }/ContextMergeFunction.java | 5 +- .../{extended => }/ContextPutFunction.java | 5 +- .../feel/runtime/functions/DateFunction.java | 7 +- .../runtime/functions/DurationFunction.java | 4 - .../runtime/functions/GetEntriesFunction.java | 1 - .../functions/{extended => }/NowFunction.java | 7 +- .../{extended => }/RangeFunction.java | 52 +- .../{extended => }/RoundDownFunction.java | 5 +- .../{extended => }/RoundHalfDownFunction.java | 5 +- .../{extended => }/RoundHalfUpFunction.java | 5 +- .../{extended => }/RoundUpFunction.java | 5 +- .../{extended => }/StringJoinFunction.java | 5 +- .../feel/runtime/functions/TimeFunction.java | 17 +- .../{extended => }/TodayFunction.java | 7 +- .../functions/extended/CeilingFunction.java | 55 - .../functions/extended/CodeFunction.java | 2 + .../functions/extended/DateFunction.java | 92 +- .../functions/extended/DurationFunction.java | 70 - .../functions/extended/FloorFunction.java | 55 - .../functions/extended/InvokeFunction.java | 2 + .../extended/KieExtendedDMNFunctions.java | 20 +- .../functions/extended/TimeFunction.java | 144 +- .../kie/dmn/feel/util/BooleanEvalHelper.java | 2 - .../org.kie/kie-dmn-feel/reflect-config.json | 1980 ++++++++--------- .../runtime/functions/NowFunctionTest.java | 1 - .../{extended => }/RangeFunctionTest.java | 4 +- .../{extended => }/RoundDownFunctionTest.java | 3 +- .../RoundHalfDownFunctionTest.java | 3 +- .../RoundHalfUpFunctionTest.java | 3 +- .../{extended => }/RoundUpFunctionTest.java | 3 +- .../runtime/functions/TodayFunctionTest.java | 1 - 36 files changed, 1128 insertions(+), 1473 deletions(-) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/ContextFunction.java (92%) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/ContextMergeFunction.java (90%) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/ContextPutFunction.java (95%) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/NowFunction.java (86%) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/RangeFunction.java (87%) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/RoundDownFunction.java (90%) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/RoundHalfDownFunction.java (91%) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/RoundHalfUpFunction.java (91%) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/RoundUpFunction.java (90%) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/StringJoinFunction.java (91%) rename kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/{extended => }/TodayFunction.java (86%) delete mode 100644 kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/CeilingFunction.java delete mode 100644 kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/DurationFunction.java delete mode 100644 kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/FloorFunction.java rename kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/{extended => }/RangeFunctionTest.java (99%) rename kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/{extended => }/RoundDownFunctionTest.java (96%) rename kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/{extended => }/RoundHalfDownFunctionTest.java (96%) rename kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/{extended => }/RoundHalfUpFunctionTest.java (96%) rename kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/{extended => }/RoundUpFunctionTest.java (96%) diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/FEEL.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/FEEL.java index 1dd0f2306de..280ed3e6a0e 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/FEEL.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/FEEL.java @@ -148,7 +148,7 @@ static FEEL newInstance(ClassLoader cl, List profiles) { * Evaluates the given compiled FEEL expression using the * given EvaluationContext, and returns the result * - * @param expression a FEEL expression + * @param expr a FEEL expression * @param ctx the EvaluationContext to be used for defining * input variables and additional feel event listeners * contextual to this method call diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/lang/ast/visitor/ASTTemporalConstantVisitor.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/lang/ast/visitor/ASTTemporalConstantVisitor.java index 631101b68fc..c6e4aafafaf 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/lang/ast/visitor/ASTTemporalConstantVisitor.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/lang/ast/visitor/ASTTemporalConstantVisitor.java @@ -70,8 +70,7 @@ public class ASTTemporalConstantVisitor extends DefaultedVisitor { DateAndTimeFunction.INSTANCE, DurationFunction.INSTANCE, org.kie.dmn.feel.runtime.functions.extended.TimeFunction.INSTANCE, - org.kie.dmn.feel.runtime.functions.extended.DateFunction.INSTANCE, - org.kie.dmn.feel.runtime.functions.extended.DurationFunction.INSTANCE); + org.kie.dmn.feel.runtime.functions.extended.DateFunction.INSTANCE); public static final Set TEMPORAL_FNS_NAMES = TEMPORAL_FNS.stream().map(FEELFunction::getName).collect(Collectors.toSet()); public ASTTemporalConstantVisitor(CompilerContext ctx) { @@ -200,10 +199,6 @@ private TemporalConstantNode buildTCNodeForDuration(FunctionInvocationNode n, FE FEELFnResult invoke = DurationFunction.INSTANCE.invoke(p0); return invoke.cata(e -> null, v -> new TemporalConstantNode(n, v, DurationFunction.INSTANCE, Collections.singletonList(p0))); - } else if (fn == org.kie.dmn.feel.runtime.functions.extended.DurationFunction.INSTANCE) { - FEELFnResult invoke = org.kie.dmn.feel.runtime.functions.extended.DurationFunction.INSTANCE.invoke(p0); - return invoke.cata(e -> null, - v -> new TemporalConstantNode(n, v, org.kie.dmn.feel.runtime.functions.extended.DurationFunction.INSTANCE, Collections.singletonList(p0))); } } return null; diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/Range.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/Range.java index a334beaeb9e..39666b6c858 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/Range.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/Range.java @@ -20,7 +20,7 @@ public interface Range { - static enum RangeBoundary { + enum RangeBoundary { OPEN, CLOSED; } diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/BuiltInFunctions.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/BuiltInFunctions.java index 6b90492713a..07f1728f6eb 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/BuiltInFunctions.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/BuiltInFunctions.java @@ -119,7 +119,20 @@ public class BuiltInFunctions { OverlapsAfterFunction.INSTANCE, MeetsFunction.INSTANCE, MetByFunction.INSTANCE, - ListReplaceFunction.INSTANCE + ListReplaceFunction.INSTANCE, + StringJoinFunction.INSTANCE, + + NowFunction.INSTANCE, + TodayFunction.INSTANCE, + ContextPutFunction.INSTANCE, + ContextMergeFunction.INSTANCE, + ContextFunction.INSTANCE, + RoundUpFunction.INSTANCE, + RoundDownFunction.INSTANCE, + RoundHalfUpFunction.INSTANCE, + RoundHalfDownFunction.INSTANCE, + + RangeFunction.INSTANCE, }; public static FEELFunction[] getFunctions() { diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/ContextFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/ContextFunction.java similarity index 92% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/ContextFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/ContextFunction.java index 21a01a1bf62..f5bbf8e8ee6 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/ContextFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/ContextFunction.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.util.HashMap; import java.util.List; @@ -24,9 +24,6 @@ import org.kie.dmn.api.feel.runtime.events.FEELEvent; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; /** * Proposal DMN14-187 diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/ContextMergeFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/ContextMergeFunction.java similarity index 90% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/ContextMergeFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/ContextMergeFunction.java index 5571b75efdf..4d3e9d2feea 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/ContextMergeFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/ContextMergeFunction.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.util.Collections; import java.util.HashMap; @@ -25,9 +25,6 @@ import org.kie.dmn.api.feel.runtime.events.FEELEvent; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; /** * Proposal DMN14-187 diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/ContextPutFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/ContextPutFunction.java similarity index 95% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/ContextPutFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/ContextPutFunction.java index 3c7a7216126..f9bbe2ff332 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/ContextPutFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/ContextPutFunction.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.util.HashMap; import java.util.List; @@ -27,9 +27,6 @@ import org.kie.dmn.feel.lang.types.BuiltInType; import org.kie.dmn.feel.lang.types.impl.ImmutableFPAWrappingPOJO; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; /** * Proposal DMN14-187 diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/DateFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/DateFunction.java index 05f28b8bfde..b50127a4058 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/DateFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/DateFunction.java @@ -66,10 +66,15 @@ public FEELFnResult invoke(@ParameterName( "from" ) String val try { return FEELFnResult.ofResult(LocalDate.from(FEEL_DATE.parse(val))); } catch (DateTimeException e) { - return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "date", e)); + return manageDateTimeException(e, val); } } + public FEELFnResult manageDateTimeException(DateTimeException e, String val) { + return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "date", e)); + } + + public FEELFnResult invoke(@ParameterName( "year" ) Number year, @ParameterName( "month" ) Number month, @ParameterName( "day" ) Number day) { if ( year == null ) { return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "year", "cannot be null")); diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/DurationFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/DurationFunction.java index acf5d8ab587..e61fae3bdd7 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/DurationFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/DurationFunction.java @@ -42,10 +42,6 @@ public FEELFnResult invoke(@ParameterName( "from" ) String val) return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "from", "cannot be null")); } - if ( val.indexOf("-") > 0) { - return FEELFnResult.ofError( new InvalidParametersEvent(Severity.ERROR, "from", "negative values for units are not allowed.") ); - } - try { // try to parse as days/hours/minute/seconds return FEELFnResult.ofResult( Duration.parse( val ) ); diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/GetEntriesFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/GetEntriesFunction.java index aba3972368e..0d55ad437c9 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/GetEntriesFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/GetEntriesFunction.java @@ -25,7 +25,6 @@ import org.kie.dmn.api.feel.runtime.events.FEELEvent.Severity; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.extended.ContextPutFunction; public class GetEntriesFunction extends BaseFEELFunction { diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/NowFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/NowFunction.java similarity index 86% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/NowFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/NowFunction.java index c9a2bd61a9d..660dd68d9d2 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/NowFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/NowFunction.java @@ -16,17 +16,16 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.time.ZonedDateTime; import java.time.temporal.TemporalAccessor; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; - public class NowFunction extends BaseFEELFunction { + public static final NowFunction INSTANCE = new NowFunction(); + public NowFunction() { super( "now" ); } diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RangeFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RangeFunction.java similarity index 87% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RangeFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RangeFunction.java index 1eac4c6dfe6..7f98a0d4dfa 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RangeFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RangeFunction.java @@ -16,13 +16,32 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.OffsetDateTime; +import java.time.OffsetTime; +import java.time.ZonedDateTime; +import java.time.chrono.ChronoPeriod; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.function.Predicate; import org.antlr.v4.runtime.tree.ParseTree; import org.kie.dmn.api.feel.runtime.events.FEELEvent; import org.kie.dmn.feel.lang.EvaluationContext; import org.kie.dmn.feel.lang.FEELDialect; -import org.kie.dmn.feel.lang.ast.*; +import org.kie.dmn.feel.lang.ast.AtLiteralNode; +import org.kie.dmn.feel.lang.ast.BaseNode; +import org.kie.dmn.feel.lang.ast.FunctionInvocationNode; +import org.kie.dmn.feel.lang.ast.NullNode; +import org.kie.dmn.feel.lang.ast.NumberNode; +import org.kie.dmn.feel.lang.ast.StringNode; import org.kie.dmn.feel.lang.impl.EvaluationContextImpl; import org.kie.dmn.feel.lang.impl.FEELEventListenersManager; import org.kie.dmn.feel.parser.feel11.ASTBuilderVisitor; @@ -31,24 +50,14 @@ import org.kie.dmn.feel.runtime.Range; import org.kie.dmn.feel.runtime.Range.RangeBoundary; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; import org.kie.dmn.feel.runtime.impl.RangeImpl; -import java.time.*; -import java.time.chrono.ChronoPeriod; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.function.Predicate; - public class RangeFunction extends BaseFEELFunction { public static final RangeFunction INSTANCE = new RangeFunction(); - // Defaulting FEELDialect to FEEL - private static final EvaluationContext STUBBED = new EvaluationContextImpl(Thread.currentThread().getContextClassLoader(), new FEELEventListenersManager(), 0, FEELDialect.FEEL); + + private static EvaluationContext STUBBED; + private static final List> ALLOWED_NODES = Arrays.asList(baseNode -> baseNode instanceof NullNode, baseNode -> baseNode instanceof NumberNode, @@ -111,12 +120,12 @@ public FEELFnResult invoke(@ParameterName("from") String from) { if (!nodeIsAllowed(rightNode)) { return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "right endpoint is not a recognised valid literal")); } - Object left = leftNode.evaluate(STUBBED); + Object left = leftNode.evaluate(getStubbed()); if (!nodeValueIsAllowed(left)) { return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "left endpoint is not a valid value " + left.getClass())); } - Object right = rightNode.evaluate(STUBBED); + Object right = rightNode.evaluate(getStubbed()); if (!nodeValueIsAllowed(right)) { return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "right endpoint is not a valid value " + right.getClass())); } @@ -169,4 +178,13 @@ protected BaseNode parseNotEmptyInput(String input) { return expr; } + private EvaluationContext getStubbed() { + if (STUBBED == null) { + // Defaulting FEELDialect to FEEL + STUBBED = new EvaluationContextImpl(Thread.currentThread().getContextClassLoader(), + new FEELEventListenersManager(), 0, FEELDialect.FEEL); + } + return STUBBED; + } + } diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundDownFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundDownFunction.java similarity index 90% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundDownFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundDownFunction.java index 0a67a7d31f7..2ed16ad5c26 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundDownFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundDownFunction.java @@ -16,16 +16,13 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.math.BigDecimal; import java.math.RoundingMode; import org.kie.dmn.api.feel.runtime.events.FEELEvent.Severity; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; /** * provisional access for DMN14-126 diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfDownFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundHalfDownFunction.java similarity index 91% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfDownFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundHalfDownFunction.java index 5d5648cc55d..655c7843921 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfDownFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundHalfDownFunction.java @@ -16,16 +16,13 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.math.BigDecimal; import java.math.RoundingMode; import org.kie.dmn.api.feel.runtime.events.FEELEvent.Severity; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; /** * provisional access for DMN14-126 diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfUpFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundHalfUpFunction.java similarity index 91% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfUpFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundHalfUpFunction.java index 990f19c5dd2..ed4c3224e8c 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfUpFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundHalfUpFunction.java @@ -16,16 +16,13 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.math.BigDecimal; import java.math.RoundingMode; import org.kie.dmn.api.feel.runtime.events.FEELEvent.Severity; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; /** * provisional access for DMN14-126 diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundUpFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundUpFunction.java similarity index 90% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundUpFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundUpFunction.java index e17c90d57df..e26b53667f5 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/RoundUpFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/RoundUpFunction.java @@ -16,16 +16,13 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.math.BigDecimal; import java.math.RoundingMode; import org.kie.dmn.api.feel.runtime.events.FEELEvent.Severity; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; /** * provisional access for DMN14-126 diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/StringJoinFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/StringJoinFunction.java similarity index 91% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/StringJoinFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/StringJoinFunction.java index 3ee399fc18e..0cf330faacb 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/StringJoinFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/StringJoinFunction.java @@ -16,16 +16,13 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.util.List; import java.util.StringJoiner; import org.kie.dmn.api.feel.runtime.events.FEELEvent.Severity; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; public class StringJoinFunction extends BaseFEELFunction { diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/TimeFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/TimeFunction.java index 7bcd6e76d50..db39bb19786 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/TimeFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/TimeFunction.java @@ -63,6 +63,13 @@ public class TimeFunction .withResolverStyle(ResolverStyle.STRICT); } + public static boolean timeStringWithSeconds(String val) { + return timePattern.matcher(val).find(); + } + + private static final BigDecimal NANO_MULT = BigDecimal.valueOf( 1000000000 ); + + public TimeFunction() { super(FEELConversionFunctionNames.TIME); } @@ -71,7 +78,6 @@ public FEELFnResult invoke(@ParameterName("from") String val) if ( val == null ) { return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "from", "cannot be null")); } - try { TemporalAccessor parsed = FEEL_TIME.parse(val); @@ -90,19 +96,16 @@ public FEELFnResult invoke(@ParameterName("from") String val) ZoneTime zoneTime = ZoneTime.of(asLocalTime, zoneId, hasSeconds); return FEELFnResult.ofResult(zoneTime); } - return FEELFnResult.ofResult(parsed); } catch (DateTimeException e) { - return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "from", e)); + return manageDateTimeException(e, val); } } - public static boolean timeStringWithSeconds(String val) { - return timePattern.matcher(val).find(); + public FEELFnResult manageDateTimeException(DateTimeException e, String val) { + return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "from", e)); } - private static final BigDecimal NANO_MULT = BigDecimal.valueOf( 1000000000 ); - public FEELFnResult invoke( @ParameterName("hour") Number hour, @ParameterName("minute") Number minute, @ParameterName("second") Number seconds) { diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/TodayFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/TodayFunction.java similarity index 86% rename from kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/TodayFunction.java rename to kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/TodayFunction.java index d392ec6803e..d2c1fc6a1f2 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/TodayFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/TodayFunction.java @@ -16,17 +16,16 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.time.LocalDate; import java.time.temporal.TemporalAccessor; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; - public class TodayFunction extends BaseFEELFunction { + public static final TodayFunction INSTANCE = new TodayFunction(); + public TodayFunction() { super( "today" ); } diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/CeilingFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/CeilingFunction.java deleted file mode 100644 index a406a26bc1e..00000000000 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/CeilingFunction.java +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.kie.dmn.feel.runtime.functions.extended; - -import java.math.BigDecimal; -import java.math.RoundingMode; - -import org.kie.dmn.api.feel.runtime.events.FEELEvent.Severity; -import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; - -/** - * provisional access for DMN14-126 - */ -public class CeilingFunction - extends BaseFEELFunction { - - public static final CeilingFunction INSTANCE = new CeilingFunction(); - - public CeilingFunction() { - super( "ceiling" ); - } - - public FEELFnResult invoke(@ParameterName( "n" ) BigDecimal n) { - return invoke(n, BigDecimal.ZERO); - } - - public FEELFnResult invoke(@ParameterName( "n" ) BigDecimal n, @ParameterName( "scale" ) BigDecimal scale) { - if ( n == null ) { - return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "n", "cannot be null")); - } - if ( scale == null ) { - return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "scale", "cannot be null")); - } - return FEELFnResult.ofResult( n.setScale( scale.intValue(), RoundingMode.CEILING ) ); - } -} diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/CodeFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/CodeFunction.java index d353251de84..7af4b3d445f 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/CodeFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/CodeFunction.java @@ -26,6 +26,8 @@ public class CodeFunction extends BaseFEELFunction { + public static final CodeFunction INSTANCE = new CodeFunction(); + public CodeFunction() { super( "code" ); } diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/DateFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/DateFunction.java index e40fd3a77b4..f23ba33a9ff 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/DateFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/DateFunction.java @@ -19,94 +19,48 @@ package org.kie.dmn.feel.runtime.functions.extended; import java.time.DateTimeException; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeFormatterBuilder; -import java.time.format.ResolverStyle; -import java.time.format.SignStyle; import java.time.temporal.TemporalAccessor; -import java.util.regex.Pattern; import org.kie.dmn.api.feel.runtime.events.FEELEvent; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; import org.kie.dmn.feel.runtime.functions.BuiltInFunctions; import org.kie.dmn.feel.runtime.functions.DateAndTimeFunction; -import org.kie.dmn.feel.runtime.functions.FEELConversionFunctionNames; import org.kie.dmn.feel.runtime.functions.FEELFnResult; import org.kie.dmn.feel.runtime.functions.ParameterName; -import static java.time.temporal.ChronoField.DAY_OF_MONTH; -import static java.time.temporal.ChronoField.MONTH_OF_YEAR; -import static java.time.temporal.ChronoField.YEAR; - -public class DateFunction extends BaseFEELFunction { +/** + * This class overrides parent methods due to BaseFEELFunction#getCandidateMethod implementation + */ +public class DateFunction extends org.kie.dmn.feel.runtime.functions.DateFunction { public static final DateFunction INSTANCE = new DateFunction(); - private static final Pattern BEGIN_YEAR = Pattern.compile("^-?(([1-9]\\d\\d\\d+)|(0\\d\\d\\d))-"); // FEEL spec, "specified by XML Schema Part 2 Datatypes", hence: yearFrag ::= '-'? (([1-9] digit digit digit+)) | ('0' digit digit digit)) - private static final DateTimeFormatter FEEL_DATE; - - static { - FEEL_DATE = new DateTimeFormatterBuilder().appendValue(YEAR, 4, 9, SignStyle.NORMAL) - .appendLiteral('-') - .appendValue(MONTH_OF_YEAR, 2) - .appendLiteral('-') - .appendValue(DAY_OF_MONTH, 2) - .toFormatter() - .withResolverStyle(ResolverStyle.STRICT); - } - DateFunction() { - super(FEELConversionFunctionNames.DATE); } + @Override public FEELFnResult invoke(@ParameterName("from") String val) { - if (val == null) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "cannot be null")); - } - if (!BEGIN_YEAR.matcher(val).find()) { // please notice the regex strictly requires the beginning, so we can use find. - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "year not compliant with XML Schema Part 2 Datatypes")); - } - - try { - return FEELFnResult.ofResult(LocalDate.from(FEEL_DATE.parse(val))); - } catch (DateTimeException e) { - // try to parse it as a date time and extract the date component - // NOTE: this is an extension to the standard - return BuiltInFunctions.getFunction(DateAndTimeFunction.class).invoke(val) - .cata(overrideLeft -> FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "date-parsing exception", e)), - this::invoke - ); - } + return super.invoke(val); } - public FEELFnResult invoke(@ParameterName("year") Number year, @ParameterName("month") Number month, @ParameterName("day") Number day) { - if (year == null) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "year", "cannot be null")); - } - if (month == null) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "month", "cannot be null")); - } - if (day == null) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "day", "cannot be null")); - } - - try { - return FEELFnResult.ofResult(LocalDate.of(year.intValue(), month.intValue(), day.intValue())); - } catch (DateTimeException e) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "input parameters date-parsing exception", e)); - } + @Override + public FEELFnResult invoke(@ParameterName( "year" ) Number year, @ParameterName( "month" ) Number month, @ParameterName( "day" ) Number day) { + return super.invoke(year, month, day); } - public FEELFnResult invoke(@ParameterName("from") TemporalAccessor date) { - if (date == null) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "cannot be null")); - } + @Override + public FEELFnResult invoke(@ParameterName( "from" ) TemporalAccessor date) { + return super.invoke(date); + } - try { - return FEELFnResult.ofResult(LocalDate.from(date)); - } catch (DateTimeException e) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "date-parsing exception", e)); - } + @Override + public FEELFnResult manageDateTimeException(DateTimeException e, String val) { + // try to parse it as a date time and extract the date component + // NOTE: this is an extension to the standard + return BuiltInFunctions.getFunction(DateAndTimeFunction.class).invoke(val) + .cata(overrideLeft -> FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from" + , "date-parsing exception", e)), + this::invoke + ); } + } diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/DurationFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/DurationFunction.java deleted file mode 100644 index 869efea0035..00000000000 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/DurationFunction.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.kie.dmn.feel.runtime.functions.extended; - -import java.time.Duration; -import java.time.format.DateTimeParseException; -import java.time.temporal.TemporalAmount; -import java.util.Arrays; -import java.util.List; - -import org.kie.dmn.api.feel.runtime.events.FEELEvent; -import org.kie.dmn.feel.lang.types.impl.ComparablePeriod; -import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELConversionFunctionNames; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; - -public class DurationFunction extends BaseFEELFunction { - public static final DurationFunction INSTANCE = new DurationFunction(); - - DurationFunction() { - super(FEELConversionFunctionNames.DURATION); - } - - public FEELFnResult invoke(@ParameterName( "from" ) String val) { - if ( val == null ) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "cannot be null")); - } - - try { - // try to parse as days/hours/minute/seconds - return FEELFnResult.ofResult( Duration.parse( val ) ); - } catch( DateTimeParseException e ) { - // if it failed, try to parse as years/months - try { - return FEELFnResult.ofResult(ComparablePeriod.parse(val).normalized()); - } catch( DateTimeParseException e2 ) { - // failed to parse, so return null according to the spec - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "date-parsing exception", - new RuntimeException(new Throwable() { public final List causes = Arrays.asList( new Throwable[]{e, e2} ); } ))); - } - } - - } - - public FEELFnResult invoke(@ParameterName( "from" ) TemporalAmount val) { - if ( val == null ) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "cannot be null")); - } - return FEELFnResult.ofResult( val ); - } - -} diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/FloorFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/FloorFunction.java deleted file mode 100644 index 3fefcca6788..00000000000 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/FloorFunction.java +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.kie.dmn.feel.runtime.functions.extended; - -import java.math.BigDecimal; -import java.math.RoundingMode; - -import org.kie.dmn.api.feel.runtime.events.FEELEvent.Severity; -import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.ParameterName; - -/** - * provisional access for DMN14-126 - */ -public class FloorFunction - extends BaseFEELFunction { - - public static final FloorFunction INSTANCE = new FloorFunction(); - - public FloorFunction() { - super( "floor" ); - } - - public FEELFnResult invoke(@ParameterName( "n" ) BigDecimal n) { - return invoke(n, BigDecimal.ZERO); - } - - public FEELFnResult invoke(@ParameterName( "n" ) BigDecimal n, @ParameterName( "scale" ) BigDecimal scale) { - if ( n == null ) { - return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "n", "cannot be null")); - } - if ( scale == null ) { - return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "scale", "cannot be null")); - } - return FEELFnResult.ofResult( n.setScale( scale.intValue(), RoundingMode.FLOOR ) ); - } -} diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/InvokeFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/InvokeFunction.java index f6c005ae5c7..6d2deed0308 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/InvokeFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/InvokeFunction.java @@ -39,6 +39,8 @@ @Deprecated public class InvokeFunction extends BaseFEELFunction { + public static final InvokeFunction INSTANCE = new InvokeFunction(); + public InvokeFunction() { super("invoke"); } diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/KieExtendedDMNFunctions.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/KieExtendedDMNFunctions.java index e6ab02e2993..6a4d89ef648 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/KieExtendedDMNFunctions.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/KieExtendedDMNFunctions.java @@ -40,23 +40,10 @@ public class KieExtendedDMNFunctions { protected static final FEELFunction[] FUNCTIONS = new FEELFunction[]{ TimeFunction.INSTANCE, DateFunction.INSTANCE, - DurationFunction.INSTANCE, // additional functions not part of the spec version 1.1 - new NowFunction(), - new TodayFunction(), - new CodeFunction(), - new InvokeFunction(), - - ContextPutFunction.INSTANCE, - ContextMergeFunction.INSTANCE, - ContextFunction.INSTANCE, - FloorFunction.INSTANCE, - CeilingFunction.INSTANCE, - RoundUpFunction.INSTANCE, - RoundDownFunction.INSTANCE, - RoundHalfUpFunction.INSTANCE, - RoundHalfDownFunction.INSTANCE, + CodeFunction.INSTANCE, + InvokeFunction.INSTANCE, // CQL based, two value logic functions NNAnyFunction.INSTANCE, @@ -70,9 +57,6 @@ public class KieExtendedDMNFunctions { NNStddevFunction.INSTANCE, NNSumFunction.INSTANCE, - StringJoinFunction.INSTANCE, - RangeFunction.INSTANCE, - }; public static FEELFunction[] getFunctions() { diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/TimeFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/TimeFunction.java index 744474dd615..9c43d509c15 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/TimeFunction.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/extended/TimeFunction.java @@ -18,158 +18,58 @@ */ package org.kie.dmn.feel.runtime.functions.extended; -import java.math.BigDecimal; -import java.math.RoundingMode; import java.time.DateTimeException; import java.time.Duration; -import java.time.LocalTime; -import java.time.OffsetTime; -import java.time.ZoneId; -import java.time.ZoneOffset; -import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeFormatterBuilder; -import java.time.format.ResolverStyle; -import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; -import java.time.temporal.TemporalQueries; import org.kie.dmn.api.feel.runtime.events.FEELEvent; -import org.kie.dmn.feel.runtime.custom.ZoneTime; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.BaseFEELFunction; import org.kie.dmn.feel.runtime.functions.BuiltInFunctions; import org.kie.dmn.feel.runtime.functions.DateAndTimeFunction; -import org.kie.dmn.feel.runtime.functions.FEELConversionFunctionNames; import org.kie.dmn.feel.runtime.functions.FEELFnResult; import org.kie.dmn.feel.runtime.functions.ParameterName; -import static org.kie.dmn.feel.runtime.functions.TimeFunction.timeStringWithSeconds; - -public class TimeFunction extends BaseFEELFunction { +/** + * This class overrides parent methods due to BaseFEELFunction#getCandidateMethod implementation + */ +public class TimeFunction extends org.kie.dmn.feel.runtime.functions.TimeFunction { public static final TimeFunction INSTANCE = new TimeFunction(); - private static final DateTimeFormatter FEEL_TIME; - - static { - FEEL_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive() - .append(DateTimeFormatter.ISO_LOCAL_TIME) - .optionalStart() - .appendLiteral("@") - .appendZoneRegionId() - .optionalEnd() - .optionalStart() - .appendOffsetId() - .optionalEnd() - .toFormatter() - .withResolverStyle(ResolverStyle.STRICT); - } - TimeFunction() { - super(FEELConversionFunctionNames.TIME); } + @Override public FEELFnResult invoke(@ParameterName("from") String val) { - if (val == null) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "cannot be null")); - } - - try { - TemporalAccessor parsed = FEEL_TIME.parse(val); - - if (parsed.query(TemporalQueries.offset()) != null) { - // it is an offset-zoned time, so I can know for certain an OffsetTime - OffsetTime asOffSetTime = parsed.query(OffsetTime::from); - return FEELFnResult.ofResult(asOffSetTime); - } else if (parsed.query(TemporalQueries.zone()) == null) { - // if it does not contain any zone information at all, then I know for certain is a local time. - LocalTime asLocalTime = parsed.query(LocalTime::from); - return FEELFnResult.ofResult(asLocalTime); - } else if (parsed.query(TemporalQueries.zone()) != null) { - boolean hasZeroSeconds = timeStringWithSeconds(val); - LocalTime asLocalTime = parsed.query(LocalTime::from); - ZoneId zoneId = parsed.query(TemporalQueries.zone()); - ZoneTime zoneTime = ZoneTime.of(asLocalTime, zoneId, hasZeroSeconds); - return FEELFnResult.ofResult(zoneTime); - } - - return FEELFnResult.ofResult(parsed); - } catch (DateTimeException e) { - // try to parse it as a date time and extract the date component - // NOTE: this is an extension to the standard - return BuiltInFunctions.getFunction(DateAndTimeFunction.class).invoke(val) - .cata(overrideLeft -> FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "time-parsing exception", e)), - this::invoke - ); - } + return super.invoke(val); } - private static final BigDecimal NANO_MULT = BigDecimal.valueOf(1000000000); - + @Override public FEELFnResult invoke( @ParameterName("hour") Number hour, @ParameterName("minute") Number minute, @ParameterName("second") Number seconds) { - return invoke(hour, minute, seconds, null); + return super.invoke(hour, minute, seconds); } + @Override public FEELFnResult invoke( @ParameterName("hour") Number hour, @ParameterName("minute") Number minute, @ParameterName("second") Number seconds, @ParameterName("offset") Duration offset) { - if (hour == null) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "hour", "cannot be null")); - } - if (minute == null) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "minute", "cannot be null")); - } - if (seconds == null) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "seconds", "cannot be null")); - } - - try { - int nanosecs = 0; - if (seconds instanceof BigDecimal) { - BigDecimal secs = (BigDecimal) seconds; - nanosecs = secs.subtract(secs.setScale(0, RoundingMode.DOWN)).multiply(NANO_MULT).intValue(); - } - - if (offset == null) { - return FEELFnResult.ofResult(LocalTime.of(hour.intValue(), minute.intValue(), seconds.intValue(), - nanosecs)); - } else { - return FEELFnResult.ofResult(OffsetTime.of(hour.intValue(), minute.intValue(), seconds.intValue(), - nanosecs, - ZoneOffset.ofTotalSeconds((int) offset.getSeconds()))); - } - } catch (DateTimeException e) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "time-parsing exception", e)); - } + return super.invoke(hour, minute, seconds, offset); } + @Override public FEELFnResult invoke(@ParameterName("from") TemporalAccessor date) { - if (date == null) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "cannot be null")); - } + return super.invoke(date); + } - try { - // If the temporal accessor type doesn't support time, try to parse it as a date with UTC midnight. - if (!date.isSupported(ChronoField.HOUR_OF_DAY)) { - return BuiltInFunctions.getFunction( DateAndTimeFunction.class ).invoke( date, OffsetTime.of(0, 0, 0, 0, ZoneOffset.UTC) ) - .cata( overrideLeft -> FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "time-parsing exception")), - this::invoke - ); - } else if( date.query( TemporalQueries.offset() ) == null ) { - return FEELFnResult.ofResult(LocalTime.from(date)); - } else { - ZoneId zone = date.query(TemporalQueries.zoneId()); - if (!(zone instanceof ZoneOffset)) { - // TZ is a ZoneRegion, so do NOT normalize (although the result will be unreversible, but will keep what was supplied originally). - // Unfortunately java.time.Parsed is a package-private class, hence will need to re-parse in order to have it instantiated. - return invoke(date.query(TemporalQueries.localTime()) + "@" + zone); - } else { - return FEELFnResult.ofResult(OffsetTime.from(date)); - } - } - } catch (DateTimeException e) { - return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "time-parsing exception", e)); - } + @Override + public FEELFnResult manageDateTimeException(DateTimeException e, String val) { + // try to parse it as a date time and extract the date component + // NOTE: this is an extension to the standard + return BuiltInFunctions.getFunction(DateAndTimeFunction.class).invoke(val) + .cata(overrideLeft -> FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from" + , "time-parsing exception", e)), + this::invoke + ); } } diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/util/BooleanEvalHelper.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/util/BooleanEvalHelper.java index f6049372c7f..39f9707923d 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/util/BooleanEvalHelper.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/util/BooleanEvalHelper.java @@ -30,8 +30,6 @@ import java.util.Optional; import java.util.function.BiPredicate; -import org.kie.dmn.feel.lang.EvaluationContext; -import org.kie.dmn.feel.lang.FEELDialect; import org.kie.dmn.feel.lang.types.BuiltInType; import org.kie.dmn.feel.lang.types.impl.ComparablePeriod; import org.kie.dmn.feel.runtime.Range; diff --git a/kie-dmn/kie-dmn-feel/src/main/resources/META-INF/native-image/org.kie/kie-dmn-feel/reflect-config.json b/kie-dmn/kie-dmn-feel/src/main/resources/META-INF/native-image/org.kie/kie-dmn-feel/reflect-config.json index c6b830b456f..a80edd19086 100644 --- a/kie-dmn/kie-dmn-feel/src/main/resources/META-INF/native-image/org.kie/kie-dmn-feel/reflect-config.json +++ b/kie-dmn/kie-dmn-feel/src/main/resources/META-INF/native-image/org.kie/kie-dmn-feel/reflect-config.json @@ -1,992 +1,992 @@ [ - { - "name": "org.kie.dmn.feel.codegen.feel11.CompiledCustomFEELFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.AbsFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.AbstractCustomFEELFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.AllFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.AnyFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.AppendFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.BaseFEELFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.CeilingFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.ConcatenateFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.ContainsFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.CountFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.CustomFEELFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.DTInvokerFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.DateAndTimeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.DateFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.DayOfWeekFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.DayOfYearFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.DecimalFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.DecisionTableFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.DistinctValuesFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.DurationFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.EndsWithFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.EvenFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.ExpFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.FlattenFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.FloorFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.GetEntriesFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.GetValueFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.IndexOfFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.InsertBeforeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.IsFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.JavaFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.ListContainsFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.ListReplaceFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.LogFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.MatchesFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.MaxFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.MeanFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.MedianFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.MinFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.ModeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.ModuloFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.MonthOfYearFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.NotFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.NumberFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.OddFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.ProductFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.RemoveFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.ReplaceFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.ReverseFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.SortFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.SplitFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.SqrtFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.StartsWithFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.StddevFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.StringFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.StringLengthFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.StringLowerCaseFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.StringUpperCaseFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.SublistFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.SubstringAfterFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.SubstringBeforeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.SubstringFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.SumFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.TimeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.UnionFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.WeekOfYearFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.YearsAndMonthsFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.CeilingFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.CodeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.ContextFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.ContextMergeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.ContextPutFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.DateFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.DurationFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.FloorFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.InvokeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.NowFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.RangeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.RoundDownFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.RoundHalfDownFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.RoundHalfUpFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.RoundUpFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.StringJoinFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.TimeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.extended.TodayFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.AfterFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.BeforeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.CoincidesFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.DuringFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.FinishedByFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.FinishesFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.IncludesFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.MeetsFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.MetByFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.OverlapsAfterFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.OverlapsBeforeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.OverlapsFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.StartedByFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.interval.StartsFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNAllFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNAnyFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNCountFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNMaxFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNMeanFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNMedianFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNMinFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNModeFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNStddevFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - }, - { - "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNSumFunction", - "allDeclaredConstructors": true, - "allPublicConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredClasses": true, - "allPublicClasses": true - } + { + "name": "org.kie.dmn.feel.codegen.feel11.CompiledCustomFEELFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.AbsFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.AbstractCustomFEELFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.AllFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.AnyFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.AppendFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.BaseFEELFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.CeilingFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ConcatenateFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ContainsFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.CountFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.CustomFEELFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.DTInvokerFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.DateAndTimeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.DateFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.DayOfWeekFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.DayOfYearFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.DecimalFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.DecisionTableFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.DistinctValuesFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.DurationFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.EndsWithFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.EvenFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ExpFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.FlattenFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.FloorFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.GetEntriesFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.GetValueFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.IndexOfFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.InsertBeforeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.IsFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.JavaFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ListContainsFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ListReplaceFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.LogFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.MatchesFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.MaxFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.MeanFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.MedianFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.MinFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ModeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ModuloFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.MonthOfYearFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.NotFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.NumberFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.OddFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ProductFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.RemoveFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ReplaceFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ReverseFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.SortFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.SplitFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.SqrtFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.StartsWithFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.StddevFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.StringFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.StringLengthFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.StringLowerCaseFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.StringUpperCaseFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.SublistFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.SubstringAfterFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.SubstringBeforeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.SubstringFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.SumFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.TimeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.UnionFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.WeekOfYearFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.YearsAndMonthsFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.CeilingFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ContextFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ContextMergeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.ContextPutFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.DurationFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.FloorFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.NowFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.RangeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.RoundDownFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.RoundHalfDownFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.RoundHalfUpFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.RoundUpFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.StringJoinFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.TodayFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.extended.CodeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.extended.DateFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.extended.InvokeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.extended.TimeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.AfterFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.BeforeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.CoincidesFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.DuringFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.FinishedByFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.FinishesFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.IncludesFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.MeetsFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.MetByFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.OverlapsAfterFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.OverlapsBeforeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.OverlapsFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.StartedByFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.interval.StartsFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNAllFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNAnyFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNCountFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNMaxFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNMeanFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNMedianFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNMinFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNModeFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNStddevFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "org.kie.dmn.feel.runtime.functions.twovaluelogic.NNSumFunction", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + } ] diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/NowFunctionTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/NowFunctionTest.java index adaf8d74819..03a956857dd 100644 --- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/NowFunctionTest.java +++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/NowFunctionTest.java @@ -23,7 +23,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.kie.dmn.feel.runtime.functions.extended.NowFunction; import static org.assertj.core.api.Assertions.assertThat; diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RangeFunctionTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RangeFunctionTest.java similarity index 99% rename from kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RangeFunctionTest.java rename to kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RangeFunctionTest.java index 3fea8c48bdb..736f86d5ed7 100644 --- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RangeFunctionTest.java +++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RangeFunctionTest.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import java.math.BigDecimal; import java.time.Duration; @@ -41,8 +41,6 @@ import org.kie.dmn.feel.lang.types.impl.ComparablePeriod; import org.kie.dmn.feel.runtime.Range; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.FEELFnResult; -import org.kie.dmn.feel.runtime.functions.FunctionTestUtil; import org.kie.dmn.feel.runtime.impl.RangeImpl; import static org.assertj.core.api.Assertions.assertThat; diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundDownFunctionTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundDownFunctionTest.java similarity index 96% rename from kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundDownFunctionTest.java rename to kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundDownFunctionTest.java index 37e4742f759..09c88df6086 100644 --- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundDownFunctionTest.java +++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundDownFunctionTest.java @@ -16,12 +16,11 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.FunctionTestUtil; import java.math.BigDecimal; diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfDownFunctionTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundHalfDownFunctionTest.java similarity index 96% rename from kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfDownFunctionTest.java rename to kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundHalfDownFunctionTest.java index d91b548c14b..847b82f3ebc 100644 --- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfDownFunctionTest.java +++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundHalfDownFunctionTest.java @@ -16,12 +16,11 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.FunctionTestUtil; import java.math.BigDecimal; diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfUpFunctionTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundHalfUpFunctionTest.java similarity index 96% rename from kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfUpFunctionTest.java rename to kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundHalfUpFunctionTest.java index a5afd7a5013..3f21a15c4e6 100644 --- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundHalfUpFunctionTest.java +++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundHalfUpFunctionTest.java @@ -16,12 +16,11 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.FunctionTestUtil; import java.math.BigDecimal; diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundUpFunctionTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundUpFunctionTest.java similarity index 96% rename from kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundUpFunctionTest.java rename to kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundUpFunctionTest.java index 2175fe8f5c7..e5156c2fd39 100644 --- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/extended/RoundUpFunctionTest.java +++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/RoundUpFunctionTest.java @@ -16,12 +16,11 @@ * specific language governing permissions and limitations * under the License. */ -package org.kie.dmn.feel.runtime.functions.extended; +package org.kie.dmn.feel.runtime.functions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.kie.dmn.feel.runtime.events.InvalidParametersEvent; -import org.kie.dmn.feel.runtime.functions.FunctionTestUtil; import java.math.BigDecimal; diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/TodayFunctionTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/TodayFunctionTest.java index 161c4b98d60..ee9e7c1379e 100644 --- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/TodayFunctionTest.java +++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/TodayFunctionTest.java @@ -22,7 +22,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.kie.dmn.feel.runtime.functions.extended.TodayFunction; class TodayFunctionTest {