use of com.github.javaparser.ast.expr.VariableDeclarationExpr in project drools by kiegroup.
the class VariableDeclaratorTExpr method toJavaExpression.
@Override
public Node toJavaExpression() {
Optional<Type> optInitType = initExpression.flatMap(TypedExpression::getType);
com.github.javaparser.ast.type.Type jpType = toJPType(this.type);
return initExpression.map(ie -> {
Expression initializer = (Expression) ie.toJavaExpression();
// Used to downcast map.get see testAddCastToMapGetOfDeclaration
if (!optInitType.isPresent() || optInitType.get().equals(Object.class)) {
initializer = new CastExpr(jpType, new EnclosedExpr(initializer));
}
return (Node) new VariableDeclarationExpr(new VariableDeclarator(jpType, name, initializer));
}).orElse(new VariableDeclarationExpr(jpType, name));
}
use of com.github.javaparser.ast.expr.VariableDeclarationExpr in project drools by kiegroup.
the class ForEachDowncastStmtT method toJavaExpression.
@Override
public Node toJavaExpression() {
ForEachStmt newForEachStmt = new ForEachStmt();
BlockStmt body = new BlockStmt();
NodeList<VariableDeclarator> variables = nodeList();
for (VariableDeclarator v : variableDeclarationExpr.getVariables()) {
VariableDeclarator newVariable = v.clone();
String newIteratorVariable = "_" + v.getNameAsString();
VariableDeclarationExpr castAssign = new VariableDeclarationExpr(new VariableDeclarator(v.getType(), v.getName(), new CastExpr(v.getType(), new NameExpr(newIteratorVariable))));
body.addStatement(0, castAssign);
newVariable.setType(Object.class);
newVariable.setName(newIteratorVariable);
variables.add(newVariable);
}
body.addStatement((BlockStmt) child.toJavaExpression());
newForEachStmt.setBody(body);
VariableDeclarationExpr newVariables = new VariableDeclarationExpr(variables);
newForEachStmt.setVariable(newVariables);
return new ForEachStmt(newVariables, new NameExpr(iterable), body);
}
use of com.github.javaparser.ast.expr.VariableDeclarationExpr in project drools by kiegroup.
the class AccumulateInline method parseInitBlock.
private void parseInitBlock() {
MethodDeclaration initMethod = getMethodFromTemplateClass("init");
String mvelBlock = addCurlyBracesToBlock(addSemicolon(accumulateDescr.getInitCode()));
CompiledBlockResult initCodeCompilationResult = mvelCompiler.compileStatement(mvelBlock);
BlockStmt initBlock = initCodeCompilationResult.statementResults();
for (Statement stmt : initBlock.getStatements()) {
final BlockStmt initMethodBody = initMethod.getBody().orElseThrow(InvalidInlineTemplateException::new);
if (stmt.isExpressionStmt() && stmt.asExpressionStmt().getExpression().isVariableDeclarationExpr()) {
VariableDeclarationExpr vdExpr = stmt.asExpressionStmt().getExpression().asVariableDeclarationExpr();
for (VariableDeclarator vd : vdExpr.getVariables()) {
final String variableName = vd.getNameAsString();
contextFieldNames.add(variableName);
contextData.addField(vd.getType(), variableName, Modifier.publicModifier().getKeyword());
Optional<Expression> optInitializer = vd.getInitializer();
optInitializer.ifPresent(initializer -> {
Expression target = new FieldAccessExpr(getDataNameExpr(), variableName);
Statement initStmt = new ExpressionStmt(new AssignExpr(target, initializer, AssignExpr.Operator.ASSIGN));
initMethodBody.addStatement(initStmt);
initStmt.findAll(NameExpr.class).stream().map(Node::toString).filter(context::hasDeclaration).forEach(usedExternalDeclarations::add);
});
accumulateDeclarations.add(new DeclarationSpec(variableName, DrlxParseUtil.getClassFromContext(context.getTypeResolver(), vd.getType().asString())));
}
}
}
}
use of com.github.javaparser.ast.expr.VariableDeclarationExpr in project drools by kiegroup.
the class MaterializedLambdaPredicate method createPredicateInformationMethod.
private void createPredicateInformationMethod(EnumDeclaration classDeclaration) {
MethodDeclaration methodDeclaration = classDeclaration.addMethod("predicateInformation", Modifier.Keyword.PUBLIC);
methodDeclaration.addAnnotation("Override");
ClassOrInterfaceType predicateInformationType = toClassOrInterfaceType(PredicateInformation.class);
methodDeclaration.setType(predicateInformationType);
BlockStmt block = new BlockStmt();
NameExpr infoExpr = new NameExpr("info");
VariableDeclarationExpr infoVar = new VariableDeclarationExpr(toClassOrInterfaceType(PredicateInformation.class), "info");
NodeList<Expression> newPredicateInformationArguments = NodeList.nodeList(toStringLiteral(StringEscapeUtils.escapeJava(predicateInformation.getStringConstraint())));
ObjectCreationExpr newPredicateInformation = new ObjectCreationExpr(null, predicateInformationType, newPredicateInformationArguments);
block.addStatement(new AssignExpr(infoVar, newPredicateInformation, AssignExpr.Operator.ASSIGN));
int i = 0;
NodeList<Expression> addRuleNamesArguments = null;
for (PredicateInformation.RuleDef ruleDef : predicateInformation.getRuleDefs()) {
if (i++ % 125 == 0) {
addRuleNamesArguments = NodeList.nodeList();
block.addStatement(new MethodCallExpr(infoExpr, "addRuleNames", addRuleNamesArguments));
}
addRuleNamesArguments.add(toStringLiteral(ruleDef.getRuleName()));
addRuleNamesArguments.add(toStringLiteral(ruleDef.getFileName()));
}
if (predicateInformation.isMoreThanMaxRuleDefs()) {
block.addStatement(new MethodCallExpr(infoExpr, "setMoreThanMaxRuleDefs", NodeList.nodeList(new BooleanLiteralExpr(true))));
}
block.addStatement(new ReturnStmt(infoExpr));
methodDeclaration.setBody(block);
}
use of com.github.javaparser.ast.expr.VariableDeclarationExpr in project drools by kiegroup.
the class EvaluatorGenerator method createContextVariableAssignments.
private void createContextVariableAssignments(Map.Entry<String, Object> entry) {
String binding = entry.getKey();
Object contextVar = entry.getValue();
if (contextVar != null) {
Class<?> contextVarClass = contextVar instanceof Class ? (Class<? extends Object>) contextVar : contextVar.getClass();
if (contextVarClass != null && contextVarClass.getCanonicalName() != null) {
Type type = StaticJavaParser.parseType(contextVarClass.getCanonicalName());
VariableDeclarationExpr variable = new VariableDeclarationExpr(type, binding);
Expression indexMethodExpression = new CastExpr(type, new MethodCallExpr(new NameExpr("map"), "get", NodeList.nodeList(new StringLiteralExpr(binding))));
methodBody.addStatement(0, variable);
final Expression expr = new AssignExpr(new NameExpr(binding), indexMethodExpression, AssignExpr.Operator.ASSIGN);
bindingAssignmentBlock.addStatement(expr);
MethodCallExpr putExpr = new MethodCallExpr(new NameExpr("map"), "put", NodeList.nodeList(new StringLiteralExpr(binding), new NameExpr(binding)));
repopulateMapBlock.addStatement(putExpr);
}
}
}
Aggregations