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); } }
@SuppressWarnings({"unchecked"}) public void generateConnectionTarget(JavaConnectionTarget target, LogicalConsumer consumer) { // Create an injectable for the consumer. Note in cases where the consumer is a method that is connected via an event stream and is used to receive // events rather than act as a setter for a direct connection, the injector will never be activated. Injectable injectable = new Injectable(InjectableType.CONSUMER, consumer.getUri().getFragment()); target.setInjectable(injectable); LogicalComponent<? extends JavaImplementation> component = (LogicalComponent<? extends JavaImplementation>) consumer.getParent(); URI uri = component.getUri(); target.setUri(uri); ServiceContract serviceContract = consumer.getDefinition().getServiceContract(); Class<?> interfaze = serviceContract.getInterfaceClass(); target.setServiceInterface(interfaze); InjectingComponentType type = component.getDefinition().getImplementation().getComponentType(); AccessibleObject object = type.getConsumerSite(consumer.getUri().getFragment()); if (object == null) { // programming error throw new Fabric3Exception("Consumer not found on: " + consumer.getUri()); } target.setConsumerSite(object); }