in src/java/org/apache/turbine/annotation/AnnotationProcessor.java [246:326]
public static void process(Object object, Boolean hasTurbineServicesInMethodFields) throws TurbineException
{
ServiceManager manager = null;
Configuration config = null;
AssemblerBrokerService assembler = null;
PoolService pool= null;
Class<?> clazz = object.getClass();
boolean isTurbineService = false;
if ( clazz.isAnnotationPresent(TurbineService.class)) {
TurbineService service = clazz.getAnnotation(TurbineService.class);
log.debug("retrieved class annotation: "+ service);
isTurbineService = true;
}
while (clazz != null)
{
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields)
{
Annotation[] annotations = getAnnotations(field);
for (Annotation a : annotations)
{
if (a instanceof TurbineService)
{
if (manager == null)
{
manager = TurbineServices.getInstance();
}
injectTurbineService(object, manager, field, (TurbineService) a);
}
else if (a instanceof TurbineConfiguration)
{
if (config == null)
{
config = Turbine.getConfiguration();
}
injectTurbineConfiguration(object, config, field, (TurbineConfiguration) a);
}
else if (a instanceof TurbineLoader)
{
if (assembler == null)
{
assembler = (AssemblerBrokerService) TurbineServices.getInstance().
getService(AssemblerBrokerService.SERVICE_NAME);
}
injectTurbineLoader(object, assembler, field, (TurbineLoader) a);
}
else if (a instanceof TurbineTool)
{
if (pool == null)
{
pool = (PoolService)TurbineServices.getInstance()
.getService(PoolService.ROLE);
}
injectTurbineTool(object, pool, field, (TurbineTool) a);
}
}
if (isTurbineService)
{
if (field.getType().isAnnotationPresent(TurbineService.class)) {
TurbineService service = field.getType().getAnnotation(TurbineService.class);
log.debug("retrieved implicit class annotation: "+ service);
if (manager == null)
{
manager = TurbineServices.getInstance();
}
injectTurbineService(object, manager, field, service);
}
}
}
if (hasTurbineServicesInMethodFields) {
manager = processMethods(object, manager, clazz, isTurbineService);
}
clazz = clazz.getSuperclass();
}
}