private ArgumentType getArgumentType (Parameter parameter) { String[] typeTokens = parameter.getType().toString().split("\\."); String type = typeTokens[typeTokens.length - 1]; int arrayDim = 0; for (int i = 0; i < type.length(); i++) { if (type.charAt(i) == '[') arrayDim++; } type = type.replace("[", "").replace("]", ""); if (arrayDim >= 1) { if (arrayDim > 1) return ArgumentType.ObjectArray; ArgumentType arrayType = arrayTypes.get(type); if (arrayType == null) { return ArgumentType.ObjectArray; } return arrayType; } if (plainOldDataTypes.containsKey(type)) return plainOldDataTypes.get(type); if (bufferTypes.containsKey(type)) return bufferTypes.get(type); if (otherTypes.containsKey(type)) return otherTypes.get(type); return ArgumentType.Object; }
private ArgumentType getArgumentType (Parameter parameter) { String[] typeTokens = parameter.getType().toString().split("\\."); String type = typeTokens[typeTokens.length - 1]; int arrayDim = 0; for (int i = 0; i < type.length(); i++) { if (type.charAt(i) == '[') arrayDim++; } type = type.replace("[", "").replace("]", ""); if (arrayDim >= 1) { if (arrayDim > 1) return ArgumentType.ObjectArray; ArgumentType arrayType = arrayTypes.get(type); if (arrayType == null) { return ArgumentType.ObjectArray; } return arrayType; } if (plainOldDataTypes.containsKey(type)) return plainOldDataTypes.get(type); if (bufferTypes.containsKey(type)) return bufferTypes.get(type); if (otherTypes.containsKey(type)) return otherTypes.get(type); return ArgumentType.Object; }
private String getParmTypeName(List<Parameter> p, int i) { return getTypeName(p.get(i).getType()); }
@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; } }
public static boolean isExplicitlyTyped(LambdaExpr lambdaExpr) { return lambdaExpr.getParameters().stream().allMatch(p -> !(p.getType() instanceof UnknownType)); }
private boolean isImplicitlyTyped(LambdaExpr lambdaExpr) { return lambdaExpr.getParameters().stream().anyMatch(p -> p.getType() instanceof UnknownType); }
private boolean isImplicitlyTyped(LambdaExpr lambdaExpr) { return lambdaExpr.getParameters().stream().anyMatch(p -> p.getType() instanceof UnknownType); }
private boolean isImplicitlyTyped(LambdaExpr lambdaExpr) { return lambdaExpr.getParameters().stream().anyMatch(p -> p.getType() instanceof UnknownType); }
public static boolean isExplicitlyTyped(LambdaExpr lambdaExpr) { return lambdaExpr.getParameters().stream().allMatch(p -> !(p.getType() instanceof UnknownType)); }
public static boolean isExplicitlyTyped(LambdaExpr lambdaExpr) { return lambdaExpr.getParameters().stream().allMatch(p -> !(p.getType() instanceof UnknownType)); }
@Override public ResolvedType getType() { if (wrappedNode.getType() instanceof UnknownType && JavaParserFactory.getContext(wrappedNode, typeSolver) instanceof LambdaExprContext) { Optional<Value> value = JavaParserFactory.getContext(wrappedNode, typeSolver).solveSymbolAsValue(wrappedNode.getNameAsString()); if (value.isPresent()) { return value.get().getType(); } } ResolvedType res = JavaParserFacade.get(typeSolver).convert(wrappedNode.getType(), wrappedNode); if (isVariadic()) { res = new ResolvedArrayType(res); } return res; }
@Override public ResolvedType getType() { if (wrappedNode.getType() instanceof UnknownType && JavaParserFactory.getContext(wrappedNode, typeSolver) instanceof LambdaExprContext) { Optional<Value> value = JavaParserFactory.getContext(wrappedNode, typeSolver).solveSymbolAsValue(wrappedNode.getNameAsString(), typeSolver); if (value.isPresent()) { return value.get().getType(); } } ResolvedType res = JavaParserFacade.get(typeSolver).convert(wrappedNode.getType(), wrappedNode); if (isVariadic()) { res = new ResolvedArrayType(res); } return res; }
@Override public ResolvedType getType() { if (wrappedNode.getType() instanceof UnknownType && JavaParserFactory.getContext(wrappedNode, typeSolver) instanceof LambdaExprContext) { Optional<Value> value = JavaParserFactory.getContext(wrappedNode, typeSolver).solveSymbolAsValue(wrappedNode.getNameAsString(), typeSolver); if (value.isPresent()) { return value.get().getType(); } } ResolvedType res = JavaParserFacade.get(typeSolver).convert(wrappedNode.getType(), wrappedNode); if (isVariadic()) { res = new ResolvedArrayType(res); } return res; }
/** * <b>Note:</b> This will not return the actual identifier but only the simple names of the types (return type & parameter types). * Doing a full type resolving with all imports adds too much complexity at this point. * This is a best-effort approach. */ private MethodIdentifier calculateMethodIdentifier(MethodDeclaration method) { String[] parameters = method.getParameters().stream() .map(p -> p.getType().asString()) .map(p -> p.replace('.', '/')) .toArray(String[]::new); String returnType = method.getType().asString().replace('.', '/'); if (method.isStatic()) { return ofStatic(className, method.getNameAsString(), returnType, parameters); } return ofNonStatic(className, method.getNameAsString(), returnType, parameters); }
public void index(com.github.javaparser.ast.body.Parameter parameter, int methodId) { io.github.benas.jql.model.Parameter p = new io.github.benas.jql.model.Parameter(parameter.getNameAsString(), parameter.getType().asString(), methodId); parameterDao.save(p); } }
@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; }
@Test public void resolveReferenceToJreType() throws ParseException, IOException { CompilationUnit cu = parseSample("NavigatorSimplified"); com.github.javaparser.ast.body.ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "Navigator"); MethodDeclaration method = Navigator.demandMethod(clazz, "foo"); com.github.javaparser.ast.type.Type streamJavaParserType = method.getParameters().get(0).getType(); TypeSolver typeSolver = new ReflectionTypeSolver(); ResolvedType streamType = JavaParserFacade.get(typeSolver).convert(streamJavaParserType, method); assertEquals("java.util.stream.Stream<java.lang.String>", streamType.describe()); }