1fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettipackage com.github.javaparser.symbolsolver; 2fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 3fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport com.github.javaparser.JavaParser; 4fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport com.github.javaparser.ast.CompilationUnit; 5fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport com.github.javaparser.ast.body.MethodDeclaration; 6fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport com.github.javaparser.ast.expr.MethodCallExpr; 73f34115468f45e51a556908bc624c3f0d02b2220Federico Tomassettiimport com.github.javaparser.resolution.types.ResolvedReferenceType; 8fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; 9fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserClassDeclaration; 10fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport com.github.javaparser.symbolsolver.model.resolution.TypeSolver; 11fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver; 12fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver; 13fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver; 14fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport org.junit.Before; 15fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport org.junit.Test; 16fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 17fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport java.io.File; 18fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport java.io.FileNotFoundException; 19fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport java.io.IOException; 20fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 21fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettiimport static org.junit.Assert.assertEquals; 22fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 23fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassettipublic class Issue113 extends AbstractTest { 24fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 25fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti private TypeSolver typeSolver; 26fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 27fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti @Before 28fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti public void setup() throws IOException { 29fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti typeSolver = new CombinedTypeSolver(new ReflectionTypeSolver(), new JavaParserTypeSolver(adaptPath(new File("src/test/resources/issue113")))); 30fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti } 31fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 32fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti @Test 33fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti public void issue113providedCodeDoesNotCrash() throws FileNotFoundException { 34fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti String pathToSourceFile = adaptPath("src/test/resources/issue113/com/foo/Widget.java"); 35fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti CompilationUnit cu = JavaParser.parse(new File(pathToSourceFile)); 36fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 37fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti JavaParserFacade parserFacade = JavaParserFacade.get(typeSolver); 38b54617e765d73b3ce0d187cf12ad8da382bce439Danny van Bruggen MethodDeclaration methodDeclaration = cu.findAll(MethodDeclaration.class).stream() 39fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti .filter(node -> node.getName().getIdentifier().equals("doSomething")).findAny().orElse(null); 40b54617e765d73b3ce0d187cf12ad8da382bce439Danny van Bruggen methodDeclaration.findAll(MethodCallExpr.class).forEach(parserFacade::solve); 41fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti } 42fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 43fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti @Test 44fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti public void issue113superClassIsResolvedCorrectly() throws FileNotFoundException { 45fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti String pathToSourceFile = adaptPath("src/test/resources/issue113/com/foo/Widget.java"); 46fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti CompilationUnit cu = JavaParser.parse(new File(pathToSourceFile)); 47fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 48fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti JavaParserClassDeclaration jssExtendedWidget = new JavaParserClassDeclaration(cu.getClassByName("Widget").get(), typeSolver); 493f34115468f45e51a556908bc624c3f0d02b2220Federico Tomassetti ResolvedReferenceType superClass = jssExtendedWidget.getSuperClass(); 50fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti assertEquals("com.foo.base.Widget", superClass.getQualifiedName()); 51fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti } 52fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti 53fcaa4fbb2051625341e34f8e759a160a58a577afFederico Tomassetti} 54