/** * Adds a consumer to this component. * * @param consumer the consumer to add */ public void add(Consumer<Component> consumer) { consumer.setParent(this); consumers.put(consumer.getName(), consumer); }
/** * Adds a consumer provided by the implementation. * * @param consumer the consumer to add */ public void add(Consumer<ComponentType> consumer) { consumer.setParent(this); consumers.put(consumer.getName(), consumer); }
/** * Add a consumer and its associated accessible object. * * @param consumer the consumer to add * @param object the consumer method, field or ctor */ public void add(Consumer<ComponentType> consumer, InjectionSite injectionSite, AccessibleObject object) { super.add(consumer); Injectable injectable = new Injectable(InjectableType.CONSUMER, consumer.getName()); addInjectionSite(injectionSite, injectable); injectionSiteMapping.put(consumer, injectionSite); consumerSignatures.put(consumer.getName(), object); }
@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); } }
private void createConsumers(Component<?> definition, LogicalComponent<?> logicalComponent, ComponentType componentType) { for (Consumer<ComponentType> consumer : componentType.getConsumers().values()) { String name = consumer.getName(); URI consumerUri = logicalComponent.getUri().resolve('#' + name); LogicalConsumer logicalConsumer = new LogicalConsumer(consumerUri, consumer, logicalComponent); // producer is configured in the logicalComponent definition Consumer<Component> componentConsumer = definition.getConsumers().get(name); if (componentConsumer != null) { for (URI uri : componentConsumer.getSources()) { addSource(logicalConsumer, uri, logicalComponent); } } else { for (URI uri : consumer.getSources()) { addSource(logicalConsumer, uri, logicalComponent); } } logicalConsumer.setServiceContract(consumer.getServiceContract()); logicalComponent.addConsumer(logicalConsumer); } }
private void createConsumers(Component<?> definition, LogicalComponent<?> logicalComponent, ComponentType componentType) { for (Consumer<ComponentType> consumer : componentType.getConsumers().values()) { String name = consumer.getName(); URI consumerUri = logicalComponent.getUri().resolve('#' + name); LogicalConsumer logicalConsumer = new LogicalConsumer(consumerUri, consumer, logicalComponent); // producer is configured in the logicalComponent definition Consumer<Component> componentConsumer = definition.getConsumers().get(name); if (componentConsumer != null) { for (URI uri : componentConsumer.getSources()) { addSource(logicalConsumer, uri, logicalComponent); } } else { for (URI uri : consumer.getSources()) { addSource(logicalConsumer, uri, logicalComponent); } } logicalConsumer.setServiceContract(consumer.getServiceContract()); logicalComponent.addConsumer(logicalConsumer); } }