use of com.github.javaparser.ast.expr.CastExpr 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.CastExpr 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.CastExpr in project drools by kiegroup.
the class CastExprT method toJavaExpression.
@Override
public Node toJavaExpression() {
com.github.javaparser.ast.type.Type jpType = StaticJavaParser.parseType(this.type.getCanonicalName());
Expression expression = (Expression) innerExpr.toJavaExpression();
return new EnclosedExpr(new CastExpr(jpType, expression));
}
use of com.github.javaparser.ast.expr.CastExpr 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);
}
}
}
use of com.github.javaparser.ast.expr.CastExpr in project drools by kiegroup.
the class DrlxParseUtil method findRootNodeViaScopeRec.
private static RemoveRootNodeResult findRootNodeViaScopeRec(Expression expr, LinkedList<Expression> acc) {
if (expr.isArrayAccessExpr()) {
throw new RuntimeException("This doesn't work on arrayAccessExpr convert them to a method call");
}
if (expr instanceof EnclosedExpr) {
return findRootNodeViaScopeRec(expr.asEnclosedExpr().getInner(), acc);
} else if (expr instanceof CastExpr) {
return findRootNodeViaScopeRec(expr.asCastExpr().getExpression(), acc);
} else if (expr instanceof ThisExpr) {
return new RemoveRootNodeResult(Optional.of(expr), expr, expr);
} else if (expr instanceof NodeWithTraversableScope) {
final NodeWithTraversableScope exprWithScope = (NodeWithTraversableScope) expr;
return exprWithScope.traverseScope().flatMap((Expression scope) -> {
if (isDslTopLevelNamespace(scope)) {
return empty();
}
Expression sanitizedExpr = DrlxParseUtil.transformDrlNameExprToNameExpr(expr);
acc.addLast(sanitizedExpr.clone());
return of(findRootNodeViaScopeRec(scope, acc));
}).orElse(new RemoveRootNodeResult(Optional.of(expr), expr, acc.isEmpty() ? expr : acc.getLast()));
} else if (expr instanceof NameExpr) {
if (!acc.isEmpty() && acc.getLast() instanceof NodeWithOptionalScope<?>) {
((NodeWithOptionalScope<?>) acc.getLast()).setScope(null);
for (ListIterator<Expression> iterator = acc.listIterator(); iterator.hasNext(); ) {
Expression e = iterator.next();
if (e instanceof NodeWithOptionalScope) {
NodeWithOptionalScope<?> node = (NodeWithOptionalScope<?>) e;
if (iterator.hasNext()) {
node.setScope(acc.get(iterator.nextIndex()));
}
}
}
return new RemoveRootNodeResult(Optional.of(expr), acc.getFirst(), acc.getLast());
} else {
return new RemoveRootNodeResult(Optional.of(expr), expr, expr);
}
}
return new RemoveRootNodeResult(empty(), expr, expr);
}
Aggregations