@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 JavaParserInterfaceDeclaration(this.wrappedNode, typeSolver).solveType(name.substring(prefix.length()), typeSolver); } return getContext().getParent().solveType(name, typeSolver); }
List<ResolvedFieldDeclaration> fields = javaParserTypeAdapter.getFieldsForDeclaredVariables(); getAncestors().forEach(ancestor -> ancestor.getTypeDeclaration().getAllFields().forEach(f -> { fields.add(new ResolvedFieldDeclaration() {
@Override public List<ResolvedReferenceType> getAncestors() { List<ResolvedReferenceType> ancestors = new ArrayList<>(); if (wrappedNode.getExtendedTypes() != null) { for (ClassOrInterfaceType extended : wrappedNode.getExtendedTypes()) { ancestors.add(toReferenceType(extended)); } } if (wrappedNode.getImplementedTypes() != null) { for (ClassOrInterfaceType implemented : wrappedNode.getImplementedTypes()) { ancestors.add(toReferenceType(implemented)); } } return ancestors; }
/** * 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); } }
@Override public SymbolReference<ResolvedMethodDeclaration> solveMethod(String name, List<ResolvedType> argumentsTypes, boolean staticOnly) { return getContext().solveMethod(name, argumentsTypes, staticOnly); }
if (internalType instanceof ClassOrInterfaceDeclaration) { if (((ClassOrInterfaceDeclaration) internalType).isInterface()) { return SymbolReference.solved(new JavaParserInterfaceDeclaration((com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) internalType, typeSolver)); } else { return SymbolReference.solved(new JavaParserClassDeclaration((com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) internalType, typeSolver)); if (internalType instanceof ClassOrInterfaceDeclaration) { if (((ClassOrInterfaceDeclaration) internalType).isInterface()) { 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()));
@Test public void testGetQualifiedName() { JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations"); assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations", nodeWithAnnotations.getQualifiedName()); }
public static ResolvedReferenceTypeDeclaration toTypeDeclaration(Node node, TypeSolver typeSolver) { if (node instanceof ClassOrInterfaceDeclaration) { if (((ClassOrInterfaceDeclaration) node).isInterface()) { return new JavaParserInterfaceDeclaration((ClassOrInterfaceDeclaration) node, typeSolver); } else { return new JavaParserClassDeclaration((ClassOrInterfaceDeclaration) node, typeSolver); } } else if (node instanceof TypeParameter) { return new JavaParserTypeParameter((TypeParameter) node, typeSolver); } else if (node instanceof EnumDeclaration) { return new JavaParserEnumDeclaration((EnumDeclaration) node, typeSolver); } else if (node instanceof AnnotationDeclaration) { return new JavaParserAnnotationDeclaration((AnnotationDeclaration) node, typeSolver); } else { throw new IllegalArgumentException(node.getClass().getCanonicalName()); } } }
@Test(expected = UnsupportedOperationException.class) public void testAsClass() { JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations"); assertEquals(nodeWithAnnotations, nodeWithAnnotations.asClass()); }
/** * 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); } }
@Override public Optional<MethodUsage> solveMethodAsUsage(String name, List<ResolvedType> argumentTypes, Context invocationContext, List<ResolvedType> typeParameters) { return getContext().solveMethodAsUsage(name, argumentTypes); }
@Override public boolean canBeAssignedTo(ResolvedReferenceTypeDeclaration other) { // TODO consider generic types if (this.getQualifiedName().equals(other.getQualifiedName())) { return true; } if (this.wrappedNode.getExtendedTypes() != null) { for (ClassOrInterfaceType type : wrappedNode.getExtendedTypes()) { ResolvedReferenceTypeDeclaration ancestor = (ResolvedReferenceTypeDeclaration) new SymbolSolver(typeSolver).solveType(type); if (ancestor.canBeAssignedTo(other)) { return true; } } } if (this.wrappedNode.getImplementedTypes() != null) { for (ClassOrInterfaceType type : wrappedNode.getImplementedTypes()) { ResolvedReferenceTypeDeclaration ancestor = (ResolvedReferenceTypeDeclaration) new SymbolSolver(typeSolver).solveType(type); if (ancestor.canBeAssignedTo(other)) { return true; } } } return false; }
public static ResolvedReferenceTypeDeclaration toTypeDeclaration(Node node, TypeSolver typeSolver) { if (node instanceof ClassOrInterfaceDeclaration) { if (((ClassOrInterfaceDeclaration) node).isInterface()) { return new JavaParserInterfaceDeclaration((ClassOrInterfaceDeclaration) node, typeSolver); } else { return new JavaParserClassDeclaration((ClassOrInterfaceDeclaration) node, typeSolver); } } else if (node instanceof TypeParameter) { return new JavaParserTypeParameter((TypeParameter) node, typeSolver); } else if (node instanceof EnumDeclaration) { return new JavaParserEnumDeclaration((EnumDeclaration) node, typeSolver); } else if (node instanceof AnnotationDeclaration) { return new JavaParserAnnotationDeclaration((AnnotationDeclaration) node, typeSolver); } else { throw new IllegalArgumentException(node.getClass().getCanonicalName()); } } }
@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 JavaParserInterfaceDeclaration(this.wrappedNode, typeSolver).solveType(name.substring(prefix.length()), typeSolver); } return getContext().getParent().solveType(name, typeSolver); }
/** * 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); } }
Context ctx = ((JavaParserInterfaceDeclaration) typeDeclaration).getContext(); return ctx.solveMethod(name, argumentsTypes, staticOnly, typeSolver);
@Override public boolean canBeAssignedTo(ResolvedReferenceTypeDeclaration other) { // TODO consider generic types if (this.getQualifiedName().equals(other.getQualifiedName())) { return true; } if (this.wrappedNode.getExtendedTypes() != null) { for (ClassOrInterfaceType type : wrappedNode.getExtendedTypes()) { ResolvedReferenceTypeDeclaration ancestor = (ResolvedReferenceTypeDeclaration) new SymbolSolver(typeSolver).solveType(type); if (ancestor.canBeAssignedTo(other)) { return true; } } } if (this.wrappedNode.getImplementedTypes() != null) { for (ClassOrInterfaceType type : wrappedNode.getImplementedTypes()) { ResolvedReferenceTypeDeclaration ancestor = (ResolvedReferenceTypeDeclaration) new SymbolSolver(typeSolver).solveType(type); if (ancestor.canBeAssignedTo(other)) { return true; } } } return false; }
@Override public List<ResolvedReferenceType> getAncestors() { List<ResolvedReferenceType> ancestors = new ArrayList<>(); if (wrappedNode.getExtendedTypes() != null) { for (ClassOrInterfaceType extended : wrappedNode.getExtendedTypes()) { ancestors.add(toReferenceType(extended)); } } if (wrappedNode.getImplementedTypes() != null) { for (ClassOrInterfaceType implemented : wrappedNode.getImplementedTypes()) { ancestors.add(toReferenceType(implemented)); } } return ancestors; }
public static ResolvedReferenceTypeDeclaration toTypeDeclaration(Node node, TypeSolver typeSolver) { if (node instanceof ClassOrInterfaceDeclaration) { if (((ClassOrInterfaceDeclaration) node).isInterface()) { return new JavaParserInterfaceDeclaration((ClassOrInterfaceDeclaration) node, typeSolver); } else { return new JavaParserClassDeclaration((ClassOrInterfaceDeclaration) node, typeSolver); } } else if (node instanceof TypeParameter) { return new JavaParserTypeParameter((TypeParameter) node, typeSolver); } else if (node instanceof EnumDeclaration) { return new JavaParserEnumDeclaration((EnumDeclaration) node, typeSolver); } else if (node instanceof AnnotationDeclaration) { return new JavaParserAnnotationDeclaration((AnnotationDeclaration) node, typeSolver); } else { throw new IllegalArgumentException(node.getClass().getCanonicalName()); } } }
List<ResolvedFieldDeclaration> fields = javaParserTypeAdapter.getFieldsForDeclaredVariables(); getAncestors().forEach(ancestor -> ancestor.getTypeDeclaration().getAllFields().forEach(f -> { fields.add(new ResolvedFieldDeclaration() {