org.xwiki.component.annotation
Class ComponentAnnotationLoader

java.lang.Object
  extended by org.xwiki.component.annotation.ComponentAnnotationLoader

public class ComponentAnnotationLoader
extends Object

Dynamically loads all components defined using Annotations and declared in META-INF/components.txt files.

Since:
1.8.1
Version:
$Id: 5f02f585a8684d5bda2a2cf79938a3414e021f91 $

Field Summary
static String COMPONENT_LIST
          Location in the classloader of the file defining the list of component implementation class to parser for annotations.
static String COMPONENT_OVERRIDE_LIST
          Deprecated. starting with 3.3M1 use the notion of priorities instead (see ComponentDeclaration).
 
Constructor Summary
ComponentAnnotationLoader()
           
 
Method Summary
 Set<Class<?>> findComponentRoleClasses(Class<?> componentClass)
          Deprecated. since 4.0M1 use findComponentRoleTypes(Class) instead
 Set<Type> findComponentRoleTypes(Class<?> componentClass)
           
 Set<Type> findComponentRoleTypes(Class<?> componentClass, Type[] parameters)
           
 List<ComponentDescriptor> getComponentsDescriptors(Class<?> componentClass)
           
 List<ComponentDeclaration> getDeclaredComponents(InputStream componentListStream)
          Get all components listed in the passed resource stream.
 List<ComponentDeclaration> getDeclaredComponentsFromJAR(InputStream jarFile)
          Get all components listed in a JAR file.
protected  org.slf4j.Logger getLogger()
          Useful for unit tests that need to capture logs; they can return a mock logger instead of the real logger and thus assert what's been logged.
 void initialize(ComponentManager manager, ClassLoader classLoader)
          Loads all components defined using annotations.
 void initialize(ComponentManager manager, ClassLoader classLoader, List<ComponentDeclaration> componentDeclarations)
           
 void register(ComponentManager manager, ClassLoader classLoader, List<ComponentDeclaration> componentDeclarations)
           
 void unregister(ComponentManager manager, ClassLoader classLoader, List<ComponentDeclaration> componentDeclarations)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

COMPONENT_LIST

public static final String COMPONENT_LIST
Location in the classloader of the file defining the list of component implementation class to parser for annotations.

See Also:
Constant Field Values

COMPONENT_OVERRIDE_LIST

@Deprecated
public static final String COMPONENT_OVERRIDE_LIST
Deprecated. starting with 3.3M1 use the notion of priorities instead (see ComponentDeclaration).
Location in the classloader of the file specifying which component implementation to use when several components with the same role/hint are found.

See Also:
Constant Field Values
Constructor Detail

ComponentAnnotationLoader

public ComponentAnnotationLoader()
Method Detail

initialize

public void initialize(ComponentManager manager,
                       ClassLoader classLoader)
Loads all components defined using annotations.

Parameters:
manager - the component manager to use to dynamically register components
classLoader - the classloader to use to look for the Component list declaration file ( META-INF/components.txt)

initialize

public void initialize(ComponentManager manager,
                       ClassLoader classLoader,
                       List<ComponentDeclaration> componentDeclarations)
Parameters:
manager - the component manager to use to dynamically register components
classLoader - the classloader to use to look for the Component list declaration file ( META-INF/components.txt)
componentDeclarations - the declarations of components to register
Since:
3.3M1

register

public void register(ComponentManager manager,
                     ClassLoader classLoader,
                     List<ComponentDeclaration> componentDeclarations)
Parameters:
manager - the component manager to use to dynamically register components
classLoader - the classloader to use to look for the Component list declaration file ( META-INF/components.txt)
componentDeclarations - the declarations of components to register
Since:
4.0M1

unregister

public void unregister(ComponentManager manager,
                       ClassLoader classLoader,
                       List<ComponentDeclaration> componentDeclarations)
Parameters:
manager - the component manager to use to dynamically register components
classLoader - the classloader to use to look for the Component list declaration file ( META-INF/components.txt)
componentDeclarations - the declarations of components to register
Since:
4.0M1

getComponentsDescriptors

public List<ComponentDescriptor> getComponentsDescriptors(Class<?> componentClass)

findComponentRoleTypes

public Set<Type> findComponentRoleTypes(Class<?> componentClass)

findComponentRoleTypes

public Set<Type> findComponentRoleTypes(Class<?> componentClass,
                                        Type[] parameters)

findComponentRoleClasses

@Deprecated
public Set<Class<?>> findComponentRoleClasses(Class<?> componentClass)
Deprecated. since 4.0M1 use findComponentRoleTypes(Class) instead

Finds the interfaces that implement component roles by looking recursively in all interfaces of the passed component implementation class. If the roles annotation value is specified then use the specified list instead of doing auto-discovery. Also note that we support component classes implementing JSR 330's Provider (and thus without a component role annotation).

Parameters:
componentClass - the component implementation class for which to find the component roles it implements
Returns:
the list of component role classes implemented

getDeclaredComponents

public List<ComponentDeclaration> getDeclaredComponents(InputStream componentListStream)
                                                 throws IOException
Get all components listed in the passed resource stream. The format is: (priority level):(fully qualified component implementation name).

Parameters:
componentListStream - the stream to parse
Returns:
the list of component declaration (implementation class names and priorities)
Throws:
IOException - in case of an error loading the component list resource
Since:
3.3M1

getDeclaredComponentsFromJAR

public List<ComponentDeclaration> getDeclaredComponentsFromJAR(InputStream jarFile)
                                                        throws IOException
Get all components listed in a JAR file.

Parameters:
jarFile - the JAR file to parse
Returns:
the list of component declaration (implementation class names and priorities)
Throws:
IOException - in case of an error loading the component list resource

getLogger

protected org.slf4j.Logger getLogger()
Useful for unit tests that need to capture logs; they can return a mock logger instead of the real logger and thus assert what's been logged.

Returns:
the Logger instance to use to log


Copyright © 2004-2013 XWiki. All Rights Reserved.