Search in sources :

Example 16 with ClassOrInterfaceDeclaration

use of com.github.javaparser.ast.body.ClassOrInterfaceDeclaration in project drools by kiegroup.

the class RuleWriter method getRuleSources.

public List<RuleFileSource> getRuleSources() {
    List<RuleFileSource> rules = new ArrayList<>();
    for (CompilationUnit cu : rulesSource.getModelClasses()) {
        final Optional<ClassOrInterfaceDeclaration> classOptional = cu.findFirst(ClassOrInterfaceDeclaration.class);
        if (classOptional.isPresent()) {
            String addFileName = classOptional.get().getNameAsString();
            if (EXTERNALIZE_LAMBDAS && pkgModel.getConfiguration().isExternaliseCanonicalModelLambda()) {
                new ExecModelLambdaPostProcessor(pkgModel, cu).convertLambdas();
                if (checkNonExternalisedLambda) {
                    checkNonExternalisedLambda(cu);
                }
                rules.add(new RuleFileSource(addFileName, cu));
            } else {
                rules.add(new RuleFileSource(addFileName, cu));
            }
        }
    }
    return rules;
}
Also used : CompilationUnit(com.github.javaparser.ast.CompilationUnit) ClassOrInterfaceDeclaration(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) ArrayList(java.util.ArrayList) ExecModelLambdaPostProcessor(org.drools.modelcompiler.util.lambdareplace.ExecModelLambdaPostProcessor)

Example 17 with ClassOrInterfaceDeclaration

use of com.github.javaparser.ast.body.ClassOrInterfaceDeclaration in project drools by kiegroup.

the class GeneratedClassDeclarationTest method testClassWithMethod.

@Test
public void testClassWithMethod() {
    TestTypeDefinition typeDefinition = new TestTypeDefinition("TestClass");
    TestMethodDefinition methodDefinition = new TestMethodDefinition("methodName1", "int", "{ return 0; }");
    typeDefinition.getMethods().add(methodDefinition);
    GeneratedClassDeclaration generatedClassDeclaration = new GeneratedClassDeclaration(typeDefinition);
    ClassOrInterfaceDeclaration actual = generatedClassDeclaration.toClassDeclaration();
    String expectedClass = "public class TestClass implements java.io.Serializable {\n" + "\n" + "    public TestClass() {\n" + "    }\n" + "\n" + "    @java.lang.Override()\n" + "    public java.lang.String toString() {\n" + "        return \"TestClass\" + \"( \" + \" )\";\n" + "    }\n" + "\n" + "    int methodName1() {\n" + "        return 0;\n" + "    }\n" + "}";
    verifyBodyWithBetterDiff(expectedClass, actual);
}
Also used : ClassOrInterfaceDeclaration(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) Test(org.junit.Test)

Example 18 with ClassOrInterfaceDeclaration

use of com.github.javaparser.ast.body.ClassOrInterfaceDeclaration in project drools by kiegroup.

the class GeneratedClassDeclarationTest method testClassGenerationWithField.

@Test
public void testClassGenerationWithField() {
    TestTypeDefinition typeDefinition = new TestTypeDefinition("TestClass");
    typeDefinition.fields.add(new TestFieldDefinition(false, "objectField", Object.class.getCanonicalName()));
    GeneratedClassDeclaration generatedClassDeclaration = new GeneratedClassDeclaration(typeDefinition);
    ClassOrInterfaceDeclaration actual = generatedClassDeclaration.toClassDeclaration();
    String expected = "public class TestClass implements java.io.Serializable {\n" + "\n" + "    public TestClass() {\n" + "    }\n" + "\n" + "    private java.lang.Object objectField;\n" + "\n" + "    public TestClass(java.lang.Object objectField) {\n" + "        super();\n" + "        this.objectField = objectField;\n" + "    }\n" + "\n" + "    @java.lang.Override()\n" + "    public java.lang.String toString() {\n" + "        return \"TestClass\" + \"( \" + \"objectField=\" + objectField + \" )\";\n" + "    }\n" + "}\n";
    verifyBodyWithBetterDiff(expected, actual);
}
Also used : ClassOrInterfaceDeclaration(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) Test(org.junit.Test)

Example 19 with ClassOrInterfaceDeclaration

use of com.github.javaparser.ast.body.ClassOrInterfaceDeclaration in project drools by kiegroup.

the class BlockGenerator method generateClass.

private static void generateClass(int arity) throws IOException {
    cloneCU = templateCU.clone();
    ClassOrInterfaceDeclaration blockClass = cloneCU.getInterfaceByName("BlockTemplate").orElseThrow(() -> new RuntimeException("Main class not found"));
    blockClass.setName(arityName(arity));
    templateInnerClass = blockClass.findFirst(ClassOrInterfaceDeclaration.class, c -> "Impl".equals(c.getNameAsString())).orElseThrow(() -> new RuntimeException("Inner class not found"));
    cloneCU.findAll(Type.class, t -> "BlockTemplate".equals(t.asString())).forEach(t -> t.replace(toClassOrInterfaceType(arityName(arity))));
    replaceGenericType(arity, blockClass, templateInnerClass);
    Path newFilePath = Paths.get(String.format("/tmp/block-classes/Block%d.java", arity));
    Path parent = newFilePath.getParent();
    try {
        Files.createDirectories(parent);
    } catch (FileAlreadyExistsException e) {
    }
    Files.write(newFilePath, cloneCU.toString().getBytes(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
}
Also used : IntStream(java.util.stream.IntStream) ArrayAccessExpr(com.github.javaparser.ast.expr.ArrayAccessExpr) ClassOrInterfaceType(com.github.javaparser.ast.type.ClassOrInterfaceType) ExpressionStmt(com.github.javaparser.ast.stmt.ExpressionStmt) Parameter(com.github.javaparser.ast.body.Parameter) Type(com.github.javaparser.ast.type.Type) Expression(com.github.javaparser.ast.expr.Expression) CompilationUnit(com.github.javaparser.ast.CompilationUnit) Path(java.nio.file.Path) IntFunction(java.util.function.IntFunction) NodeList(com.github.javaparser.ast.NodeList) Files(java.nio.file.Files) TypeParameter(com.github.javaparser.ast.type.TypeParameter) MethodCallExpr(com.github.javaparser.ast.expr.MethodCallExpr) StandardOpenOption(java.nio.file.StandardOpenOption) DrlxParseUtil.toClassOrInterfaceType(org.drools.modelcompiler.builder.generator.DrlxParseUtil.toClassOrInterfaceType) IOException(java.io.IOException) NameExpr(com.github.javaparser.ast.expr.NameExpr) FileAlreadyExistsException(java.nio.file.FileAlreadyExistsException) Collectors(java.util.stream.Collectors) List(java.util.List) StaticJavaParser(com.github.javaparser.StaticJavaParser) Stream(java.util.stream.Stream) Paths(java.nio.file.Paths) MethodDeclaration(com.github.javaparser.ast.body.MethodDeclaration) BlockStmt(com.github.javaparser.ast.stmt.BlockStmt) ClassOrInterfaceDeclaration(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) IntegerLiteralExpr(com.github.javaparser.ast.expr.IntegerLiteralExpr) Path(java.nio.file.Path) ClassOrInterfaceType(com.github.javaparser.ast.type.ClassOrInterfaceType) Type(com.github.javaparser.ast.type.Type) DrlxParseUtil.toClassOrInterfaceType(org.drools.modelcompiler.builder.generator.DrlxParseUtil.toClassOrInterfaceType) FileAlreadyExistsException(java.nio.file.FileAlreadyExistsException) ClassOrInterfaceDeclaration(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration)

Example 20 with ClassOrInterfaceDeclaration

use of com.github.javaparser.ast.body.ClassOrInterfaceDeclaration in project drools by kiegroup.

the class POJOGenerator method createPOJO.

private void createPOJO(TypeDeclarationDescr typeDescr) {
    SafeTypeResolver typeResolver = new SafeTypeResolver(pkg.getTypeResolver());
    DescrTypeDefinition descrDeclaredTypeDefinition = new DescrTypeDefinition(packageDescr, typeDescr, typeResolver);
    descrDeclaredTypeDefinition.getErrors().forEach(builder::addBuilderResult);
    // Implemented types should be probably in
    ClassOrInterfaceDeclaration generatedClass = new GeneratedClassDeclaration(descrDeclaredTypeDefinition, MARKER_INTERFACES).toClassDeclaration();
    packageModel.addGeneratedPOJO(generatedClass);
    addTypeMetadata(typeDescr.getTypeName());
}
Also used : GeneratedClassDeclaration(org.drools.modelcompiler.builder.generator.declaredtype.generator.GeneratedClassDeclaration) ClassOrInterfaceDeclaration(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration)

Aggregations

ClassOrInterfaceDeclaration (com.github.javaparser.ast.body.ClassOrInterfaceDeclaration)261 Test (org.junit.Test)174 CompilationUnit (com.github.javaparser.ast.CompilationUnit)164 MethodDeclaration (com.github.javaparser.ast.body.MethodDeclaration)84 ReflectionTypeSolver (com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver)79 AbstractResolutionTest (com.github.javaparser.symbolsolver.resolution.AbstractResolutionTest)71 MethodCallExpr (com.github.javaparser.ast.expr.MethodCallExpr)52 Context (com.github.javaparser.symbolsolver.core.resolution.Context)39 ClassOrInterfaceDeclarationContext (com.github.javaparser.symbolsolver.javaparsermodel.contexts.ClassOrInterfaceDeclarationContext)38 CompilationUnitContext (com.github.javaparser.symbolsolver.javaparsermodel.contexts.CompilationUnitContext)37 ResolvedType (com.github.javaparser.resolution.types.ResolvedType)36 Expression (com.github.javaparser.ast.expr.Expression)33 TypeSolver (com.github.javaparser.symbolsolver.model.resolution.TypeSolver)28 JavaParserFacade (com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade)27 MemoryTypeSolver (com.github.javaparser.symbolsolver.resolution.typesolvers.MemoryTypeSolver)24 HashMap (java.util.HashMap)21 VariableDeclarator (com.github.javaparser.ast.body.VariableDeclarator)20 ResolvedMethodDeclaration (com.github.javaparser.resolution.declarations.ResolvedMethodDeclaration)20 KiePMMLException (org.kie.pmml.api.exceptions.KiePMMLException)20 BlockStmt (com.github.javaparser.ast.stmt.BlockStmt)19