Class JGrep


  • public class JGrep
    extends java.lang.Object
    Reads a set of compilation units from the file system and searches it for specific Java™ constructs, e.g. invocations of a particular method. Usage:
     java org.codehaus.janino.JGrep \
               [ -dirs directory-name-patterns ] \
               [ -files file-name-patterns ] \
               { directory-path } \
               -method-invocation class.method(arg-types)
     java org.codehaus.janino.JGrep -help
     
    If "-dirs" is not given, then all directory-pathes are scanned for files. The directory-name-patterns work as described in StringPattern.parseCombinedPattern(String).

    If "-files" is not given, then all files ending in ".java" are read. The file-name-patterns work as described in StringPattern.parseCombinedPattern(String).

    • Field Detail

      • parsedCompilationUnits

        private final java.util.List<UnitCompiler> parsedCompilationUnits
      • USAGE

        private static final java.lang.String[] USAGE
      • optionalCharacterEncoding

        private final java.lang.String optionalCharacterEncoding
      • benchmark

        private final Benchmark benchmark
    • Constructor Detail

      • JGrep

        public JGrep​(java.io.File[] classPath,
                     java.io.File[] optionalExtDirs,
                     java.io.File[] optionalBootClassPath,
                     java.lang.String optionalCharacterEncoding,
                     boolean verbose)
      • JGrep

        public JGrep​(IClassLoader iClassLoader,
                     java.lang.String optionalCharacterEncoding,
                     boolean verbose)
    • Method Detail

      • main

        public static void main​(java.lang.String[] args)
        Command line interface.
      • typeMatches

        static boolean typeMatches​(java.lang.String pattern,
                                   java.lang.String typeName)
        Returns:
        Whether the fully qualified typeName matches the pattern, or, iff the pattern does not contain a period, the simple type name of typeName matches the pattern
      • parseCompilationUnit

        private Java.CompilationUnit parseCompilationUnit​(java.io.File sourceFile,
                                                          java.lang.String optionalCharacterEncoding)
                                                   throws CompileException,
                                                          java.io.IOException
        Read one compilation unit from a file and parse it.

        The inputStream is closed before the method returns.

        Returns:
        the parsed compilation unit
        Throws:
        CompileException
        java.io.IOException
      • getClassFile

        public static java.io.File getClassFile​(java.lang.String className,
                                                java.io.File sourceFile,
                                                java.io.File optionalDestinationDirectory)
        Construct the name of a file that could store the byte code of the class with the given name.

        If optionalDestinationDirectory is non-null, the returned path is the optionalDestinationDirectory plus the package of the class (with dots replaced with file separators) plus the class name plus ".class". Example: "destdir/pkg1/pkg2/Outer$Inner.class"

        If optionalDestinationDirectory is null, the returned path is the directory of the sourceFile plus the class name plus ".class". Example: "srcdir/Outer$Inner.class"

        Parameters:
        className - E.g. "pkg1.pkg2.Outer$Inner"
        sourceFile - E.g. "srcdir/Outer.java"
        optionalDestinationDirectory - E.g. "destdir"