private JavaMethod createMethod (MethodDeclaration method) { String className = classStack.peek().getName(); String name = method.getName(); boolean isStatic = ModifierSet.hasModifier(method.getModifiers(), ModifierSet.STATIC); String returnType = method.getType().toString(); ArrayList<Argument> arguments = new ArrayList<Argument>(); if (method.getParameters() != null) { for (Parameter parameter : method.getParameters()) { arguments.add(new Argument(getArgumentType(parameter), parameter.getId().getName())); } } return new JavaMethod(className, name, isStatic, returnType, null, arguments, method.getBeginLine(), method.getEndLine()); }
private JavaMethod createMethod (MethodDeclaration method) { String className = classStack.peek().getName(); String name = method.getName(); boolean isStatic = ModifierSet.hasModifier(method.getModifiers(), ModifierSet.STATIC); String returnType = method.getType().toString(); ArrayList<Argument> arguments = new ArrayList<Argument>(); if (method.getParameters() != null) { for (Parameter parameter : method.getParameters()) { arguments.add(new Argument(getArgumentType(parameter), parameter.getId().getName())); } } return new JavaMethod(className, name, isStatic, returnType, null, arguments, method.getBeginLine(), method.getEndLine()); }
public List<RouteParam> accept(final Node node, final Context ctx) { if (node instanceof LambdaExpr) { ((LambdaExpr) node).getParameters().forEach(p -> { names.add(p.getId().toStringWithoutComments()); }); } node.accept(this, ctx); return params; }
@Override public void visit(LambdaExpr n, A arg) { HashSet<String> blockVariables = newHashSet(); this.localVariables.addLast(blockVariables); try { for (Parameter parameter : emptyIfNull(n.getParameters())) { blockVariables.add(parameter.getId().getName()); } super.visit(n, arg); } finally { this.localVariables.removeLast(); } }
@SuppressWarnings("unchecked") @Override public boolean doIsEquals(Parameter first, Parameter second) { if(first.isVarArgs() != second.isVarArgs()) return false; if(!getMerger(VariableDeclaratorId.class).isEquals(first.getId(),second.getId())) return false; if(!first.getType().getClass().equals(second.getType().getClass())) return false; AbstractMerger merger = getMerger(first.getType().getClass()); if(!merger.isEquals(first.getType(),second.getType())) return false; return true; } }
@Override public void visit(ConstructorDeclaration n, A arg) { HashSet<String> blockVariables = newHashSet(); this.localVariables.addLast(blockVariables); try { for (Parameter parameter : emptyIfNull(n.getParameters())) { blockVariables.add(parameter.getId().getName()); } for (AnnotationExpr annotationExpr : emptyIfNull(n.getAnnotations())) { annotationExpr.accept(this, arg); } BlockStmt body = n.getBlock(); if (body != null) { visit(body, arg); } } finally { this.localVariables.removeLast(); } }
public RouteResponse accept(final Node node, final Context ctx, final Type retType, final String doc, final Map<Integer, String> codes) { this.type = retType; boolean lambda = node instanceof LambdaExpr; if (lambda) { ((LambdaExpr) node).getParameters() .forEach(p -> args.add(p.getId().toStringWithoutComments())); } if (this.type == null) { node.accept(this, ctx); if (type == null && lambda) { LambdaExpr expr = (LambdaExpr) node; if (expr.getChildrenNodes().size() == 1) { type = expr.getChildrenNodes().get(0).accept(new TypeCollector(), ctx); } } } return new RouteResponseImpl(this.type == null ? Object.class : this.type, doc, codes); }
@Override public void visit(MethodDeclaration n, A arg) { HashSet<String> blockVariables = newHashSet(); this.localVariables.addLast(blockVariables); try { for (Parameter parameter : emptyIfNull(n.getParameters())) { blockVariables.add(parameter.getId().getName()); } for (AnnotationExpr annotationExpr : emptyIfNull(n.getAnnotations())) { annotationExpr.accept(this, arg); } BlockStmt body = n.getBody(); if (body != null) { visit(body, arg); } } finally { this.localVariables.removeLast(); } }
public static List<Parameter> mergeParameters(List<Parameter> one, List<Parameter> two) { if (isAllNull(one, two) || !isAllNotNull(one, two)) return null; if (one.size() != two.size()) return null; List<Parameter> result = new ArrayList<>(); for (int index = 0; index < one.size(); index++) { Parameter p1 = one.get(index); Parameter p2 = two.get(index); Parameter np = new Parameter(); np.setType(mergeSelective(p1.getType(), p2.getType())); np.setComment(mergeSelective(p1.getComment(), p2.getComment())); np.setAnnotations(mergeListNoDuplicate(p1.getAnnotations(), p2.getAnnotations())); np.setVarArgs(p1.isVarArgs()); np.setId(p1.getId()); result.add(np); } return result; }
private JavaMethod createMethod (MethodDeclaration method) { String className = classStack.peek().getName(); String name = method.getName(); boolean isStatic = ModifierSet.hasModifier(method.getModifiers(), ModifierSet.STATIC); String returnType = method.getType().toString(); ArrayList<Argument> arguments = new ArrayList<Argument>(); if (method.getParameters() != null) { for (Parameter parameter : method.getParameters()) { arguments.add(new Argument(getArgumentType(parameter), parameter.getId().getName())); } } return new JavaMethod(className, name, isStatic, returnType, null, arguments, method.getBeginLine(), method.getEndLine()); }
/** * Visit the parameter of a Route method. * @param param Parameter of the route method. * @param route The route model that we construct. */ @Override public void visit(Parameter param, ControllerRouteModel route) { List<AnnotationExpr> annos = param.getAnnotations(); if(annos == null || annos.isEmpty()){ LOGGER.warn("[controller]The parameter " + param + "at line " + param.getBeginLine() + " " + "is for a route method but has not been annotated!"); return; } RouteParamModel routeParam = new RouteParamModel(); routeParam.setParamName(String.valueOf(param.getId())); routeParam.setName(routeParam.getParamName()); //by default, will be override if name is specified //Parsed the param (for the annotation) paramVisitor.visit(param,routeParam); if(routeParam.getParamType() == null){ //ignore if the param has not been visited (i.e no annotations) return; } //TODO some cleaning here! routeParam.setValueType(param.getType().toString()); route.addParam(routeParam); }
public void visit(final BlockStmt n, final RoutingDefineContext arg) { if (arg.isInRoutingDefine()) { MethodCallExpr call = new MethodCallExpr( ASTHelper.createNameExpr(arg.getRoutingParameter().getId().getName()), "resource"); ReferenceType rt = ASTHelper.createReferenceType(controllerClassName, 0); ASTHelper.addArgument(call, new ClassExpr(rt.getType())); ASTHelper.addStmt(n, call); } else { super.visit(n, arg); } }
@Override public Parameter doMerge(Parameter first, Parameter second) { Parameter parameter = new Parameter(); parameter.setType(first.getType()); parameter.setId(first.getId()); parameter.setVarArgs(first.isVarArgs()); parameter.setModifiers(mergeModifiers(first.getModifiers(), second.getModifiers())); parameter.setAnnotations(mergeCollections(first.getAnnotations(), second.getAnnotations())); return parameter; }