/** * Try to solve a symbol just in the declaration, it does not delegate to the container. */ @Deprecated public SymbolReference<ResolvedTypeDeclaration> solveTypeInType(ResolvedTypeDeclaration typeDeclaration, String name) { if (typeDeclaration instanceof JavaParserClassDeclaration) { return ((JavaParserClassDeclaration) typeDeclaration).solveType(name, typeSolver); } if (typeDeclaration instanceof JavaParserInterfaceDeclaration) { return ((JavaParserInterfaceDeclaration) typeDeclaration).solveType(name, typeSolver); } return SymbolReference.unsolved(ResolvedReferenceTypeDeclaration.class); } }
/** * Try to solve a symbol just in the declaration, it does not delegate to the container. */ @Deprecated public SymbolReference<ResolvedTypeDeclaration> solveTypeInType(ResolvedTypeDeclaration typeDeclaration, String name) { if (typeDeclaration instanceof JavaParserClassDeclaration) { return ((JavaParserClassDeclaration) typeDeclaration).solveType(name, typeSolver); } if (typeDeclaration instanceof JavaParserInterfaceDeclaration) { return ((JavaParserInterfaceDeclaration) typeDeclaration).solveType(name, typeSolver); } return SymbolReference.unsolved(ResolvedReferenceTypeDeclaration.class); } }
/** * Try to solve a symbol just in the declaration, it does not delegate to the container. * * @deprecated Similarly to solveType this should eventually disappear as the symbol resolution logic should be more general * and do not be specific to JavaParser classes like in this case. */ @Deprecated public SymbolReference<ResolvedTypeDeclaration> solveTypeInType(ResolvedTypeDeclaration typeDeclaration, String name) { if (typeDeclaration instanceof JavaParserClassDeclaration) { return ((JavaParserClassDeclaration) typeDeclaration).solveType(name); } if (typeDeclaration instanceof JavaParserInterfaceDeclaration) { return ((JavaParserInterfaceDeclaration) typeDeclaration).solveType(name); } return SymbolReference.unsolved(ResolvedReferenceTypeDeclaration.class); } }
@Deprecated public SymbolReference<ResolvedTypeDeclaration> solveType(String name, TypeSolver typeSolver) { if (this.wrappedNode.getName().getId().equals(name)) { return SymbolReference.solved(this); } SymbolReference<ResolvedTypeDeclaration> ref = javaParserTypeAdapter.solveType(name, typeSolver); if (ref.isSolved()) { return ref; } String prefix = wrappedNode.getName() + "."; if (name.startsWith(prefix) && name.length() > prefix.length()) { return new JavaParserClassDeclaration(this.wrappedNode, typeSolver).solveType(name.substring(prefix.length()), typeSolver); } return getContext().getParent().solveType(name, typeSolver); }
@Override public boolean hasDirectlyAnnotation(String canonicalName) { for (AnnotationExpr annotationExpr : wrappedNode.getAnnotations()) { if (solveType(annotationExpr.getName().getId(), typeSolver).getCorrespondingDeclaration().getQualifiedName().equals(canonicalName)) { return true; } } return false; }
@Deprecated public SymbolReference<ResolvedTypeDeclaration> solveType(String name, TypeSolver typeSolver) { if (this.wrappedNode.getName().getId().equals(name)) { return SymbolReference.solved(this); } SymbolReference<ResolvedTypeDeclaration> ref = javaParserTypeAdapter.solveType(name, typeSolver); if (ref.isSolved()) { return ref; } String prefix = wrappedNode.getName() + "."; if (name.startsWith(prefix) && name.length() > prefix.length()) { return new JavaParserClassDeclaration(this.wrappedNode, typeSolver).solveType(name.substring(prefix.length()), typeSolver); } return getContext().getParent().solveType(name, typeSolver); }
@Override public boolean hasDirectlyAnnotation(String canonicalName) { for (AnnotationExpr annotationExpr : wrappedNode.getAnnotations()) { if (solveType(annotationExpr.getName().getId(), typeSolver).getCorrespondingDeclaration().getQualifiedName().equals(canonicalName)) { return true; } } return false; }
/** * Resolution should move out of declarations, so that they are pure declarations and the resolution should * work for JavaParser, Reflection and Javassist classes in the same way and not be specific to the three * implementations. */ @Deprecated public SymbolReference<ResolvedTypeDeclaration> solveType(String name) { if (this.wrappedNode.getName().getId().equals(name)) { return SymbolReference.solved(this); } SymbolReference<ResolvedTypeDeclaration> ref = javaParserTypeAdapter.solveType(name); if (ref.isSolved()) { return ref; } String prefix = wrappedNode.getName() + "."; if (name.startsWith(prefix) && name.length() > prefix.length()) { return new JavaParserClassDeclaration(this.wrappedNode, typeSolver).solveType(name.substring(prefix.length())); } return getContext().getParent().solveType(name); }
return new JavaParserClassDeclaration((com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) internalType, typeSolver).solveType(name.substring(prefix.length()), typeSolver); } else if (internalType instanceof EnumDeclaration) { return new SymbolSolver(typeSolver).solveTypeInType(new JavaParserEnumDeclaration((com.github.javaparser.ast.body.EnumDeclaration) internalType, typeSolver), name.substring(prefix.length()));
return new JavaParserClassDeclaration((com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) internalType, typeSolver).solveType(name.substring(prefix.length()), typeSolver); } else if (internalType instanceof EnumDeclaration) { return new SymbolSolver(typeSolver).solveTypeInType(new JavaParserEnumDeclaration((com.github.javaparser.ast.body.EnumDeclaration) internalType, typeSolver), name.substring(prefix.length()));
private ResolvedReferenceType toReferenceType(ClassOrInterfaceType classOrInterfaceType) { String className = classOrInterfaceType.getName().getId(); if (classOrInterfaceType.getScope().isPresent()) { // look for the qualified name (for example class of type Rectangle2D.Double) className = classOrInterfaceType.getScope().get().toString() + "." + className; } SymbolReference<ResolvedTypeDeclaration> ref = solveType(className); if (!ref.isSolved()) { Optional<ClassOrInterfaceType> localScope = classOrInterfaceType.getScope(); if (localScope.isPresent()) { String localName = localScope.get().getName().getId() + "." + classOrInterfaceType.getName().getId(); ref = solveType(localName); } } if (!ref.isSolved()) { throw new UnsolvedSymbolException(classOrInterfaceType.getName().getId()); } if (!classOrInterfaceType.getTypeArguments().isPresent()) { return new ReferenceTypeImpl(ref.getCorrespondingDeclaration().asReferenceType(), typeSolver); } List<ResolvedType> superClassTypeParameters = classOrInterfaceType.getTypeArguments().get() .stream().map(ta -> new LazyType(v -> JavaParserFacade.get(typeSolver).convert(ta, ta))) .collect(Collectors.toList()); return new ReferenceTypeImpl(ref.getCorrespondingDeclaration().asReferenceType(), superClassTypeParameters, typeSolver); } }
private ResolvedReferenceType toReferenceType(ClassOrInterfaceType classOrInterfaceType) { String className = classOrInterfaceType.getName().getId(); if (classOrInterfaceType.getScope().isPresent()) { // look for the qualified name (for example class of type Rectangle2D.Double) className = classOrInterfaceType.getScope().get().toString() + "." + className; } SymbolReference<ResolvedTypeDeclaration> ref = solveType(className, typeSolver); if (!ref.isSolved()) { Optional<ClassOrInterfaceType> localScope = classOrInterfaceType.getScope(); if (localScope.isPresent()) { String localName = localScope.get().getName().getId() + "." + classOrInterfaceType.getName().getId(); ref = solveType(localName, typeSolver); } } if (!ref.isSolved()) { throw new UnsolvedSymbolException(classOrInterfaceType.getName().getId()); } if (!classOrInterfaceType.getTypeArguments().isPresent()) { return new ReferenceTypeImpl(ref.getCorrespondingDeclaration().asReferenceType(), typeSolver); } List<ResolvedType> superClassTypeParameters = classOrInterfaceType.getTypeArguments().get() .stream().map(ta -> new LazyType(v -> JavaParserFacade.get(typeSolver).convert(ta, ta))) .collect(Collectors.toList()); return new ReferenceTypeImpl(ref.getCorrespondingDeclaration().asReferenceType(), superClassTypeParameters, typeSolver); } }
private ResolvedReferenceType toReferenceType(ClassOrInterfaceType classOrInterfaceType) { String className = classOrInterfaceType.getName().getId(); if (classOrInterfaceType.getScope().isPresent()) { // look for the qualified name (for example class of type Rectangle2D.Double) className = classOrInterfaceType.getScope().get().toString() + "." + className; } SymbolReference<ResolvedTypeDeclaration> ref = solveType(className, typeSolver); if (!ref.isSolved()) { Optional<ClassOrInterfaceType> localScope = classOrInterfaceType.getScope(); if (localScope.isPresent()) { String localName = localScope.get().getName().getId() + "." + classOrInterfaceType.getName().getId(); ref = solveType(localName, typeSolver); } } if (!ref.isSolved()) { throw new UnsolvedSymbolException(classOrInterfaceType.getName().getId()); } if (!classOrInterfaceType.getTypeArguments().isPresent()) { return new ReferenceTypeImpl(ref.getCorrespondingDeclaration().asReferenceType(), typeSolver); } List<ResolvedType> superClassTypeParameters = classOrInterfaceType.getTypeArguments().get() .stream().map(ta -> new LazyType(v -> JavaParserFacade.get(typeSolver).convert(ta, ta))) .collect(Collectors.toList()); return new ReferenceTypeImpl(ref.getCorrespondingDeclaration().asReferenceType(), superClassTypeParameters, typeSolver); } }
return new JavaParserInterfaceDeclaration((com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) internalType, typeSolver).solveType(name.substring(prefix.length())); } else { return new JavaParserClassDeclaration((com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) internalType, typeSolver).solveType(name.substring(prefix.length()));
outerMostRef.getCorrespondingDeclaration() instanceof JavaParserClassDeclaration) { ref = ((JavaParserClassDeclaration) outerMostRef.getCorrespondingDeclaration()) .solveType(name.substring(name.indexOf(".") + 1)); } else if (outerMostRef != null && outerMostRef.isSolved() && outerMostRef.getCorrespondingDeclaration() instanceof JavaParserInterfaceDeclaration) {