public static void process()

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();
        }
    }