Class FqcnResolver
java.lang.Object
org.apache.commons.jexl3.internal.FqcnResolver
- All Implemented Interfaces:
JexlContext.ClassNameResolver
Helper resolving a simple class name into a fully-qualified class name (hence FqcnResolver) using
package names as roots of import.
This only keeps names of classes to avoid any class loading/reloading/permissions issue.
-
Field Summary
FieldsModifier and TypeFieldDescriptionThe map of solved fqcns based on imports keyed on (simple) name, valued as fully-qualified class name.The set of packages to be used as import roots.private final ReadWriteLock
A lock for RW concurrent ops.private final FqcnResolver
Optional parent solver.private final JexlUberspect
The class loader. -
Constructor Summary
ConstructorsConstructorDescriptionFqcnResolver
(FqcnResolver solver) Creates a class name solver.FqcnResolver
(JexlUberspect uber, Iterable<String> packages) Creates a class name solver. -
Method Summary
Modifier and TypeMethodDescription(package private) String
getQualifiedName
(String name) Gets a fully qualified class name from a simple class name and imports.private void
importCheck
(Iterable<String> names) Adds a collection of packages as import root, checks the names are one of a package.private void
importCheck
(String name) Adds a package as import root, checks the name if one of a package.(package private) FqcnResolver
importPackages
(Iterable<String> packages) Imports a list of packages as solving roots.(package private) boolean
isImporting
(String pkg) Checks is a package is imported by this solver of one of its ascendants.resolveClassName
(String name) Resolves a class name.
-
Field Details
-
uberspect
The class loader. -
lock
A lock for RW concurrent ops. -
imports
The set of packages to be used as import roots. -
fqcns
The map of solved fqcns based on imports keyed on (simple) name, valued as fully-qualified class name. -
parent
Optional parent solver.
-
-
Constructor Details
-
FqcnResolver
FqcnResolver(FqcnResolver solver) Creates a class name solver.- Parameters:
solver
- the parent solver- Throws:
NullPointerException
- if parent solver is null
-
FqcnResolver
FqcnResolver(JexlUberspect uber, Iterable<String> packages) Creates a class name solver.- Parameters:
uber
- the optional class loaderpackages
- the optional package names
-
-
Method Details
-
getQualifiedName
Gets a fully qualified class name from a simple class name and imports.- Parameters:
name
- the simple name- Returns:
- the fqcn
-
importCheck
Adds a collection of packages as import root, checks the names are one of a package.- Parameters:
names
- the package names
-
importCheck
Adds a package as import root, checks the name if one of a package.- Parameters:
name
- the package name
-
importPackages
Imports a list of packages as solving roots.- Parameters:
packages
- the packages- Returns:
- this solver
-
isImporting
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
-
resolveClassName
Description copied from interface:JexlContext.ClassNameResolver
Resolves a class name.- Specified by:
resolveClassName
in interfaceJexlContext.ClassNameResolver
- Parameters:
name
- the simple class name- Returns:
- the fully qualified class name
-