Class FqcnResolver

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.Map<java.lang.String,​java.lang.String> fqcns
      The map of solved fqcns based on imports keyed on (simple) name, valued as fully qualified class name.
      private java.util.Set<java.lang.String> imports
      The set of packages to be used as import roots.
      private FqcnResolver parent
      Optional parent solver.
      private JexlUberspect uberspect
      The uberspect.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private java.lang.Object getConstant​(java.lang.String... ids)  
      (package private) java.lang.String getQualifiedName​(java.lang.String name)
      Gets a fully qualified class name from a simple class name and imports.
      private void importCheck​(java.lang.Iterable<java.lang.String> names)
      Adds a collection of packages/classes as import root, check each name point to one or the other.
      private void importCheck​(java.lang.String name)
      Adds a package as import root, checks the name points to a package or a class.
      (package private) FqcnResolver importPackages​(java.lang.Iterable<java.lang.String> packages)
      Imports a list of packages as solving roots.
      (package private) boolean isImporting​(java.lang.String pkg)
      Checks is a package is imported by this solver of one of its ascendants.
      java.lang.String resolveClassName​(java.lang.String name)
      Resolves a class name.
      java.lang.Object resolveConstant​(java.lang.String cname)
      Resolves a constant by its name.
      private java.lang.String solveClassName​(java.lang.String name)
      Attempts to solve a fully qualified class name from a simple class name.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • uberspect

        private final JexlUberspect uberspect
        The uberspect.
      • imports

        private final java.util.Set<java.lang.String> imports
        The set of packages to be used as import roots.
      • fqcns

        private final java.util.Map<java.lang.String,​java.lang.String> fqcns
        The map of solved fqcns based on imports keyed on (simple) name, valued as fully qualified class name.
      • parent

        private final FqcnResolver parent
        Optional parent solver.
    • Constructor Detail

      • FqcnResolver

        FqcnResolver​(FqcnResolver solver)
        Creates a class name solver.
        Parameters:
        solver - the parent solver
        Throws:
        java.lang.NullPointerException - if parent solver is null
      • FqcnResolver

        FqcnResolver​(JexlUberspect uber,
                     java.lang.Iterable<java.lang.String> packages)
        Creates a class name solver.
        Parameters:
        uber - the optional class loader
        packages - the optional package names
    • Method Detail

      • getQualifiedName

        java.lang.String getQualifiedName​(java.lang.String name)
        Gets a fully qualified class name from a simple class name and imports.
        Parameters:
        name - the simple name
        Returns:
        the fqcn
      • solveClassName

        private java.lang.String solveClassName​(java.lang.String name)
        Attempts to solve a fully qualified class name from a simple class name.

        It tries to solve the class name as package.classname or package$classname (inner class).

        Parameters:
        name - the simple class name
        Returns:
        the fully qualified class name or null if not found
      • importCheck

        private void importCheck​(java.lang.Iterable<java.lang.String> names)
        Adds a collection of packages/classes as import root, check each name point to one or the other.
        Parameters:
        names - the package names
      • importCheck

        private void importCheck​(java.lang.String name)
        Adds a package as import root, checks the name points to a package or a class.
        Parameters:
        name - the package name
      • importPackages

        FqcnResolver importPackages​(java.lang.Iterable<java.lang.String> packages)
        Imports a list of packages as solving roots.
        Parameters:
        packages - the packages
        Returns:
        this solver
      • isImporting

        boolean isImporting​(java.lang.String pkg)
        Checks is a package is imported by this solver of one of its ascendants.
        Parameters:
        pkg - the package name
        Returns:
        true if an import exists for this package, false otherwise
      • getConstant

        private java.lang.Object getConstant​(java.lang.String... ids)