java.lang.Object
com.github.javaparser.symbolsolver.resolution.typesolvers.JarTypeSolver
All Implemented Interfaces:
TypeSolver

public class JarTypeSolver extends Object implements TypeSolver
Will let the symbol solver look inside a jar file while solving types.
  • Field Details

  • Constructor Details

    • JarTypeSolver

      public JarTypeSolver(Path pathToJar) throws IOException
      Create a JarTypeSolver from a Path.
      Parameters:
      pathToJar - The path where the jar is located.
      Throws:
      IOException - If an I/O exception occurs while reading the Jar.
    • JarTypeSolver

      public JarTypeSolver(File pathToJar) throws IOException
      Create a JarTypeSolver from a File.
      Parameters:
      pathToJar - The file pointing to the jar is located.
      Throws:
      IOException - If an I/O exception occurs while reading the Jar.
    • JarTypeSolver

      public JarTypeSolver(String pathToJar) throws IOException
      Create a JarTypeSolver from a path in a String format.
      Parameters:
      pathToJar - The path pointing to the jar.
      Throws:
      IOException - If an I/O exception occurs while reading the Jar.
    • JarTypeSolver

      public JarTypeSolver(InputStream jarInputStream) throws IOException
      Create a JarTypeSolver from a InputStream. The content will be dumped into a temporary file to be used in the type solver.
      Parameters:
      jarInputStream - The input stream to be used.
      Throws:
      IOException - If an I/O exception occurs while creating the temporary file.
  • Method Details

    • getJarTypeSolver

      @Deprecated public static JarTypeSolver getJarTypeSolver(String pathToJar) throws IOException
      Deprecated.
      Use of this static method (previously following singleton pattern) is strongly discouraged and will be removed in a future version. For now, it has been modified to return a new instance to prevent the IllegalStateException being thrown (as reported in #2547), allowing it to be called multiple times.
      Throws:
      IOException
    • convertEntryPathToClassName

      private static String convertEntryPathToClassName(String entryPath)
      Convert the entry path into a qualified name. The entries in Jar files follows the format com/github/javaparser/ASTParser$JJCalls.class while in the type solver we need to work with com.github.javaparser.ASTParser.JJCalls.
      Parameters:
      entryPath - The entryPath to be converted.
      Returns:
      The qualified name for the entryPath.
    • convertEntryPathToClassPoolName

      private static String convertEntryPathToClassPoolName(String entryPath)
      Convert the entry path into a qualified name to be used in ClassPool. The entries in Jar files follows the format com/github/javaparser/ASTParser$JJCalls.class while in the class pool we need to work with com.github.javaparser.ASTParser$JJCalls.
      Parameters:
      entryPath - The entryPath to be converted.
      Returns:
      The qualified name to be used in the class pool.
    • dumpToTempFile

      private File dumpToTempFile(InputStream inputStream) throws IOException
      Utility function to dump the input stream into a temporary file. This file will be deleted when the virtual machine terminates.
      Parameters:
      inputStream - The input to be dumped.
      Returns:
      The created file with the dumped information.
      Throws:
      IOException - If an I/O exception occurs while creating the temporary file.
    • addPathToJar

      private void addPathToJar(String pathToJar) throws IOException
      Utility method to register a new class path.
      Parameters:
      pathToJar - The path pointing to the jar file.
      Throws:
      IOException - If an I/O error occurs while reading the JarFile.
    • registerKnownClassesFor

      private void registerKnownClassesFor(String pathToJar) throws IOException
      Register the list of known classes. When we create a new JarTypeSolver we should store the list of solvable types.
      Parameters:
      pathToJar - The path to the jar file.
      Throws:
      IOException - If an I/O error occurs while reading the JarFile.
    • getKnownClasses

      public Set<String> getKnownClasses()
      Get the set of classes that can be resolved in the current type solver.
      Returns:
      The set of known classes.
    • getParent

      public TypeSolver getParent()
      Description copied from interface: TypeSolver
      Parent of the this TypeSolver. This can return null.
      Specified by:
      getParent in interface TypeSolver
    • setParent

      public void setParent(TypeSolver parent)
      Description copied from interface: TypeSolver
      Set the parent of this TypeSolver.
      Specified by:
      setParent in interface TypeSolver
    • tryToSolveType

      Description copied from interface: TypeSolver
      Try to solve the type with the given name. It always return a SymbolReference which can be solved or unsolved.
      Specified by:
      tryToSolveType in interface TypeSolver
    • solveType

      Description copied from interface: TypeSolver
      Solve the given type. Either the type is found and returned or an UnsolvedSymbolException is thrown.
      Specified by:
      solveType in interface TypeSolver
      Throws:
      UnsolvedSymbolException