Class SourceRoot


  • public class SourceRoot
    extends Object
    A collection of Java source files located in one directory and its subdirectories on the file system. The root directory corresponds to the root of the package structure of the source files within. Files can be parsed and written back one by one or all together. Note that the internal cache used is thread-safe.
    • methods called "tryToParse..." will return their result inside a "ParseResult", which supports parse successes and failures.
    • methods called "parse..." will return "CompilationUnit"s. If a file fails to parse, an exception is thrown.
    • methods ending in "...Parallelized" will speed up parsing by using multiple threads.
    • Constructor Detail

      • SourceRoot

        public SourceRoot​(Path root)
        Parameters:
        root - the root directory of a set of source files. It corresponds to the root of the package structure of the source files within, like "javaparser/javaparser-core/src/main/java"
      • SourceRoot

        public SourceRoot​(Path root,
                          ParserConfiguration parserConfiguration)
        Parameters:
        root - the root directory of a set of source files. It corresponds to the root of the package structure of the source files within, like "javaparser/javaparser-core/src/main/java"
    • Method Detail

      • tryToParse

        @Deprecated
        public ParseResult<CompilationUnit> tryToParse​(String startPackage,
                                                       String filename,
                                                       JavaParser javaParser)
                                                throws IOException
        Deprecated.
        pass ParserConfiguration instead of JavaParser
        Tries to parse a .java files under the source root and returns the ParseResult. It keeps track of the parsed file so you can write it out with the saveAll() call. Note that the cache grows with every file parsed, so if you don't need saveAll(), or you don't ask SourceRoot to parse files multiple times (where the cache is useful) you might want to use the parse method with a callback.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
        Throws:
        IOException
      • tryToParse

        public ParseResult<CompilationUnit> tryToParse​(String startPackage,
                                                       String filename,
                                                       ParserConfiguration configuration)
                                                throws IOException
        Tries to parse a .java files under the source root and returns the ParseResult. It keeps track of the parsed file so you can write it out with the saveAll() call. Note that the cache grows with every file parsed, so if you don't need saveAll(), or you don't ask SourceRoot to parse files multiple times (where the cache is useful) you might want to use the parse method with a callback.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
        Throws:
        IOException
      • tryToParse

        public ParseResult<CompilationUnit> tryToParse​(String startPackage,
                                                       String filename)
                                                throws IOException
        Tries to parse a .java files under the source root and returns the ParseResult. It keeps track of the parsed file so you can write it out with the saveAll() call. Note that the cache grows with every file parsed, so if you don't need saveAll(), or you don't ask SourceRoot to parse files multiple times (where the cache is useful) you might want to use the parse method with a callback.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
        Throws:
        IOException
      • tryToParse

        public List<ParseResult<CompilationUnit>> tryToParse​(String startPackage)
                                                      throws IOException
        Tries to parse all .java files in a package recursively, and returns all files ever parsed with this source root. It keeps track of all parsed files so you can write them out with a single saveAll() call. Note that the cache grows with every file parsed, so if you don't need saveAll(), or you don't ask SourceRoot to parse files multiple times (where the cache is useful) you might want to use the parse method with a callback.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
        Throws:
        IOException
      • tryToParse

        public List<ParseResult<CompilationUnit>> tryToParse()
                                                      throws IOException
        Tries to parse all .java files under the source root recursively, and returns all files ever parsed with this source root. It keeps track of all parsed files so you can write them out with a single saveAll() call. Note that the cache grows with every file parsed, so if you don't need saveAll(), or you don't ask SourceRoot to parse files multiple times (where the cache is useful) you might want to use the parse method with a callback.
        Throws:
        IOException
      • tryToParseParallelized

        public List<ParseResult<CompilationUnit>> tryToParseParallelized​(String startPackage)
        Tries to parse all .java files in a package recursively using multiple threads, and returns all files ever parsed with this source root. A new thread is forked each time a new directory is visited and is responsible for parsing all .java files in that directory. Note that to ensure thread safety, a new parser instance is created for every file with the internal parser's (i.e. setJavaParser(com.github.javaparser.JavaParser)) configuration. It keeps track of all parsed files so you can write them out with a single saveAll() call. Note that the cache grows with every file parsed, so if you don't need saveAll(), or you don't ask SourceRoot to parse files multiple times (where the cache is useful) you might want to use the parse method with a callback.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
      • tryToParseParallelized

        public List<ParseResult<CompilationUnit>> tryToParseParallelized()
        Tries to parse all .java files under the source root recursively using multiple threads, and returns all files ever parsed with this source root. A new thread is forked each time a new directory is visited and is responsible for parsing all .java files in that directory. Note that to ensure thread safety, a new parser instance is created for every file with the internal parser's (i.e. setJavaParser(com.github.javaparser.JavaParser)) configuration. It keeps track of all parsed files so you can write them out with a single saveAll() call. Note that the cache grows with every file parsed, so if you don't need saveAll(), or you don't ask SourceRoot to parse files multiple times (where the cache is useful) you might want to use the parse method with a callback.
      • parse

        public CompilationUnit parse​(String startPackage,
                                     String filename)
        Parses a .java files under the source root and returns its CompilationUnit. It keeps track of the parsed file so you can write it out with the saveAll() call. Note that the cache grows with every file parsed, so if you don't need saveAll(), or you don't ask SourceRoot to parse files multiple times (where the cache is useful) you might want to use the parse method with a callback.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
        Throws:
        ParseProblemException - when something went wrong.
      • parse

        public SourceRoot parse​(String startPackage,
                                String filename,
                                ParserConfiguration configuration,
                                SourceRoot.Callback callback)
                         throws IOException
        Locates the .java file with the provided package and file name, parses it and passes it to the callback. In comparison to the other parse methods, this is much more memory efficient, but saveAll() won't work.
        Parameters:
        startPackage - The package containing the file
        filename - The name of the file
        Throws:
        IOException
      • parse

        public SourceRoot parse​(String startPackage,
                                String filename,
                                SourceRoot.Callback callback)
                         throws IOException
        Parses the provided .java file and passes it to the callback. In comparison to the other parse methods, this makes is much more memory efficient., but saveAll() won't work.
        Throws:
        IOException
      • parse

        @Deprecated
        public SourceRoot parse​(String startPackage,
                                JavaParser javaParser,
                                SourceRoot.Callback callback)
                         throws IOException
        Deprecated.
        pass ParserConfiguration instead of JavaParser
        Tries to parse all .java files in a package recursively and passes them one by one to the callback. In comparison to the other parse methods, this is much more memory efficient, but saveAll() won't work.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
        Throws:
        IOException
      • parse

        public SourceRoot parse​(String startPackage,
                                ParserConfiguration configuration,
                                SourceRoot.Callback callback)
                         throws IOException
        Tries to parse all .java files in a package recursively and passes them one by one to the callback. In comparison to the other parse methods, this is much more memory efficient, but saveAll() won't work.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
        Throws:
        IOException
      • parseParallelized

        public SourceRoot parseParallelized​(String startPackage,
                                            ParserConfiguration configuration,
                                            SourceRoot.Callback callback)
        Tries to parse all .java files in a package recursively using multiple threads, and passes them one by one to the callback. A new thread is forked each time a new directory is visited and is responsible for parsing all .java files in that directory. Note that the provided SourceRoot.Callback code must be made thread-safe. Note that to ensure thread safety, a new parser instance is created for every file with the provided ParserConfiguration. In comparison to the other parse methods, this is much more memory efficient, but saveAll() won't work.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
      • parseParallelized

        public SourceRoot parseParallelized​(String startPackage,
                                            SourceRoot.Callback callback)
                                     throws IOException
        Tries to parse all .java files in a package recursively using multiple threads, and passes them one by one to the callback. A new thread is forked each time a new directory is visited and is responsible for parsing all .java files in that directory. Note that the provided SourceRoot.Callback code must be made thread-safe. Note that to ensure thread safety, a new parser instance is created for every file. In comparison to the other parse methods, this is much more memory efficient, but saveAll() won't work.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
        Throws:
        IOException
      • parseParallelized

        public SourceRoot parseParallelized​(SourceRoot.Callback callback)
                                     throws IOException
        Tries to parse all .java files recursively using multiple threads, and passes them one by one to the callback. A new thread is forked each time a new directory is visited and is responsible for parsing all .java files in that directory. Note that the provided SourceRoot.Callback code must be made thread-safe. Note that to ensure thread safety, a new parser instance is created for every file. In comparison to the other parse methods, this is much more memory efficient, but saveAll() won't work.
        Throws:
        IOException
      • add

        public SourceRoot add​(String startPackage,
                              String filename,
                              CompilationUnit compilationUnit)
        Add a newly created Java file to the cache of this source root. It will be saved when saveAll is called.
        Parameters:
        startPackage - files in this package and deeper are parsed. Pass "" to parse all files.
      • add

        public SourceRoot add​(CompilationUnit compilationUnit)
        Add a newly created Java file to the cache of this source root. It will be saved when saveAll is called. It needs to have its path set.
      • saveAll

        public SourceRoot saveAll​(Path root)
        Save all previously parsed files back to a new path.
      • saveAll

        public SourceRoot saveAll()
        Save all previously parsed files back to where they were found.
      • getCache

        public List<ParseResult<CompilationUnit>> getCache()
        The Java files that have been parsed by this source root object, or have been added manually.
      • getCompilationUnits

        public List<CompilationUnit> getCompilationUnits()
        The CompilationUnits of the Java files that have been parsed succesfully by this source root object, or have been added manually.
      • getRoot

        public Path getRoot()
        The path that was passed in the constructor.
      • getJavaParser

        @Deprecated
        public JavaParser getJavaParser()
        Deprecated.
        store ParserConfiguration now
      • setJavaParser

        @Deprecated
        public SourceRoot setJavaParser​(JavaParser javaParser)
        Deprecated.
        store ParserConfiguration now
        Set the parser that is used for parsing by default.
      • setParserConfiguration

        public SourceRoot setParserConfiguration​(ParserConfiguration parserConfiguration)
        Set the parser configuration that is used for parsing when no configuration is passed to a method.