Skip to content

Commit

Permalink
[incubator-kie-issues#1206] Further cleanup/reorganization
Browse files Browse the repository at this point in the history
  • Loading branch information
Gabriele-Cardosi committed Jun 4, 2024
1 parent d1d85f8 commit c56514e
Show file tree
Hide file tree
Showing 8 changed files with 1,119 additions and 1,223 deletions.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -28,62 +28,13 @@
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.temporal.TemporalAccessor;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.github.javaparser.ast.expr.NameExpr;
import com.github.javaparser.ast.type.ClassOrInterfaceType;
import com.github.javaparser.ast.type.Type;
import org.kie.dmn.feel.lang.ast.ASTNode;
import org.kie.dmn.feel.lang.ast.AtLiteralNode;
import org.kie.dmn.feel.lang.ast.BetweenNode;
import org.kie.dmn.feel.lang.ast.BooleanNode;
import org.kie.dmn.feel.lang.ast.CTypeNode;
import org.kie.dmn.feel.lang.ast.ContextEntryNode;
import org.kie.dmn.feel.lang.ast.ContextNode;
import org.kie.dmn.feel.lang.ast.ContextTypeNode;
import org.kie.dmn.feel.lang.ast.DashNode;
import org.kie.dmn.feel.lang.ast.FilterExpressionNode;
import org.kie.dmn.feel.lang.ast.ForExpressionNode;
import org.kie.dmn.feel.lang.ast.FormalParameterNode;
import org.kie.dmn.feel.lang.ast.FunctionDefNode;
import org.kie.dmn.feel.lang.ast.FunctionInvocationNode;
import org.kie.dmn.feel.lang.ast.FunctionTypeNode;
import org.kie.dmn.feel.lang.ast.IfExpressionNode;
import org.kie.dmn.feel.lang.ast.InNode;
import org.kie.dmn.feel.lang.ast.InfixOpNode;
import org.kie.dmn.feel.lang.ast.InfixOperator;
import org.kie.dmn.feel.lang.ast.InstanceOfNode;
import org.kie.dmn.feel.lang.ast.IterationContextNode;
import org.kie.dmn.feel.lang.ast.ListNode;
import org.kie.dmn.feel.lang.ast.ListTypeNode;
import org.kie.dmn.feel.lang.ast.NameDefNode;
import org.kie.dmn.feel.lang.ast.NameRefNode;
import org.kie.dmn.feel.lang.ast.NamedParameterNode;
import org.kie.dmn.feel.lang.ast.NullNode;
import org.kie.dmn.feel.lang.ast.NumberNode;
import org.kie.dmn.feel.lang.ast.PathExpressionNode;
import org.kie.dmn.feel.lang.ast.QualifiedNameNode;
import org.kie.dmn.feel.lang.ast.QuantifiedExpressionNode;
import org.kie.dmn.feel.lang.ast.RangeNode;
import org.kie.dmn.feel.lang.ast.SignedUnaryNode;
import org.kie.dmn.feel.lang.ast.StringNode;
import org.kie.dmn.feel.lang.ast.TemporalConstantNode;
import org.kie.dmn.feel.lang.ast.UnaryTestListNode;
import org.kie.dmn.feel.lang.ast.UnaryTestNode;
import org.kie.dmn.feel.lang.impl.JavaBackedType;
import org.kie.dmn.feel.lang.impl.MapBackedType;
import org.kie.dmn.feel.lang.types.impl.ComparablePeriod;
import org.kie.dmn.feel.runtime.FEELFunction;
import org.kie.dmn.feel.runtime.Range;
import org.kie.dmn.feel.runtime.UnaryTest;
import org.kie.dmn.feel.runtime.functions.TimeFunction;
import org.kie.dmn.feel.util.NumberEvalHelper;

import static com.github.javaparser.StaticJavaParser.parseClassOrInterfaceType;
import static com.github.javaparser.StaticJavaParser.parseType;

/**
* Class used to store constant values needed for codegen
Expand All @@ -94,21 +45,13 @@ public class CodegenConstants {
// String
public static final String ADDFIELD_S = "addField";
public static final String ASLIST_S = "asList";
public static final String CREATEBASENODE_S = "createBaseNode";
public static final String DETERMINEOPERATOR_S = "determineOperator";
public static final String EVALUATE_S = "evaluate";
public static final String FEELCTX_S = "feelExprCtx";
public static final String FEEL_TIME_S = "FEEL_TIME";
public static final String GETBIGDECIMALORNULL_S = "getBigDecimalOrNull";
public static final String INSTANCE_S = "INSTANCE";
public static final String OF_S = "of";
public static final String PARSE_S = "parse";
public static final String PUT_S = "put";
public static final String RANGEBOUNDARY_S = Range.RangeBoundary.class.getCanonicalName();
public static final String VAR_S = "var";

// NameExpr
// java types
public static final NameExpr DURATION_N = new NameExpr(Duration.class.getCanonicalName());
public static final NameExpr LOCAL_DATE_N = new NameExpr(LocalDate.class.getCanonicalName());
public static final NameExpr LOCAL_DATE_TIME_N = new NameExpr(LocalDateTime.class.getCanonicalName());
Expand All @@ -118,71 +61,22 @@ public class CodegenConstants {
public static final NameExpr ZONE_ID_N = new NameExpr(ZoneId.class.getCanonicalName());
public static final NameExpr ZONE_OFFSET_N = new NameExpr(ZoneOffset.class.getCanonicalName());

// DMN
public static final NameExpr INFIXOPERATOR_N = new NameExpr(InfixOperator.class.getCanonicalName());
public static final NameExpr COMPARABLEPERIOD_N = new NameExpr(ComparablePeriod.class.getCanonicalName());
public static final NameExpr FEELCTX_N = new NameExpr(FEELCTX_S);
public static final NameExpr JAVABACKEDTYPE_N = new NameExpr(JavaBackedType.class.getCanonicalName());
public static final NameExpr NUMBEREVALHELPER_N = new NameExpr(NumberEvalHelper.class.getCanonicalName());
public static final NameExpr TIMEFUNCTION_N = new NameExpr(TimeFunction.class.getCanonicalName());

// ClassOrInterfaceType
// java types
public static final ClassOrInterfaceType BIGDECIMAL_CT = parseClassOrInterfaceType(BigDecimal.class.getCanonicalName());
public static final ClassOrInterfaceType DURATION_CT = parseClassOrInterfaceType(Duration.class.getCanonicalName());
public static final ClassOrInterfaceType HASHMAP_CT = parseClassOrInterfaceType(HashMap.class.getCanonicalName());
public static final ClassOrInterfaceType FUNCTION_CT = parseClassOrInterfaceType("java.util.function.Function<EvaluationContext, Object>");
public static final ClassOrInterfaceType ILLEGALSTATEEXCEPTION_CT = parseClassOrInterfaceType(IllegalStateException.class.getCanonicalName());
public static final ClassOrInterfaceType INTEGER_CT = parseClassOrInterfaceType(Integer.class.getCanonicalName());
public static final ClassOrInterfaceType LOCAL_DATE_CT = parseClassOrInterfaceType(LocalDate.class.getCanonicalName());
public static final ClassOrInterfaceType LOCAL_DATE_TIME_CT = parseClassOrInterfaceType(LocalDateTime.class.getCanonicalName());
public static final ClassOrInterfaceType LOCAL_TIME_CT = parseClassOrInterfaceType(LocalTime.class.getCanonicalName());
public static final ClassOrInterfaceType OFFSETTIME_CT = parseClassOrInterfaceType(OffsetTime.class.getCanonicalName());
public static final ClassOrInterfaceType MAP_CT = parseClassOrInterfaceType(Map.class.getCanonicalName());
public static final ClassOrInterfaceType STRING_CT = parseClassOrInterfaceType(String.class.getCanonicalName());
public static final ClassOrInterfaceType TEMPORALACCESSOR_CT = parseClassOrInterfaceType(TemporalAccessor.class.getCanonicalName());
public static final ClassOrInterfaceType ZONED_DATE_TIME_CT = parseClassOrInterfaceType(ZonedDateTime.class.getCanonicalName());

// DMN
public static final ClassOrInterfaceType COMPARABLEPERIOD_CT = parseClassOrInterfaceType(ComparablePeriod.class.getCanonicalName());
public static final ClassOrInterfaceType MAPBACKEDTYPE_CT = parseClassOrInterfaceType(MapBackedType.class.getCanonicalName());
public static final ClassOrInterfaceType TYPE_CT = parseClassOrInterfaceType(org.kie.dmn.feel.lang.Type.class.getCanonicalName());
public static final ClassOrInterfaceType UNARYTEST_CT = parseClassOrInterfaceType(UnaryTest.class.getCanonicalName());

// BaseNode
public static final ClassOrInterfaceType ATLITERALNODE_CT = parseClassOrInterfaceType(AtLiteralNode.class.getCanonicalName());
public static final ClassOrInterfaceType BETWEENNODE_CT = parseClassOrInterfaceType(BetweenNode.class.getCanonicalName());
public static final ClassOrInterfaceType BOOLEANNODE_CT = parseClassOrInterfaceType(BooleanNode.class.getCanonicalName());
public static final ClassOrInterfaceType CONTEXTNODE_CT = parseClassOrInterfaceType(ContextNode.class.getCanonicalName());
public static final ClassOrInterfaceType CONTEXTENTRYNODE_CT = parseClassOrInterfaceType(ContextEntryNode.class.getCanonicalName());
public static final ClassOrInterfaceType CONTEXTTYPENODE_CT = parseClassOrInterfaceType(ContextTypeNode.class.getCanonicalName());
public static final ClassOrInterfaceType CTYPENODE_CT = parseClassOrInterfaceType(CTypeNode.class.getCanonicalName());
public static final ClassOrInterfaceType DASHNODE_CT = parseClassOrInterfaceType(DashNode.class.getCanonicalName());
public static final ClassOrInterfaceType FILTEREXPRESSIONNODE_CT = parseClassOrInterfaceType(FilterExpressionNode.class.getCanonicalName());
public static final ClassOrInterfaceType FOREXPRESSIONNODE_CT = parseClassOrInterfaceType(ForExpressionNode.class.getCanonicalName());
public static final ClassOrInterfaceType FORMALPARAMETERNODE_CT = parseClassOrInterfaceType(FormalParameterNode.class.getCanonicalName());
public static final ClassOrInterfaceType FUNCTIONDEFNODE_CT = parseClassOrInterfaceType(FunctionDefNode.class.getCanonicalName());
public static final ClassOrInterfaceType FUNCTIONTYPENODE_CT = parseClassOrInterfaceType(FunctionTypeNode.class.getCanonicalName());
public static final ClassOrInterfaceType FUNCTIONINVOCATIONNODE_CT = parseClassOrInterfaceType(FunctionInvocationNode.class.getCanonicalName());
public static final ClassOrInterfaceType IFEXPRESSIONNODE_CT = parseClassOrInterfaceType(IfExpressionNode.class.getCanonicalName());
public static final ClassOrInterfaceType INFIXOPNODE_CT = parseClassOrInterfaceType(InfixOpNode.class.getCanonicalName());
public static final ClassOrInterfaceType INNODE_CT = parseClassOrInterfaceType(InNode.class.getCanonicalName());
public static final ClassOrInterfaceType INSTANCEOFNODE_CT = parseClassOrInterfaceType(InstanceOfNode.class.getCanonicalName());
public static final ClassOrInterfaceType ITERATIONCONTEXTNODE_CT = parseClassOrInterfaceType(IterationContextNode.class.getCanonicalName());
public static final ClassOrInterfaceType LISTNODE_CT = parseClassOrInterfaceType(ListNode.class.getCanonicalName());
public static final ClassOrInterfaceType LISTTYPENODE_CT = parseClassOrInterfaceType(ListTypeNode.class.getCanonicalName());
public static final ClassOrInterfaceType NAMEDEFNODE_CT = parseClassOrInterfaceType(NameDefNode.class.getCanonicalName());
public static final ClassOrInterfaceType NAMEDPARAMETERNODE_CT = parseClassOrInterfaceType(NamedParameterNode.class.getCanonicalName());
public static final ClassOrInterfaceType NAMEREFNODE_CT = parseClassOrInterfaceType(NameRefNode.class.getCanonicalName());
public static final ClassOrInterfaceType NULLNODE_CT = parseClassOrInterfaceType(NullNode.class.getCanonicalName());
public static final ClassOrInterfaceType NUMBERNODE_CT = parseClassOrInterfaceType(NumberNode.class.getCanonicalName());
public static final ClassOrInterfaceType PATHEXPRESSIONNODE_CT = parseClassOrInterfaceType(PathExpressionNode.class.getCanonicalName());
public static final ClassOrInterfaceType QUALIFIEDNAMENODE_CT = parseClassOrInterfaceType(QualifiedNameNode.class.getCanonicalName());
public static final ClassOrInterfaceType QUANTIFIEDEXPRESSIONNODE_CT = parseClassOrInterfaceType(QuantifiedExpressionNode.class.getCanonicalName());
public static final ClassOrInterfaceType RANGENODE_CT = parseClassOrInterfaceType(RangeNode.class.getCanonicalName());
public static final ClassOrInterfaceType SIGNEDUNARYNODE_CT = parseClassOrInterfaceType(SignedUnaryNode.class.getCanonicalName());
public static final ClassOrInterfaceType STRINGNODE_CT = parseClassOrInterfaceType(StringNode.class.getCanonicalName());
public static final ClassOrInterfaceType TEMPORALCONSTANTNODE_CT = parseClassOrInterfaceType(TemporalConstantNode.class.getCanonicalName());
public static final ClassOrInterfaceType UNARYTESTLISTNODE_CT = parseClassOrInterfaceType(UnaryTestListNode.class.getCanonicalName());
public static final ClassOrInterfaceType UNARYTESTNODE_CT = parseClassOrInterfaceType(UnaryTestNode.class.getCanonicalName());

private CodegenConstants() {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@

import static com.github.javaparser.StaticJavaParser.parse;
import static org.drools.compiler.compiler.JavaDialectConfiguration.createNativeCompiler;
import static org.kie.dmn.feel.codegen.feel11.CodegenConstants.CREATEBASENODE_S;
import static org.kie.dmn.feel.codegen.feel11.DMNCodegenConstants.CREATEBASENODE_S;

public class CompilerBytecodeLoader {

Expand Down Expand Up @@ -125,8 +125,12 @@ public <T> T compileUnit(String cuPackage, String cuClass, CompilationUnit cu)
pReader,
pStore,
Thread.currentThread().getContextClassLoader());
LOG.error("{}", Arrays.asList(compilationResult.getErrors()));
LOG.warn("{}", Arrays.asList(compilationResult.getWarnings()));
if (compilationResult.getErrors().length > 0) {
LOG.error("{}", Arrays.asList(compilationResult.getErrors()));
}
if (compilationResult.getWarnings().length > 0) {
LOG.warn("{}", Arrays.asList(compilationResult.getWarnings()));
}

String fqnClassName = cuPackage + "." + cuClass;
Class<T> loaded =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@
import static com.github.javaparser.StaticJavaParser.parseClassOrInterfaceType;
import static com.github.javaparser.StaticJavaParser.parseExpression;
import static org.kie.dmn.feel.codegen.feel11.CodegenConstants.BIGDECIMAL_CT;
import static org.kie.dmn.feel.codegen.feel11.CodegenConstants.FUNCTION_CT;
import static org.kie.dmn.feel.codegen.feel11.CodegenConstants.RANGEBOUNDARY_S;
import static org.kie.dmn.feel.codegen.feel11.CodegenConstants.UNARYTEST_CT;
import static org.kie.dmn.feel.codegen.feel11.DMNCodegenConstants.FUNCTION_CT;
import static org.kie.dmn.feel.codegen.feel11.DMNCodegenConstants.RANGEBOUNDARY_S;
import static org.kie.dmn.feel.codegen.feel11.DMNCodegenConstants.UNARYTEST_CT;

public class Constants {

Expand Down
Loading

0 comments on commit c56514e

Please sign in to comment.