private <A extends Annotation> void visitMethod(A annotation, Method method, Class<?> implClass, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitMethod(annotation, method, implClass, componentType, context); } }
private <A extends Annotation> void visitConstructor(A annotation, Constructor<?> constructor, Class<?> implClass, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitConstructor(annotation, constructor, implClass, componentType, context); } }
private <A extends Annotation> void visitConstructorParameter(A annotation, Constructor<?> constructor, int index, Class<?> implClass, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitConstructorParameter(annotation, constructor, index, implClass, componentType, context); } }
private <A extends Annotation> void visitField(A annotation, Field field, Class<?> implClass, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitField(annotation, field, implClass, componentType, context); } }
private <A extends Annotation> void visitMethodParameter(A annotation, Method method, int index, Class<?> implClass, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitMethodParameter(annotation, method, index, implClass, componentType, context); } }
private <A extends Annotation> void visitType(A annotation, Class<?> clazz, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitType(annotation, clazz, componentType, context); } else { // check if the annotation is a policy set or intent if (policyProcessor != null) { policyProcessor.process(annotation, componentType, context); } } }
private <A extends Annotation> void visitField(A annotation, Field field, Class<?> implClass, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitField(annotation, field, implClass, componentType, context); } }
private <A extends Annotation> void visitMethodParameter(A annotation, Method method, int index, Class<?> implClass, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitMethodParameter(annotation, method, index, implClass, componentType, context); } }
private <A extends Annotation> void visitType(A annotation, Class<?> clazz, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitType(annotation, clazz, componentType, context); } else { // check if the annotation is a policy if (policyProcessor != null) { policyProcessor.process(annotation, componentType, context); } // check for meta-annotation for (Annotation metaAnnotation : annotation.annotationType().getDeclaredAnnotations()) { if (skipAnnotation(metaAnnotation)) { continue; } visitType(metaAnnotation, clazz, componentType, context); } } }
private <A extends Annotation> void visitMethod(A annotation, Method method, Class<?> implClass, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitMethod(annotation, method, implClass, componentType, context); } else { // check if the annotation is a policy if (policyProcessor != null) { policyProcessor.process(annotation, componentType, context); } } }
private <A extends Annotation> void visitConstructorParameter(A annotation, Constructor<?> constructor, int index, Class<?> implClass, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitConstructorParameter(annotation, constructor, index, implClass, componentType, context); } }
private <A extends Annotation> void visitConstructor(A annotation, Constructor<?> constructor, Class<?> implClass, InjectingComponentType componentType, IntrospectionContext context) { AnnotationProcessor<A> processor = getProcessor(annotation); if (processor != null) { processor.visitConstructor(annotation, constructor, implClass, componentType, context); } }
@SuppressWarnings("unchecked") private void processAnnotations(Object instance, Component<?> definition, IntrospectionContext context) { InjectingComponentType componentType = (InjectingComponentType) definition.getComponentType(); Class<?> implClass = instance.getClass(); // handle consumer annotations AnnotationProcessor consumerProcessor = annotationProcessors.get(org.fabric3.api.annotation.Consumer.class); for (Method method : implClass.getDeclaredMethods()) { org.fabric3.api.annotation.Consumer consumer = method.getAnnotation(org.fabric3.api.annotation.Consumer.class); if (consumer == null) { continue; } TypeMapping mapping = context.getTypeMapping(implClass); if (mapping == null) { mapping = new TypeMapping(); context.addTypeMapping(implClass, mapping); } helper.resolveTypeParameters(implClass, mapping); consumerProcessor.visitMethod(consumer, method, implClass, componentType, context); } // add automatic configuration for consumer annotations for (Consumer<ComponentType> consumer : componentType.getConsumers().values()) { String name = consumer.getName(); Consumer<Component> componentConsumer = new Consumer<>(name); componentConsumer.setSources(Collections.singletonList(URI.create(name))); definition.add(componentConsumer); } }