private Optional<Node> usePath(final MethodCallExpr it) { MethodCallExpr expr = AST.scopeOf(it); String name = expr.getName(); List<Expression> args = expr.getArgs(); if (name.equals("use") && args.size() == 1 && args.get(0) instanceof StringLiteralExpr) { return Optional.of(expr); } return Optional.empty(); }
private static class MyVisitor extends GenericVisitorAdapter { public Object visit(MethodCallExpr n, Object arg) { if ("setOneMoreWorkingLineWithServiceID".equals(n.getName())){ for (Expression expression : n.getArgs()) { System.out.println(expression.toString()); } } return super.visit(n, arg); } }
@Override public void visit(final MethodCallExpr n, final Context ctx) { if (args.size() > 1) { // req, rsp String var = scope(n); if (args.get(1).equals(var) && n.getName().equals("send")) { Type type = type(n.getArgs().get(0), ctx); this.type = type; } } }
private Type useMvc(final MethodCallExpr n, final Context ctx) { if ("use".equals(n.getName())) { List<Expression> args = n.getArgs(); if (args.size() == 1) { Expression arg = args.get(0); if (arg instanceof ClassExpr) { return arg.accept(new TypeCollector(), ctx); } } } return null; }
private int route(final MethodCallExpr expr, final Context ctx) { List<Expression> args = expr.getArgs(); if (args.size() == 1) { if (handler(args.get(0), ctx) != null) { return 1; } } // method(path, [path1, path2], handler()); if (args.size() < 5) { // method(path, lambda) Set<Type> types = new LinkedHashSet<>(); for (int i = 0; i < args.size() - 1; i++) { types.add(args.get(i).accept(new TypeCollector(), ctx)); } boolean str = types.size() == 1 && types.contains(String.class); if (str && handler(args.get(args.size() - 1), ctx) != null) { return args.size() - 1; } } return 0; }
@Override public void visit(final MethodCallExpr node, final Context ctx) { List<MethodCallExpr> nodes = dump(node); for (MethodCallExpr n : nodes) { List<MethodCallExpr> call = call(n); if (call.size() > 0) { MethodCallExpr cparam = call.get(0); String cname = cparam.getName(); String pname = cparam.getArgs().stream() .findFirst() .map(it -> ((StringLiteralExpr) it).getValue()) .orElse(BODY); Entry<Type, Object> typeDef = type(call.get(call.size() - 1), ctx); String doc = (String) this.doc.get(pname.equals(BODY) ? "body" : pname); params.add(new RouteParamImpl(pname, typeDef.getKey(), type(typeDef.getKey(), pname, cname), typeDef.getValue(), doc)); } } }
String cname = call.get(0).getName(); if ("param".equals(cname) || "header".equals(cname)) { List<Expression> args = call.get(0).getArgs(); if (args.size() == 1 && args.get(0) instanceof StringLiteralExpr) { return call; List<Expression> args = call.get(0).getArgs(); if (args.size() == 0) { return call; String cname = call.get(0).getName(); if ("file".equals(cname) || "files".equals(cname)) { List<Expression> args = call.get(0).getArgs(); if (args.size() == 1 && args.get(0) instanceof StringLiteralExpr) { return call;
private Map<String, Object> doc(final MethodCallExpr expr, final Context ctx) { if (expr.getScope() == null) { return doc(expr.getParentNode(), ctx); } else { List<Expression> args = expr.getArgs(); if (args.size() > 0) { return doc(args.get(0), ctx); } } return null; }
private Type importApp(final MethodCallExpr n, final Context ctx) { Function<Expression, Type> type = expr -> { if (expr instanceof ObjectCreationExpr) { ClassOrInterfaceType t = ((ObjectCreationExpr) expr).getType(); Optional<java.lang.reflect.Type> resolved = ctx.resolveType(n, t.toStringWithoutComments()); if (resolved.isPresent()) { Type c = resolved.get(); if (isJooby(c)) { return c; } } } return null; }; if ("use".equals(n.getName())) { List<Expression> args = n.getArgs(); if (args.size() == 2) { return type.apply(args.get(1)); } if (args.size() == 1) { return type.apply(args.get(0)); } } return null; }
@Override public void visit(final MethodCallExpr n, final Context ctx) { if (script) { Type mvcClass = useMvc(n, ctx); if (mvcClass != null) { mvcRoutes(n, mvcClass, ctx); } else { Type appType = importApp(n, ctx); if (appType != null) { importRoutes(appType, ctx); } else { List<MethodCallExpr> routes = routes(n, ctx); for (MethodCallExpr route : routes) { Optional<LambdaExpr> lambda = route.getArgs().stream() .map(it -> handler(it, ctx)) .filter(it -> it != null) .findFirst(); this.nodes.add(Maps.immutableEntry(route, lambda.get())); } } } } }
@Override public boolean doIsEquals(MethodCallExpr first, MethodCallExpr second) { if(!isEqualsUseMerger(first.getNameExpr(),second.getNameExpr())) return false; if(!isEqualsUseMerger(first.getTypeArgs(),second.getTypeArgs())) return false; if(!isEqualsUseMerger(first.getScope(),second.getScope())) return false; if(!isEqualsUseMerger(first.getArgs(),second.getArgs())) return false; return true; } }
public Object visit(MethodCallExpr n, Object arg) { if ("setOneMoreWorkingLineWithServiceID".equals(n.getName())){ System.out.println(n.getArgs());
List<Expression> args = methodCall.getArgs(); if (args != null) handleExpressions(args);
List<Expression> args = expr.getArgs(); if (args.size() > 0) { Expression arg = args.get(0);
@Override public MethodCallExpr doMerge(MethodCallExpr first, MethodCallExpr second) { MethodCallExpr mce = new MethodCallExpr(); mce.setNameExpr(mergeSingle(first.getNameExpr(),second.getNameExpr())); mce.setArgs(mergeCollectionsInOrder(first.getArgs(),second.getArgs())); mce.setScope(mergeSingle(first.getScope(),second.getScope())); mce.setTypeArgs(mergeCollectionsInOrder(first.getTypeArgs(),second.getTypeArgs())); return mce; }