Class CombinedTypeSolver
- java.lang.Object
-
- com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver
-
- All Implemented Interfaces:
TypeSolver
public class CombinedTypeSolver extends java.lang.Object implements TypeSolver
A container for type solvers. All solving is done by the contained type solvers. This helps you when an API asks for a single type solver, but you need several.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCombinedTypeSolver.ExceptionHandlersProvides some convenience exception handler implementations
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<TypeSolver>elementsprivate java.util.function.Predicate<java.lang.Exception>exceptionHandlerA predicate which determines what to do if an exception is raised during the parsing process.private TypeSolverparentprivate Cache<java.lang.String,SymbolReference<ResolvedReferenceTypeDeclaration>>typeCache-
Fields inherited from interface com.github.javaparser.resolution.TypeSolver
JAVA_LANG_OBJECT, JAVA_LANG_RECORD
-
-
Constructor Summary
Constructors Constructor Description CombinedTypeSolver(TypeSolver... elements)CombinedTypeSolver(java.lang.Iterable<TypeSolver> elements)CombinedTypeSolver(java.util.function.Predicate<java.lang.Exception> exceptionHandler, TypeSolver... elements)CombinedTypeSolver(java.util.function.Predicate<java.lang.Exception> exceptionHandler, java.lang.Iterable<TypeSolver> elements)CombinedTypeSolver(java.util.function.Predicate<java.lang.Exception> exceptionHandler, java.lang.Iterable<TypeSolver> elements, Cache<java.lang.String,SymbolReference<ResolvedReferenceTypeDeclaration>> typeCache)Create a new instance ofCombinedTypeSolverwith a custom symbol cache.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(TypeSolver typeSolver)Append a type solver to the current solver.voidadd(TypeSolver typeSolver, boolean resetCache)Append a type solver to the current solver.static java.lang.StringcreateModuleTypeName(java.lang.String moduleQualifiedName, java.lang.String simpleTypeName)Create the key that should be used for module cache lookups.TypeSolvergetParent()Parent of the this TypeSolver.voidsetExceptionHandler(java.util.function.Predicate<java.lang.Exception> exceptionHandler)voidsetParent(TypeSolver parent)Set the parent of this TypeSolver.ResolvedReferenceTypeDeclarationsolveType(java.lang.String name)Solve the given type.ResolvedReferenceTypeDeclarationsolveTypeInModule(java.lang.String moduleQualifiedName, java.lang.String simpleTypeName)SymbolReference<ResolvedReferenceTypeDeclaration>tryToSolveType(java.lang.String name)Try to solve the type with the given name.SymbolReference<ResolvedReferenceTypeDeclaration>tryToSolveTypeInModule(java.lang.String moduleQualifiedName, java.lang.String simpleTypeName)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.github.javaparser.resolution.TypeSolver
getRoot, getSolvedJavaLangObject, getSolvedJavaLangRecord, hasType
-
-
-
-
Field Detail
-
typeCache
private final Cache<java.lang.String,SymbolReference<ResolvedReferenceTypeDeclaration>> typeCache
-
parent
private TypeSolver parent
-
elements
private java.util.List<TypeSolver> elements
-
exceptionHandler
private java.util.function.Predicate<java.lang.Exception> exceptionHandler
A predicate which determines what to do if an exception is raised during the parsing process. If it returnstruethe exception will be ignored, and solving will continue using the next solver in line. If it returnsfalsethe exception will be thrown, stopping the solving process. Main use case for this is to circumvent bugs or missing functionality in some type solvers. If for example solver A has a bug resulting in aNullPointerException, you could use awhitelistto ignore that type of exception. A secondary solver would then be able to step in when such an error occurs.
-
-
Constructor Detail
-
CombinedTypeSolver
public CombinedTypeSolver(TypeSolver... elements)
-
CombinedTypeSolver
public CombinedTypeSolver(java.util.function.Predicate<java.lang.Exception> exceptionHandler, TypeSolver... elements)
-
CombinedTypeSolver
public CombinedTypeSolver(java.lang.Iterable<TypeSolver> elements)
-
CombinedTypeSolver
public CombinedTypeSolver(java.util.function.Predicate<java.lang.Exception> exceptionHandler, java.lang.Iterable<TypeSolver> elements)- See Also:
exceptionHandler
-
CombinedTypeSolver
public CombinedTypeSolver(java.util.function.Predicate<java.lang.Exception> exceptionHandler, java.lang.Iterable<TypeSolver> elements, Cache<java.lang.String,SymbolReference<ResolvedReferenceTypeDeclaration>> typeCache)Create a new instance ofCombinedTypeSolverwith a custom symbol cache.- Parameters:
exceptionHandler- How exception should be handled.elements- The list of elements to include by default.typeCache- The cache to be used to store symbols.- See Also:
exceptionHandler
-
-
Method Detail
-
setExceptionHandler
public void setExceptionHandler(java.util.function.Predicate<java.lang.Exception> exceptionHandler)
- See Also:
exceptionHandler
-
getParent
public TypeSolver getParent()
Description copied from interface:TypeSolverParent of the this TypeSolver. This can return null.- Specified by:
getParentin interfaceTypeSolver
-
setParent
public void setParent(TypeSolver parent)
Description copied from interface:TypeSolverSet the parent of this TypeSolver.- Specified by:
setParentin interfaceTypeSolver
-
add
public void add(TypeSolver typeSolver, boolean resetCache)
Append a type solver to the current solver.- Parameters:
typeSolver- The type solver to be appended.resetCache- If should reset the cache when the solver is inserted.
-
add
public void add(TypeSolver typeSolver)
Append a type solver to the current solver.
By default the cached values will be removed.- Parameters:
typeSolver- The type solver to be appended.
-
tryToSolveType
public SymbolReference<ResolvedReferenceTypeDeclaration> tryToSolveType(java.lang.String name)
Description copied from interface:TypeSolverTry to solve the type with the given name. It always return a SymbolReference which can be solved or unsolved.- Specified by:
tryToSolveTypein interfaceTypeSolver
-
createModuleTypeName
public static java.lang.String createModuleTypeName(java.lang.String moduleQualifiedName, java.lang.String simpleTypeName)Create the key that should be used for module cache lookups.
-
tryToSolveTypeInModule
public SymbolReference<ResolvedReferenceTypeDeclaration> tryToSolveTypeInModule(java.lang.String moduleQualifiedName, java.lang.String simpleTypeName)
- Specified by:
tryToSolveTypeInModulein interfaceTypeSolver
-
solveType
public ResolvedReferenceTypeDeclaration solveType(java.lang.String name) throws UnsolvedSymbolException
Description copied from interface:TypeSolverSolve the given type. Either the type is found and returned or an UnsolvedSymbolException is thrown.- Specified by:
solveTypein interfaceTypeSolver- Throws:
UnsolvedSymbolException
-
solveTypeInModule
public ResolvedReferenceTypeDeclaration solveTypeInModule(java.lang.String moduleQualifiedName, java.lang.String simpleTypeName) throws UnsolvedSymbolException
- Specified by:
solveTypeInModulein interfaceTypeSolver- Throws:
UnsolvedSymbolException
-
-