Class 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.
    • Field Detail

      • 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 returns true the exception will be ignored, and solving will continue using the next solver in line. If it returns false the 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 a NullPointerException, you could use a whitelist to ignore that type of exception. A secondary solver would then be able to step in when such an error occurs.
        See Also:
        CombinedTypeSolver(Predicate, TypeSolver...), setExceptionHandler(Predicate)
    • 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 of CombinedTypeSolver with 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
      • 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.