Skip to content

Commit

Permalink
[DROOLS-2284] Fix testInlineCastMultiple test (apache#1768)
Browse files Browse the repository at this point in the history
Moved InlineCast Tests to separated class and package

Added Logger

Disable rule printing in drool-test-suite

Major Refactoring fo Expression Typer

Removed dead code

Introduced TypedExpressionCursor

Introduced local typeCursor

Extracted branches of firstNode processing

Extracted handling of prefix expressions

Optional cursor

Processing of first child

Minor refactoring
  • Loading branch information
lucamolteni authored and mariofusco committed Feb 15, 2018
1 parent d26390c commit 957cc1a
Show file tree
Hide file tree
Showing 18 changed files with 546 additions and 296 deletions.
Expand Up @@ -36,9 +36,14 @@
import org.drools.javaparser.printer.PrettyPrinter; import org.drools.javaparser.printer.PrettyPrinter;
import org.drools.javaparser.printer.PrettyPrinterConfiguration; import org.drools.javaparser.printer.PrettyPrinterConfiguration;
import org.drools.modelcompiler.builder.errors.CompilationProblemErrorResult; import org.drools.modelcompiler.builder.errors.CompilationProblemErrorResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class JavaParserCompiler { public class JavaParserCompiler {


private static final Logger logger = LoggerFactory.getLogger(JavaParserCompiler.class);


private static final JavaDialectConfiguration.CompilerType COMPILER_TYPE = JavaDialectConfiguration.CompilerType.NATIVE; private static final JavaDialectConfiguration.CompilerType COMPILER_TYPE = JavaDialectConfiguration.CompilerType.NATIVE;


private static final JavaCompiler JAVA_COMPILER = createCompiler(); private static final JavaCompiler JAVA_COMPILER = createCompiler();
Expand Down Expand Up @@ -80,7 +85,7 @@ public static Map<String, Class<?>> compileAll(KnowledgeBuilderImpl kbuilder, Cl
CompilationResult resultCompilation = getCompiler().compile(resources, srcMfs, trgMfs, classLoader); CompilationResult resultCompilation = getCompiler().compile(resources, srcMfs, trgMfs, classLoader);
CompilationProblem[] errors = resultCompilation.getErrors(); CompilationProblem[] errors = resultCompilation.getErrors();
if(errors.length != 0) { if(errors.length != 0) {
classes.forEach(System.out::println); classes.forEach(c -> logger.error(c.toString()));
for (CompilationProblem error : errors) { for (CompilationProblem error : errors) {
kbuilder.addBuilderResult(new CompilationProblemErrorResult(error)); kbuilder.addBuilderResult(new CompilationProblemErrorResult(error));
} }
Expand Down
Expand Up @@ -28,7 +28,7 @@ public Result writeModel(MemoryFileSystem srcMfs, Collection<PackageModel> packa


for (ClassOrInterfaceDeclaration generatedPojo : pkgModel.getGeneratedPOJOsSource()) { for (ClassOrInterfaceDeclaration generatedPojo : pkgModel.getGeneratedPOJOsSource()) {
final String source = JavaParserCompiler.toPojoSource(pkgModel.getName(), pkgModel.getImports(), generatedPojo); final String source = JavaParserCompiler.toPojoSource(pkgModel.getName(), pkgModel.getImports(), generatedPojo);
pkgModel.sysout(source); pkgModel.logRule(source);
String pojoSourceName = "src/main/java/" + folderName + "/" + generatedPojo.getName() + ".java"; String pojoSourceName = "src/main/java/" + folderName + "/" + generatedPojo.getName() + ".java";
srcMfs.write( pojoSourceName, source.getBytes() ); srcMfs.write( pojoSourceName, source.getBytes() );
sourceFiles.add( pojoSourceName ); sourceFiles.add( pojoSourceName );
Expand All @@ -39,7 +39,7 @@ public Result writeModel(MemoryFileSystem srcMfs, Collection<PackageModel> packa
String rulesFileName = pkgModel.getRulesFileName(); String rulesFileName = pkgModel.getRulesFileName();
String rulesSourceName = "src/main/java/" + folderName + "/" + rulesFileName + ".java"; String rulesSourceName = "src/main/java/" + folderName + "/" + rulesFileName + ".java";
String rulesSource = prettyPrinter.print(rulesSourceResult.getMainRuleClass()); String rulesSource = prettyPrinter.print(rulesSourceResult.getMainRuleClass());
pkgModel.sysout(rulesSource); pkgModel.logRule(rulesSource);
byte[] rulesBytes = rulesSource.getBytes(); byte[] rulesBytes = rulesSource.getBytes();
srcMfs.write( rulesSourceName, rulesBytes ); srcMfs.write( rulesSourceName, rulesBytes );
modelFiles.add( pkgName + "." + rulesFileName ); modelFiles.add( pkgName + "." + rulesFileName );
Expand All @@ -49,7 +49,7 @@ public Result writeModel(MemoryFileSystem srcMfs, Collection<PackageModel> packa
String addFileName = cu.findFirst(ClassOrInterfaceDeclaration.class).get().getNameAsString(); String addFileName = cu.findFirst(ClassOrInterfaceDeclaration.class).get().getNameAsString();
String addSourceName = "src/main/java/" + folderName + "/" + addFileName + ".java"; String addSourceName = "src/main/java/" + folderName + "/" + addFileName + ".java";
String addSource = prettyPrinter.print(cu); String addSource = prettyPrinter.print(cu);
pkgModel.sysout(addSource); pkgModel.logRule(addSource);
byte[] addBytes = addSource.getBytes(); byte[] addBytes = addSource.getBytes();
srcMfs.write(addSourceName, addBytes); srcMfs.write(addSourceName, addBytes);
sourceFiles.add(addSourceName); sourceFiles.add(addSourceName);
Expand Down
Expand Up @@ -54,12 +54,17 @@
import org.drools.modelcompiler.builder.generator.QueryGenerator; import org.drools.modelcompiler.builder.generator.QueryGenerator;
import org.drools.modelcompiler.builder.generator.QueryParameter; import org.drools.modelcompiler.builder.generator.QueryParameter;
import org.kie.api.runtime.rule.AccumulateFunction; import org.kie.api.runtime.rule.AccumulateFunction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import static org.drools.core.util.StringUtils.generateUUID; import static org.drools.core.util.StringUtils.generateUUID;
import static org.drools.modelcompiler.builder.generator.DrlxParseUtil.toVar; import static org.drools.modelcompiler.builder.generator.DrlxParseUtil.toVar;


public class PackageModel { public class PackageModel {


private static final Logger logger = LoggerFactory.getLogger(PackageModel.class);


private static final String RULES_FILE_NAME = "Rules"; private static final String RULES_FILE_NAME = "Rules";


private static final int RULES_PER_CLASS = 20; private static final int RULES_PER_CLASS = 20;
Expand Down Expand Up @@ -425,10 +430,10 @@ private static void addGlobalField(ClassOrInterfaceDeclaration classDeclaration,
field.getVariables().get(0).setInitializer(declarationOfCall); field.getVariables().get(0).setInitializer(declarationOfCall);
} }


public void sysout(String source) { public void logRule(String source) {
System.out.println("====="); logger.debug("=====");
System.out.println(source); logger.debug(source);
System.out.println("====="); logger.debug("=====");
} }


public void addAccumulateFunctions(Map<String, AccumulateFunction> accumulateFunctions) { public void addAccumulateFunctions(Map<String, AccumulateFunction> accumulateFunctions) {
Expand Down
Expand Up @@ -412,6 +412,10 @@ public static DrlxExpression parseExpression(String expression) {
return DrlxParser.parseExpression(DrlxParser.buildDrlxParserWithArguments(OperatorsHolder.operators), expression); return DrlxParser.parseExpression(DrlxParser.buildDrlxParserWithArguments(OperatorsHolder.operators), expression);
} }


public static Class<?> getClassFromType(TypeResolver typeResolver, Type type) {
return getClassFromContext(typeResolver, type.asString());
}

public static Class<?> getClassFromContext(TypeResolver typeResolver, String className) { public static Class<?> getClassFromContext(TypeResolver typeResolver, String className) {
Class<?> patternType; Class<?> patternType;
try { try {
Expand Down

0 comments on commit 957cc1a

Please sign in to comment.