public class AnnotationTypeConverterLoader extends Object implements org.apache.camel.spi.TypeConverterLoader
Converter
objects and methods to pre-load the TypeConverterRegistry
of converters on startup.
This implementation supports scanning for type converters in JAR files. The META_INF_SERVICES
contains a
list of packages or FQN class names for Converter
classes. The FQN class names is loaded first and directly
by the class loader.
The PackageScanClassResolver
is being used to scan packages for Converter
classes and this procedure
is slower than loading the Converter
classes directly by its FQN class name. Therefore its recommended to
specify FQN class names in the META_INF_SERVICES
file. Likewise the procedure for scanning using
PackageScanClassResolver
may require custom implementations to work in various containers such as JBoss,
OSGi, etc.Modifier and Type | Field and Description |
---|---|
static String |
META_INF_SERVICES |
protected org.apache.camel.spi.PackageScanClassResolver |
resolver |
protected Set<Class<?>> |
visitedClasses |
protected Set<String> |
visitedURIs |
Constructor and Description |
---|
AnnotationTypeConverterLoader(org.apache.camel.spi.PackageScanClassResolver resolver) |
Modifier and Type | Method and Description |
---|---|
protected boolean |
acceptClass(Class<?> clazz) |
protected String[] |
filterPackageNamesOnly(org.apache.camel.spi.PackageScanClassResolver resolver,
String[] packageNames,
Set<Class<?>> classes)
Filters the given list of packages and returns an array of only package names.
|
protected static String[] |
filterUnwantedPackage(String name,
String[] packageNames)
Filters the given list of packages
|
protected String[] |
findPackageNames()
Finds the names of the packages to search for on the classpath looking for text files on the classpath at the
META_INF_SERVICES location. |
protected void |
findPackages(Set<String> packages,
ClassLoader classLoader) |
protected boolean |
isValidConverterMethod(Method method) |
protected boolean |
isValidFallbackConverterMethod(Method method) |
void |
load(org.apache.camel.spi.TypeConverterRegistry registry) |
protected void |
loadConverterMethods(org.apache.camel.spi.TypeConverterRegistry registry,
Class<?> type)
Loads all of the converter methods for the given type
|
protected void |
registerFallbackTypeConverter(org.apache.camel.spi.TypeConverterRegistry registry,
org.apache.camel.TypeConverter typeConverter,
Method method) |
protected void |
registerTypeConverter(org.apache.camel.spi.TypeConverterRegistry registry,
Method method,
Class<?> toType,
Class<?> fromType,
org.apache.camel.TypeConverter typeConverter) |
public static final String META_INF_SERVICES
protected org.apache.camel.spi.PackageScanClassResolver resolver
public AnnotationTypeConverterLoader(org.apache.camel.spi.PackageScanClassResolver resolver)
public void load(org.apache.camel.spi.TypeConverterRegistry registry) throws org.apache.camel.TypeConverterLoaderException
load
in interface org.apache.camel.spi.TypeConverterLoader
org.apache.camel.TypeConverterLoaderException
protected String[] filterPackageNamesOnly(org.apache.camel.spi.PackageScanClassResolver resolver, String[] packageNames, Set<Class<?>> classes)
resolver
- the class resolverpackageNames
- the package namesclasses
- to add loaded @Converter classesprotected String[] findPackageNames() throws IOException
META_INF_SERVICES
location.IOException
- is thrown for IO related errorsprotected void findPackages(Set<String> packages, ClassLoader classLoader) throws IOException
IOException
protected void loadConverterMethods(org.apache.camel.spi.TypeConverterRegistry registry, Class<?> type)
protected boolean acceptClass(Class<?> clazz)
protected void registerTypeConverter(org.apache.camel.spi.TypeConverterRegistry registry, Method method, Class<?> toType, Class<?> fromType, org.apache.camel.TypeConverter typeConverter)
protected boolean isValidConverterMethod(Method method)
protected void registerFallbackTypeConverter(org.apache.camel.spi.TypeConverterRegistry registry, org.apache.camel.TypeConverter typeConverter, Method method)
protected boolean isValidFallbackConverterMethod(Method method)
Apache Camel