Class AnnotationProvider
- java.lang.Object
-
- org.apache.myfaces.spi.AnnotationProvider
-
- All Implemented Interfaces:
FacesWrapper<AnnotationProvider>
- Direct Known Subclasses:
AnnotationProviderWrapper
,DefaultAnnotationProvider
public abstract class AnnotationProvider extends Object implements FacesWrapper<AnnotationProvider>
This interface provide a way to override myfaces annotation scanning algorithm that needs to be found at startup:FacesComponent
FacesBehavior
FacesConverter
NamedEvent
FacesRenderer
FacesBehaviorRenderer
FacesValidator
This is provided to allow application containers solve the following points
- It is common application containers to have its own protocols to handle files. It is not the same to scan annotation inside a jar than look on a directory.
- If the application container has some optimization related to annotation scanning or it already did that task, it is better to reuse that information instead do the same thing twice.
To override this class, create a file on a jar file with the following entry name: /META-INF/services/org.apache.myfaces.spi.AnnotationProvider and put the desired class name of the class that will override or extend the default AnnotationProvider.
To wrap the default AnnotationProvider, use a constructor like CustomAnnotationProvider(AnnotationProvider ap)
- Since:
- 2.0.2
- Author:
- Leonardo Uribe
-
-
Constructor Summary
Constructors Constructor Description AnnotationProvider()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract Map<Class<? extends Annotation>,Set<Class<?>>>
getAnnotatedClasses(ExternalContext ctx)
Retrieve a map containing the classes that contains annotations used by jsf implementation at startup.abstract Set<URL>
getBaseUrls(ExternalContext ctx)
The returned Set<URL> urls are calculated in this way ( see Faces 2.0 spec section 11.4.2 for definitions )AnnotationProvider
getWrapped()
-
-
-
Method Detail
-
getAnnotatedClasses
public abstract Map<Class<? extends Annotation>,Set<Class<?>>> getAnnotatedClasses(ExternalContext ctx)
Retrieve a map containing the classes that contains annotations used by jsf implementation at startup.The default implementation must comply with Faces 2.0 spec section 11.5.1 Requirements for scanning of classes for annotations.
This method could call getBaseUrls() to obtain a list of URL that could be used to indicate jar files of annotations in the classpath.
If the <faces-config> element in the WEB-INF/faces-config.xml file contains metadata-complete attribute whose value is "true", this method should not be called.
- Parameters:
ctx
- The current ExternalContext- Returns:
- A map with all classes that could contain annotations.
-
getBaseUrls
public abstract Set<URL> getBaseUrls(ExternalContext ctx) throws IOException
The returned Set<URL> urls are calculated in this way ( see Faces 2.0 spec section 11.4.2 for definitions )
- All resources that match either "META-INF/faces-config.xml" or end with ".facesconfig.xml" directly in
the "META-INF" directory (considered
applicationConfigurationResources)
- Parameters:
ctx
-- Returns:
- Throws:
IOException
- Since:
- 2.1.9, 2.0.15
- All resources that match either "META-INF/faces-config.xml" or end with ".facesconfig.xml" directly in
the "META-INF" directory (considered
-
getWrapped
public AnnotationProvider getWrapped()
- Specified by:
getWrapped
in interfaceFacesWrapper<AnnotationProvider>
-
-