Package it.tidalwave.role.spi
Class RoleManagerSupport
- java.lang.Object
-
- it.tidalwave.role.spi.RoleManagerSupport
-
- All Implemented Interfaces:
RoleManager
public abstract class RoleManagerSupport extends java.lang.Object implements RoleManager
A basic implementation of aRoleManager
. This class must be specialized to:- discover roles (see
scan(java.util.Collection)
- associate roles to a datum (see
findDatumTypesForRole(java.lang.Class)
- associate roles to contexts (see
findContextTypeForRole(java.lang.Class)
- eventually retrieve beans to inject in created roles (see
getBean(java.lang.Class)
- Author:
- Fabrizio Giudici
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface it.tidalwave.role.spi.RoleManager
RoleManager.Locator
-
-
Constructor Summary
Constructors Constructor Description RoleManagerSupport()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract java.lang.Class<?>
findContextTypeForRole(java.lang.Class<?> roleImplementationType)
Returns the type of the context associated to the given role implementation type.protected abstract java.lang.Class<?>[]
findDatumTypesForRole(java.lang.Class<?> roleImplementationType)
Returns the valid datum types for the given role implementation type.<T> java.util.List<T>
findRoles(java.lang.Object datum, java.lang.Class<? extends T> roleType)
Retrieves the roles of the given class for the given owner object.protected abstract <T> T
getBean(java.lang.Class<T> beanType)
Retrieves an extra bean.void
logRoles()
protected void
scan(java.util.Collection<java.lang.Class<?>> roleImplementationTypes)
Scans all the given role implementation classes and build a map of roles by owner class.
-
-
-
Method Detail
-
findRoles
@Nonnull public <T> java.util.List<T> findRoles(@Nonnull java.lang.Object datum, @Nonnull java.lang.Class<? extends T> roleType)
Retrieves the roles of the given class for the given owner object.- Specified by:
findRoles
in interfaceRoleManager
- Type Parameters:
T
- the static type of the roles- Parameters:
datum
- the owner objectroleType
- the dynamic type of the roles- Returns:
- a list of roles
-
scan
protected void scan(@Nonnull java.util.Collection<java.lang.Class<?>> roleImplementationTypes)
Scans all the given role implementation classes and build a map of roles by owner class.- Parameters:
roleImplementationTypes
- the types of role implementations to scan
-
getBean
@Nullable protected abstract <T> T getBean(@Nonnull java.lang.Class<T> beanType)
Retrieves an extra bean.- Type Parameters:
T
- the static type of the bean- Parameters:
beanType
- the dynamic type of the bean- Returns:
- the bean
-
findContextTypeForRole
@Nonnull protected abstract java.lang.Class<?> findContextTypeForRole(@Nonnull java.lang.Class<?> roleImplementationType) throws NotFoundException
Returns the type of the context associated to the given role implementation type.- Parameters:
roleImplementationType
- the role type- Returns:
- the context type
- Throws:
NotFoundException
- if no context is found
-
findDatumTypesForRole
@Nonnull protected abstract java.lang.Class<?>[] findDatumTypesForRole(@Nonnull java.lang.Class<?> roleImplementationType)
Returns the valid datum types for the given role implementation type.- Parameters:
roleImplementationType
- the role type- Returns:
- the datum types
-
logRoles
public void logRoles()
-
-