private void createProducers(ComponentDefinition<?> definition, LogicalComponent<?> component, ComponentType componentType) { for (ProducerDefinition producer : componentType.getProducers().values()) { String name = producer.getName(); URI producerUri = component.getUri().resolve('#' + name); LogicalProducer logicalProducer = new LogicalProducer(producerUri, producer, component); // producer is configured in the component definition ComponentProducer componentProducer = definition.getProducers().get(name); if (componentProducer != null) { logicalProducer.addIntents(componentProducer.getIntents()); // TODO refactor this: URIs should be resolved to channels by a separate service that also handles promotion for (URI uri : componentProducer.getTargets()) { if (uri.isAbsolute()) { LogicalComponent<?> domain = component.getParent(); while (domain.getParent() != null) { domain = domain.getParent(); } logicalProducer.addTarget(URI.create(domain.getUri().toString() + "/" + uri.getAuthority())); } else { logicalProducer.addTarget(URI.create(component.getParent().getUri().toString() + "/" + uri.toString())); } } } component.addProducer(logicalProducer); } }
public PhysicalConnectionSourceDefinition generateConnectionSource(LogicalProducer producer) throws GenerationException { String producerName = producer.getDefinition().getName(); URI uri = producer.getParent().getUri(); ServiceContract serviceContract = producer.getDefinition().getServiceContract(); String interfaceName = serviceContract.getQualifiedInterfaceName(); return new SpringConnectionSourceDefinition(producerName, interfaceName, uri); }