Package it.tidalwave.role.spi
Class SystemRoleFactorySupport
- java.lang.Object
-
- it.tidalwave.role.spi.SystemRoleFactorySupport
-
- All Implemented Interfaces:
SystemRoleFactory
- Direct Known Subclasses:
AnnotationSpringSystemRoleFactory
public abstract class SystemRoleFactorySupport extends java.lang.Object implements SystemRoleFactory
A basic implementation of aSystemRoleFactory
. 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.SystemRoleFactory
SystemRoleFactory.Inner
-
-
Constructor Summary
Constructors Constructor Description SystemRoleFactorySupport()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.Optional<java.lang.Class<?>>
findContextTypeForRole(java.lang.Class<?> roleImplementationType)
Returns the type of the context associated to the given role implementation type.protected 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 <T> java.util.Optional<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 interfaceSystemRoleFactory
- 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
@Nonnull protected <T> java.util.Optional<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 java.util.Optional<java.lang.Class<?>> findContextTypeForRole(@Nonnull java.lang.Class<?> roleImplementationType)
Returns the type of the context associated to the given role implementation type.- Parameters:
roleImplementationType
- the role type- Returns:
- the context type
-
findDatumTypesForRole
@Nonnull protected 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()
-
-