Class ImageImplRegistry
- java.lang.Object
-
- org.apache.xmlgraphics.image.loader.spi.ImageImplRegistry
-
public class ImageImplRegistry extends java.lang.Object
This class is the registry for all implementations of the various service provider interfaces for the image package.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
ImageImplRegistry.ImageLoaderFactoryComparator
Comparator forImageLoaderFactory
classes.(package private) static class
ImageImplRegistry.MyIterator
private static class
ImageImplRegistry.PreloaderHolder
Holder class for registeredImagePreloader
instances.
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map
additionalPenalties
A Map (key: implementation classes) with additional penalties to fine-tune the registry.private int
converterModifications
private java.util.List
converters
Holds the list of ImageConvertersprivate static ImageImplRegistry
defaultInstance
Singleton instancestatic int
INFINITE_PENALTY
Infinite penalty value which shall force any implementation to become ineligible.private int
lastPreloaderIdentifier
private int
lastPreloaderSort
private java.util.Map
loaders
Holds the list of ImageLoaderFactoriesprotected static org.apache.commons.logging.Log
log
loggerprivate java.util.List
preloaders
Holds the list of preloaders
-
Constructor Summary
Constructors Constructor Description ImageImplRegistry()
Main constructor.ImageImplRegistry(boolean discover)
Main constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
discoverClasspathImplementations()
Discovers all implementations in the application's classpath.Penalty
getAdditionalPenalty(java.lang.String className)
Returns the additional penalty value set for a particular implementation class.static ImageImplRegistry
getDefaultInstance()
Returns the default instance of the Image implementation registry.int
getImageConverterModifications()
Returns the number of modifications to the collection of registered ImageConverter instances.java.util.Collection
getImageConverters()
Returns the Collection of registered ImageConverter instances.ImageLoaderFactory[]
getImageLoaderFactories(java.lang.String mime)
Returns an array of ImageLoaderFactory instances which support the given MIME type.ImageLoaderFactory[]
getImageLoaderFactories(ImageInfo imageInfo, ImageFlavor flavor)
Returns an array ofImageLoaderFactory
instances that support the MIME type indicated by anImageInfo
object and can generate the given image flavor.ImageLoaderFactory
getImageLoaderFactory(ImageInfo imageInfo, ImageFlavor flavor)
Returns the best ImageLoaderFactory supporting theImageInfo
and image flavor.java.util.Iterator
getPreloaderIterator()
Returns an iterator over all registered ImagePreloader instances.private ImageImplRegistry.PreloaderHolder
newPreloaderHolder(ImagePreloader preloader)
void
registerConverter(ImageConverter converter)
Registers a new ImageConverter.void
registerLoaderFactory(ImageLoaderFactory loaderFactory)
Registers a new ImageLoaderFactory.void
registerPreloader(ImagePreloader preloader)
Registers a new ImagePreloader.void
setAdditionalPenalty(java.lang.String className, Penalty penalty)
Sets an additional penalty for a particular implementation class for any of the interface administered by this registry class.private void
sortPreloaders()
-
-
-
Field Detail
-
log
protected static final org.apache.commons.logging.Log log
logger
-
INFINITE_PENALTY
public static final int INFINITE_PENALTY
Infinite penalty value which shall force any implementation to become ineligible.- See Also:
- Constant Field Values
-
preloaders
private java.util.List preloaders
Holds the list of preloaders
-
lastPreloaderIdentifier
private int lastPreloaderIdentifier
-
lastPreloaderSort
private int lastPreloaderSort
-
loaders
private java.util.Map loaders
Holds the list of ImageLoaderFactories
-
converters
private java.util.List converters
Holds the list of ImageConverters
-
converterModifications
private int converterModifications
-
additionalPenalties
private java.util.Map additionalPenalties
A Map (key: implementation classes) with additional penalties to fine-tune the registry.
-
defaultInstance
private static ImageImplRegistry defaultInstance
Singleton instance
-
-
Constructor Detail
-
ImageImplRegistry
public ImageImplRegistry(boolean discover)
Main constructor. This constructor allows to disable plug-in discovery for testing purposes.- Parameters:
discover
- true if implementation classes shall automatically be discovered.
-
ImageImplRegistry
public ImageImplRegistry()
Main constructor.
-
-
Method Detail
-
getDefaultInstance
public static ImageImplRegistry getDefaultInstance()
Returns the default instance of the Image implementation registry.- Returns:
- the default instance
-
discoverClasspathImplementations
public void discoverClasspathImplementations()
Discovers all implementations in the application's classpath.
-
registerPreloader
public void registerPreloader(ImagePreloader preloader)
Registers a new ImagePreloader.- Parameters:
preloader
- An ImagePreloader instance
-
newPreloaderHolder
private ImageImplRegistry.PreloaderHolder newPreloaderHolder(ImagePreloader preloader)
-
sortPreloaders
private void sortPreloaders()
-
registerLoaderFactory
public void registerLoaderFactory(ImageLoaderFactory loaderFactory)
Registers a new ImageLoaderFactory.- Parameters:
loaderFactory
- An ImageLoaderFactory instance
-
getImageConverters
public java.util.Collection getImageConverters()
Returns the Collection of registered ImageConverter instances.- Returns:
- a Collection<ImageConverter>
-
getImageConverterModifications
public int getImageConverterModifications()
Returns the number of modifications to the collection of registered ImageConverter instances. This is used to detect changes in the registry concerning ImageConverters.- Returns:
- the number of modifications
-
registerConverter
public void registerConverter(ImageConverter converter)
Registers a new ImageConverter.- Parameters:
converter
- An ImageConverter instance
-
getPreloaderIterator
public java.util.Iterator getPreloaderIterator()
Returns an iterator over all registered ImagePreloader instances.- Returns:
- an iterator over ImagePreloader instances.
-
getImageLoaderFactory
public ImageLoaderFactory getImageLoaderFactory(ImageInfo imageInfo, ImageFlavor flavor)
Returns the best ImageLoaderFactory supporting theImageInfo
and image flavor. If there are multiple ImageLoaderFactories the one with the least usage penalty is selected.- Parameters:
imageInfo
- the image info objectflavor
- the image flavor.- Returns:
- an ImageLoaderFactory instance or null, if no suitable implementation was found
-
getImageLoaderFactories
public ImageLoaderFactory[] getImageLoaderFactories(ImageInfo imageInfo, ImageFlavor flavor)
Returns an array ofImageLoaderFactory
instances that support the MIME type indicated by anImageInfo
object and can generate the given image flavor.- Parameters:
imageInfo
- the image info objectflavor
- the target image flavor- Returns:
- the array of image loader factories
-
getImageLoaderFactories
public ImageLoaderFactory[] getImageLoaderFactories(java.lang.String mime)
Returns an array of ImageLoaderFactory instances which support the given MIME type. The instances are returned in no particular order.- Parameters:
mime
- the MIME type to find ImageLoaderFactories for- Returns:
- the array of ImageLoaderFactory instances
-
setAdditionalPenalty
public void setAdditionalPenalty(java.lang.String className, Penalty penalty)
Sets an additional penalty for a particular implementation class for any of the interface administered by this registry class. No checking is performed to verify if the className parameter is valid.- Parameters:
className
- the fully qualified class name of the implementation classpenalty
- the additional penalty or null to clear any existing value
-
getAdditionalPenalty
public Penalty getAdditionalPenalty(java.lang.String className)
Returns the additional penalty value set for a particular implementation class. If no such value is set, 0 is returned.- Parameters:
className
- the fully qualified class name of the implementation class- Returns:
- the additional penalty value
-
-