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 ReadWriteLockA lock for RW concurrent ops.private final FqcnResolverOptional parent solver.private final JexlUberspectThe 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) StringgetQualifiedName(String name) Gets a fully qualified class name from a simple class name and imports.private voidimportCheck(Iterable<String> names) Adds a collection of packages as import root, checks the names are one of a package.private voidimportCheck(String name) Adds a package as import root, checks the name if one of a package.(package private) FqcnResolverimportPackages(Iterable<String> packages) Imports a list of packages as solving roots.(package private) booleanisImporting(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.ClassNameResolverResolves a class name.- Specified by:
resolveClassNamein interfaceJexlContext.ClassNameResolver- Parameters:
name- the simple class name- Returns:
- the fully qualified class name
-