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;
}
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);
}
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);
}
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);
}
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());
}
Aggregations