1 package com.github.javaparser.symbolsolver.javaparsermodel.contexts; 2 3 import com.github.javaparser.ast.stmt.CatchClause; 4 import com.github.javaparser.resolution.declarations.ResolvedMethodDeclaration; 5 import com.github.javaparser.resolution.declarations.ResolvedValueDeclaration; 6 import com.github.javaparser.resolution.types.ResolvedType; 7 import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFactory; 8 import com.github.javaparser.symbolsolver.model.resolution.SymbolReference; 9 import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; 10 import com.github.javaparser.symbolsolver.model.resolution.Value; 11 import com.github.javaparser.symbolsolver.resolution.SymbolDeclarator; 12 13 import java.util.List; 14 import java.util.Optional; 15 16 /** 17 * @author Fred Lefvre-Laoide 18 */ 19 public class CatchClauseContext extends AbstractJavaParserContext<CatchClause> { 20 21 public CatchClauseContext(CatchClause wrappedNode, TypeSolver typeSolver) { 22 super(wrappedNode, typeSolver); 23 } 24 25 public final SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name, TypeSolver typeSolver) { 26 SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(wrappedNode.getParameter(), typeSolver); 27 SymbolReference<? extends ResolvedValueDeclaration> symbolReference = AbstractJavaParserContext.solveWith(sb, name); 28 if (symbolReference.isSolved()) { 29 return symbolReference; 30 } 31 32 // if nothing is found we should ask the parent context 33 return getParent().solveSymbol(name, typeSolver); 34 } 35 36 @Override 37 public final Optional<Value> solveSymbolAsValue(String name, TypeSolver typeSolver) { 38 SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(wrappedNode.getParameter(), typeSolver); 39 Optional<Value> symbolReference = solveWithAsValue(sb, name, typeSolver); 40 if (symbolReference.isPresent()) { 41 // Perform parameter type substitution as needed 42 return symbolReference; 43 } 44 45 // if nothing is found we should ask the parent context 46 return getParent().solveSymbolAsValue(name, typeSolver); 47 } 48 49 @Override 50 public final SymbolReference<ResolvedMethodDeclaration> solveMethod( 51 String name, List<ResolvedType> argumentsTypes, boolean staticOnly, TypeSolver typeSolver) { 52 return getParent().solveMethod(name, argumentsTypes, false, typeSolver); 53 } 54 } 55