Package com.puppycrawl.tools.checkstyle
Class PackageObjectFactory
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.PackageObjectFactory
-
- All Implemented Interfaces:
ModuleFactory
public class PackageObjectFactory extends java.lang.Object implements ModuleFactory
A factory for creating objects from package names and names. Consider the below example for better understanding.- module name - name of java class that represents module;
- module full name - fully qualifies name of java class that represents module;
- check module short name - name of Check without 'Check' suffix;
- check module name - name of java class that represents Check (with 'Check' suffix);
- check module full name - fully qualifies name of java class that represents Check (with 'Check' suffix).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classPackageObjectFactory.ModuleLoadOptionEnum class to define loading options.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringAMBIGUOUS_MODULE_NAME_EXCEPTION_MESSAGEException message when there is ambiguous module name in config file.static java.lang.StringBASE_PACKAGEBase package of checkstyle modules checks.static java.lang.StringCHECK_SUFFIXSuffix of checks.private java.lang.ClassLoadermoduleClassLoaderThe class loader used to load Checkstyle core and custom modules.private PackageObjectFactory.ModuleLoadOptionmoduleLoadOptionModule load option which defines class search type.private static java.util.Map<java.lang.String,java.lang.String>NAME_TO_FULL_MODULE_NAMEMap of Checkstyle module names to their fully qualified names.static java.lang.StringNULL_LOADER_MESSAGEException message when null class loader is given.static java.lang.StringNULL_PACKAGE_MESSAGEException message when null package name is given.static java.lang.StringPACKAGE_SEPARATORCharacter separate package names in qualified name of java class.private java.util.Set<java.lang.String>packagesA list of package names to prepend to class names.static java.lang.StringSTRING_SEPARATORSeparator to use in strings.private java.util.Map<java.lang.String,java.util.Set<java.lang.String>>thirdPartyNameToFullModuleNamesMap of third party Checkstyle module names to the set of their fully qualified names.static java.lang.StringUNABLE_TO_INSTANTIATE_EXCEPTION_MESSAGEException message when it is unable to create a class instance.
-
Constructor Summary
Constructors Constructor Description PackageObjectFactory(java.lang.String packageName, java.lang.ClassLoader moduleClassLoader)Creates a newPackageObjectFactoryinstance.PackageObjectFactory(java.util.Set<java.lang.String> packageNames, java.lang.ClassLoader moduleClassLoader)Creates a newPackageObjectFactoryinstance.PackageObjectFactory(java.util.Set<java.lang.String> packageNames, java.lang.ClassLoader moduleClassLoader, PackageObjectFactory.ModuleLoadOption moduleLoadOption)Creates a newPackageObjectFactoryinstance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.lang.ObjectcreateFromStandardCheckSet(java.lang.String name)Create object from one of Checkstyle module names.java.lang.ObjectcreateModule(java.lang.String name)Creates a new instance of a class from a given name, or that name concatenated with "Check".private java.lang.ObjectcreateModuleByTryInEachPackage(java.lang.String name)Searching to class with given name (or name concatenated with "Check") in existing packages.private java.lang.ObjectcreateObject(java.lang.String className)Creates a new instance of a named class.private java.lang.ObjectcreateObjectFromFullModuleNames(java.lang.String name, java.util.Set<java.lang.String> fullModuleNames)Create Object from optional full module names.private java.lang.ObjectcreateObjectFromMap(java.lang.String name, java.util.Map<java.lang.String,java.util.Set<java.lang.String>> map)Create object with the help of the supplied map.private static voidfillChecksFromAnnotationPackage()Fill short-to-full module names map with Checks from annotation package.private static voidfillChecksFromBlocksPackage()Fill short-to-full module names map with Checks from blocks package.private static voidfillChecksFromCodingPackage()Fill short-to-full module names map with Checks from coding package.private static voidfillChecksFromDesignPackage()Fill short-to-full module names map with Checks from design package.private static voidfillChecksFromHeaderPackage()Fill short-to-full module names map with Checks from header package.private static voidfillChecksFromImportsPackage()Fill short-to-full module names map with Checks from imports package.private static voidfillChecksFromIndentationPackage()Fill short-to-full module names map with Checks from indentation package.private static voidfillChecksFromJavadocPackage()Fill short-to-full module names map with Checks from javadoc package.private static voidfillChecksFromMetricsPackage()Fill short-to-full module names map with Checks from metrics package.private static voidfillChecksFromModifierPackage()Fill short-to-full module names map with Checks from modifier package.private static voidfillChecksFromNamingPackage()Fill short-to-full module names map with Checks from naming package.private static voidfillChecksFromRegexpPackage()Fill short-to-full module names map with Checks from regexp package.private static voidfillChecksFromSizesPackage()Fill short-to-full module names map with Checks from sizes package.private static voidfillChecksFromWhitespacePackage()Fill short-to-full module names map with Checks from whitespace package.private static voidfillModulesFromChecksPackage()Fill short-to-full module names map with modules from checks package.private static voidfillModulesFromCheckstylePackage()Fill short-to-full module names map with modules from checkstyle package.private static voidfillModulesFromFilefiltersPackage()Fill short-to-full module names map with modules from filefilters package.private static voidfillModulesFromFiltersPackage()Fill short-to-full module names map with modules from filters package.private static voidfillShortToFullModuleNamesMap()Fill short-to-full module names map.private java.util.Map<java.lang.String,java.util.Set<java.lang.String>>generateThirdPartyNameToFullModuleName(java.lang.ClassLoader loader)Generate the map of third party Checkstyle module names to the set of their fully qualified names.static java.lang.StringgetShortFromFullModuleNames(java.lang.String fullName)Returns simple check name from full modules names map.private static java.lang.StringjoinPackageNamesWithClassName(java.lang.String className, java.util.Set<java.lang.String> packages)Creates a string by joining package names with a class name.
-
-
-
Field Detail
-
BASE_PACKAGE
public static final java.lang.String BASE_PACKAGE
Base package of checkstyle modules checks.- See Also:
- Constant Field Values
-
UNABLE_TO_INSTANTIATE_EXCEPTION_MESSAGE
public static final java.lang.String UNABLE_TO_INSTANTIATE_EXCEPTION_MESSAGE
Exception message when it is unable to create a class instance.- See Also:
- Constant Field Values
-
AMBIGUOUS_MODULE_NAME_EXCEPTION_MESSAGE
public static final java.lang.String AMBIGUOUS_MODULE_NAME_EXCEPTION_MESSAGE
Exception message when there is ambiguous module name in config file.- See Also:
- Constant Field Values
-
CHECK_SUFFIX
public static final java.lang.String CHECK_SUFFIX
Suffix of checks.- See Also:
- Constant Field Values
-
PACKAGE_SEPARATOR
public static final java.lang.String PACKAGE_SEPARATOR
Character separate package names in qualified name of java class.- See Also:
- Constant Field Values
-
NULL_LOADER_MESSAGE
public static final java.lang.String NULL_LOADER_MESSAGE
Exception message when null class loader is given.- See Also:
- Constant Field Values
-
NULL_PACKAGE_MESSAGE
public static final java.lang.String NULL_PACKAGE_MESSAGE
Exception message when null package name is given.- See Also:
- Constant Field Values
-
STRING_SEPARATOR
public static final java.lang.String STRING_SEPARATOR
Separator to use in strings.- See Also:
- Constant Field Values
-
NAME_TO_FULL_MODULE_NAME
private static final java.util.Map<java.lang.String,java.lang.String> NAME_TO_FULL_MODULE_NAME
Map of Checkstyle module names to their fully qualified names.
-
packages
private final java.util.Set<java.lang.String> packages
A list of package names to prepend to class names.
-
moduleClassLoader
private final java.lang.ClassLoader moduleClassLoader
The class loader used to load Checkstyle core and custom modules.
-
thirdPartyNameToFullModuleNames
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>> thirdPartyNameToFullModuleNames
Map of third party Checkstyle module names to the set of their fully qualified names.
-
moduleLoadOption
private PackageObjectFactory.ModuleLoadOption moduleLoadOption
Module load option which defines class search type.
-
-
Constructor Detail
-
PackageObjectFactory
public PackageObjectFactory(java.util.Set<java.lang.String> packageNames, java.lang.ClassLoader moduleClassLoader)
Creates a newPackageObjectFactoryinstance.- Parameters:
packageNames- the list of package names to usemoduleClassLoader- class loader used to load Checkstyle core and custom modules
-
PackageObjectFactory
public PackageObjectFactory(java.util.Set<java.lang.String> packageNames, java.lang.ClassLoader moduleClassLoader, PackageObjectFactory.ModuleLoadOption moduleLoadOption)
Creates a newPackageObjectFactoryinstance.- Parameters:
packageNames- the list of package names to usemoduleClassLoader- class loader used to load Checkstyle core and custom modulesmoduleLoadOption- loading option- Throws:
java.lang.IllegalArgumentException- if moduleClassLoader is null or packageNames contains null
-
PackageObjectFactory
public PackageObjectFactory(java.lang.String packageName, java.lang.ClassLoader moduleClassLoader)
Creates a newPackageObjectFactoryinstance.- Parameters:
packageName- The package name to usemoduleClassLoader- class loader used to load Checkstyle core and custom modules- Throws:
java.lang.IllegalArgumentException- if moduleClassLoader is null or packageNames is null
-
-
Method Detail
-
createModule
public java.lang.Object createModule(java.lang.String name) throws CheckstyleException
Creates a new instance of a class from a given name, or that name concatenated with "Check". If the name is a class name, creates an instance of the named class. Otherwise, creates an instance of a class name obtained by concatenating the given name to a package name from a given list of package names.- Specified by:
createModulein interfaceModuleFactory- Parameters:
name- the name of a class.- Returns:
- the
Objectcreated by loader. - Throws:
CheckstyleException- if an error occurs.
-
createFromStandardCheckSet
private java.lang.Object createFromStandardCheckSet(java.lang.String name) throws CheckstyleException
Create object from one of Checkstyle module names.- Parameters:
name- name of module.- Returns:
- instance of module.
- Throws:
CheckstyleException- if the class fails to instantiate or there are ambiguous classes.
-
createObjectFromMap
private java.lang.Object createObjectFromMap(java.lang.String name, java.util.Map<java.lang.String,java.util.Set<java.lang.String>> map) throws CheckstyleException
Create object with the help of the supplied map.- Parameters:
name- name of module.map- the supplied map.- Returns:
- instance of module if it is found in modules map and no ambiguous classes exist.
- Throws:
CheckstyleException- if the class fails to instantiate or there are ambiguous classes.
-
createObjectFromFullModuleNames
private java.lang.Object createObjectFromFullModuleNames(java.lang.String name, java.util.Set<java.lang.String> fullModuleNames) throws CheckstyleException
Create Object from optional full module names. In most case, there should be only one element infullModuleName, otherwise an exception would be thrown.- Parameters:
name- name of modulefullModuleNames- the supplied full module names set- Returns:
- instance of module if there is only one element in
fullModuleName - Throws:
CheckstyleException- if the class fails to instantiate or there are more than one element infullModuleName
-
generateThirdPartyNameToFullModuleName
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>> generateThirdPartyNameToFullModuleName(java.lang.ClassLoader loader)
Generate the map of third party Checkstyle module names to the set of their fully qualified names.- Parameters:
loader- the class loader used to load Checkstyle package names- Returns:
- the map of third party Checkstyle module names to the set of their fully qualified names
-
getShortFromFullModuleNames
public static java.lang.String getShortFromFullModuleNames(java.lang.String fullName)
Returns simple check name from full modules names map.- Parameters:
fullName- name of the class for joining.- Returns:
- simple check name.
-
joinPackageNamesWithClassName
private static java.lang.String joinPackageNamesWithClassName(java.lang.String className, java.util.Set<java.lang.String> packages)
Creates a string by joining package names with a class name.- Parameters:
className- name of the class for joining.packages- packages names.- Returns:
- a string which is obtained by joining package names with a class name.
-
createObject
private java.lang.Object createObject(java.lang.String className) throws CheckstyleException
Creates a new instance of a named class.- Parameters:
className- the name of the class to instantiate.- Returns:
- the
Objectcreated by loader or null. - Throws:
CheckstyleException- if the class fails to instantiate.
-
createModuleByTryInEachPackage
private java.lang.Object createModuleByTryInEachPackage(java.lang.String name) throws CheckstyleException
Searching to class with given name (or name concatenated with "Check") in existing packages. Returns instance if class found or, otherwise, null.- Parameters:
name- the name of a class.- Returns:
- the
Objectcreated by loader. - Throws:
CheckstyleException- if an error occurs.
-
fillShortToFullModuleNamesMap
private static void fillShortToFullModuleNamesMap()
Fill short-to-full module names map.
-
fillChecksFromAnnotationPackage
private static void fillChecksFromAnnotationPackage()
Fill short-to-full module names map with Checks from annotation package.
-
fillChecksFromBlocksPackage
private static void fillChecksFromBlocksPackage()
Fill short-to-full module names map with Checks from blocks package.
-
fillChecksFromCodingPackage
private static void fillChecksFromCodingPackage()
Fill short-to-full module names map with Checks from coding package.
-
fillChecksFromDesignPackage
private static void fillChecksFromDesignPackage()
Fill short-to-full module names map with Checks from design package.
-
fillChecksFromHeaderPackage
private static void fillChecksFromHeaderPackage()
Fill short-to-full module names map with Checks from header package.
-
fillChecksFromImportsPackage
private static void fillChecksFromImportsPackage()
Fill short-to-full module names map with Checks from imports package.
-
fillChecksFromIndentationPackage
private static void fillChecksFromIndentationPackage()
Fill short-to-full module names map with Checks from indentation package.
-
fillChecksFromJavadocPackage
private static void fillChecksFromJavadocPackage()
Fill short-to-full module names map with Checks from javadoc package.
-
fillChecksFromMetricsPackage
private static void fillChecksFromMetricsPackage()
Fill short-to-full module names map with Checks from metrics package.
-
fillChecksFromModifierPackage
private static void fillChecksFromModifierPackage()
Fill short-to-full module names map with Checks from modifier package.
-
fillChecksFromNamingPackage
private static void fillChecksFromNamingPackage()
Fill short-to-full module names map with Checks from naming package.
-
fillChecksFromRegexpPackage
private static void fillChecksFromRegexpPackage()
Fill short-to-full module names map with Checks from regexp package.
-
fillChecksFromSizesPackage
private static void fillChecksFromSizesPackage()
Fill short-to-full module names map with Checks from sizes package.
-
fillChecksFromWhitespacePackage
private static void fillChecksFromWhitespacePackage()
Fill short-to-full module names map with Checks from whitespace package.
-
fillModulesFromChecksPackage
private static void fillModulesFromChecksPackage()
Fill short-to-full module names map with modules from checks package.
-
fillModulesFromFilefiltersPackage
private static void fillModulesFromFilefiltersPackage()
Fill short-to-full module names map with modules from filefilters package.
-
fillModulesFromFiltersPackage
private static void fillModulesFromFiltersPackage()
Fill short-to-full module names map with modules from filters package.
-
fillModulesFromCheckstylePackage
private static void fillModulesFromCheckstylePackage()
Fill short-to-full module names map with modules from checkstyle package.
-
-