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 JavaParserClassDeclaration(this.wrappedNode, typeSolver).solveType(name.substring(prefix.length()), typeSolver); } return getContext().getParent().solveType(name, typeSolver); }
@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); }
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()); } } }
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()); } } }
/** * 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); }
if (internalType.getName().getId().equals(name)) { if (internalType instanceof ClassOrInterfaceDeclaration) { return SymbolReference.solved(new JavaParserClassDeclaration((com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) internalType, typeSolver)); } else if (internalType instanceof EnumDeclaration) { return SymbolReference.solved(new JavaParserEnumDeclaration((com.github.javaparser.ast.body.EnumDeclaration) internalType, typeSolver)); 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()));
if (internalType.getName().getId().equals(name)) { if (internalType instanceof ClassOrInterfaceDeclaration) { return SymbolReference.solved(new JavaParserClassDeclaration((com.github.javaparser.ast.body.ClassOrInterfaceDeclaration) internalType, typeSolver)); } else if (internalType instanceof EnumDeclaration) { return SymbolReference.solved(new JavaParserEnumDeclaration((com.github.javaparser.ast.body.EnumDeclaration) internalType, typeSolver)); 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 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)); 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 issue113superClassIsResolvedCorrectly() throws FileNotFoundException { String pathToSourceFile = adaptPath("src/test/resources/issue113/com/foo/Widget.java"); CompilationUnit cu = JavaParser.parse(new File(pathToSourceFile)); JavaParserClassDeclaration jssExtendedWidget = new JavaParserClassDeclaration(cu.getClassByName("Widget").get(), typeSolver); ResolvedReferenceType superClass = jssExtendedWidget.getSuperClass(); assertEquals("com.foo.base.Widget", superClass.getQualifiedName()); }
@Test public void testGetAllGenericFields() throws IOException, ParseException { TypeSolver typeSolver = new ReflectionTypeSolver(); CompilationUnit cu = JavaParser.parse(adaptPath(new File("src/test/resources/GenericFields.java.txt"))); JavaParserClassDeclaration classDeclaration = new JavaParserClassDeclaration(Navigator.demandClass(cu, "CB"), typeSolver); assertEquals(3, classDeclaration.getAllFields().size()); ReferenceTypeImpl rtClassDeclaration = new ReferenceTypeImpl(classDeclaration, typeSolver); assertEquals("s", classDeclaration.getAllFields().get(0).getName()); assertEquals(string, classDeclaration.getAllFields().get(0).getType()); assertEquals(string, rtClassDeclaration.getFieldType("s").get()); assertEquals("t", classDeclaration.getAllFields().get(1).getName()); assertEquals("java.util.List<java.lang.Boolean>", classDeclaration.getAllFields().get(1).getType().describe()); assertEquals(listOfBoolean, rtClassDeclaration.getFieldType("t").get()); assertEquals("i", classDeclaration.getAllFields().get(2).getName()); assertEquals(ResolvedPrimitiveType.INT, classDeclaration.getAllFields().get(2).getType()); assertEquals(ResolvedPrimitiveType.INT, rtClassDeclaration.getFieldType("i").get()); }
@Test public void testHasDirectlyAnnotation() throws IOException, ParseException { TypeSolver typeSolver = new ReflectionTypeSolver(); CompilationUnit cu = JavaParser.parse(adaptPath(new File("src/test/resources/Annotations.java.txt"))); JavaParserClassDeclaration ca = new JavaParserClassDeclaration(Navigator.demandClass(cu, "CA"), typeSolver); assertEquals(true, ca.hasDirectlyAnnotation("foo.bar.MyAnnotation")); assertEquals(false, ca.hasDirectlyAnnotation("foo.bar.MyAnnotation2")); assertEquals(false, ca.hasDirectlyAnnotation("MyAnnotation")); assertEquals(false, ca.hasDirectlyAnnotation("foo.bar.MyUnexistingAnnotation")); JavaParserClassDeclaration cb = new JavaParserClassDeclaration(Navigator.demandClass(cu, "CB"), typeSolver); assertEquals(false, cb.hasDirectlyAnnotation("foo.bar.MyAnnotation")); assertEquals(true, cb.hasDirectlyAnnotation("foo.bar.MyAnnotation2")); assertEquals(false, cb.hasDirectlyAnnotation("MyAnnotation")); assertEquals(false, cb.hasDirectlyAnnotation("foo.bar.MyUnexistingAnnotation")); }
@Test public void testHasAnnotation() throws IOException, ParseException { TypeSolver typeSolver = new ReflectionTypeSolver(); CompilationUnit cu = JavaParser.parse(adaptPath(new File("src/test/resources/Annotations.java.txt"))); JavaParserClassDeclaration ca = new JavaParserClassDeclaration(Navigator.demandClass(cu, "CA"), typeSolver); assertEquals(true, ca.hasAnnotation("foo.bar.MyAnnotation")); assertEquals(false, ca.hasAnnotation("foo.bar.MyAnnotation2")); assertEquals(false, ca.hasAnnotation("MyAnnotation")); assertEquals(false, ca.hasAnnotation("foo.bar.MyUnexistingAnnotation")); JavaParserClassDeclaration cb = new JavaParserClassDeclaration(Navigator.demandClass(cu, "CB"), typeSolver); assertEquals(true, cb.hasAnnotation("foo.bar.MyAnnotation")); assertEquals(true, cb.hasAnnotation("foo.bar.MyAnnotation2")); assertEquals(false, cb.hasAnnotation("MyAnnotation")); assertEquals(false, cb.hasAnnotation("foo.bar.MyUnexistingAnnotation")); }