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: fce0a10a97ad77d20ef723a61bdda9cc86eb161b $

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)
          Finds the interfaces that implement component roles by looking recursively in all interfaces of the passed component implementation class.
 List<ComponentDescriptor> getComponentsDescriptors(Class<?> componentClass)
           
 List<ComponentDeclaration> getDeclaredComponents(InputStream componentListStream)
          Get all components listed in the passed resource stream.
 void initialize(ComponentManager manager, ClassLoader classLoader)
          Loads all components defined using annotations.
 void initialize(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

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

getComponentsDescriptors

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

findComponentRoleClasses

public Set<Class<?>> findComponentRoleClasses(Class<?> componentClass)
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


Copyright © 2004-2011 XWiki. All Rights Reserved.