From e87456382fa9d15126fb8459b1b57cdbbb5f7732 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 28 Apr 2016 09:01:03 +0200 Subject: [PATCH] Fixed Stream config --- .../stub-runner-messaging-stream/build.gradle | 1 + .../StubRunnerStreamConfiguration.groovy | 67 ------------------- .../StubRunnerStreamMessageSelector.groovy | 1 + .../main/resources/META-INF/spring.factories | 3 - .../stream/StreamStubRunnerSpec.groovy | 4 ++ 5 files changed, 6 insertions(+), 70 deletions(-) delete mode 100644 stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/groovy/io/codearte/accurest/stubrunner/messaging/stream/StubRunnerStreamConfiguration.groovy delete mode 100644 stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/resources/META-INF/spring.factories diff --git a/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/build.gradle b/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/build.gradle index 661f96ced1..273a830498 100644 --- a/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/build.gradle +++ b/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/build.gradle @@ -11,6 +11,7 @@ repositories { dependencies { compile project(':stub-runner-root:stub-runner-spring') + compile project(':stub-runner-root:stub-runner-messaging-root:stub-runner-messaging-integration') compile project(':accurest-messaging-root:accurest-messaging-stream') compile 'org.springframework.integration:spring-integration-java-dsl:[1.1.2.RELEASE,)' diff --git a/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/groovy/io/codearte/accurest/stubrunner/messaging/stream/StubRunnerStreamConfiguration.groovy b/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/groovy/io/codearte/accurest/stubrunner/messaging/stream/StubRunnerStreamConfiguration.groovy deleted file mode 100644 index 6c3508f3ea..0000000000 --- a/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/groovy/io/codearte/accurest/stubrunner/messaging/stream/StubRunnerStreamConfiguration.groovy +++ /dev/null @@ -1,67 +0,0 @@ -package io.codearte.accurest.stubrunner.messaging.stream - -import groovy.transform.CompileStatic -import io.codearte.accurest.dsl.GroovyDsl -import io.codearte.accurest.stubrunner.BatchStubRunner -import io.codearte.accurest.stubrunner.StubConfiguration -import io.codearte.accurest.stubrunner.spring.StubRunnerConfiguration -import org.springframework.beans.factory.config.AutowireCapableBeanFactory -import org.springframework.cloud.stream.annotation.EnableBinding -import org.springframework.cloud.stream.binding.ChannelBindingService -import org.springframework.context.Lifecycle -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.Configuration -import org.springframework.context.annotation.Import -import org.springframework.integration.dsl.FilterEndpointSpec -import org.springframework.integration.dsl.GenericEndpointSpec -import org.springframework.integration.dsl.IntegrationFlowBuilder -import org.springframework.integration.dsl.IntegrationFlows -import org.springframework.messaging.Message -import org.springframework.messaging.MessageChannel - -/** - * Spring Cloud Stream configuration that iterates over the downloaded Groovy DSLs - * and registers a flow for each DSL. - * - * @author Marcin Grzejszczak - */ -@Configuration -@Import(StubRunnerConfiguration) -@EnableBinding -@CompileStatic -class StubRunnerStreamConfiguration { - - @Bean - FlowRegistrar flowRegistrar(AutowireCapableBeanFactory beanFactory, BatchStubRunner batchStubRunner, ChannelBindingService channelBindingService) { - Map> accurestContracts = batchStubRunner.accurestContracts - accurestContracts.each { StubConfiguration key, Collection value -> - String name = "${key.groupId}_${key.artifactId}" - value.findAll { it?.input?.messageFrom?.clientValue }.each { GroovyDsl dsl -> - String flowName = "${name}_${dsl.label}_${dsl.hashCode()}" - IntegrationFlowBuilder builder = IntegrationFlows.from(dsl.input.messageFrom.clientValue) - .filter(new StubRunnerStreamMessageSelector(dsl), { FilterEndpointSpec e -> e.id("${flowName}.filter") } ) - .transform(new StubRunnerStreamTransformer(dsl), { GenericEndpointSpec e -> e.id("${flowName}.transformer") }) - if (dsl.outputMessage?.sentTo) { - builder = builder.channel(dsl.outputMessage.sentTo.clientValue) - } else { - builder = builder.handle(new DummyMessageHandler(), "handle") - } - beanFactory.initializeBean(builder.get(), flowName) - beanFactory.getBean("${flowName}.filter", Lifecycle.class).start(); - beanFactory.getBean("${flowName}.transformer", Lifecycle.class).start(); - channelBindingService.bindConsumer(beanFactory.getBean(dsl.input.messageFrom.clientValue, MessageChannel.class), dsl.input.messageFrom.clientValue) - if (dsl.outputMessage?.sentTo) { - channelBindingService.bindProducer(beanFactory.getBean(dsl.outputMessage.sentTo.clientValue, MessageChannel.class), dsl.outputMessage.sentTo.clientValue) - } - } - } - return new FlowRegistrar() - } - - @CompileStatic - private static class DummyMessageHandler { - void handle(Message message) {} - } - - static class FlowRegistrar {} -} diff --git a/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/groovy/io/codearte/accurest/stubrunner/messaging/stream/StubRunnerStreamMessageSelector.groovy b/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/groovy/io/codearte/accurest/stubrunner/messaging/stream/StubRunnerStreamMessageSelector.groovy index 628f423cf4..d32339b504 100644 --- a/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/groovy/io/codearte/accurest/stubrunner/messaging/stream/StubRunnerStreamMessageSelector.groovy +++ b/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/groovy/io/codearte/accurest/stubrunner/messaging/stream/StubRunnerStreamMessageSelector.groovy @@ -13,6 +13,7 @@ import org.springframework.integration.core.MessageSelector import org.springframework.messaging.Message import java.util.regex.Pattern + /** * Passes through a message that matches the one defined in the DSL * diff --git a/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/resources/META-INF/spring.factories b/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 7b69d1b85a..0000000000 --- a/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,3 +0,0 @@ -# Auto Configuration -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -io.codearte.accurest.stubrunner.messaging.stream.StubRunnerStreamConfiguration diff --git a/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/test/groovy/io/codearte/accurest/stubrunner/messaging/stream/StreamStubRunnerSpec.groovy b/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/test/groovy/io/codearte/accurest/stubrunner/messaging/stream/StreamStubRunnerSpec.groovy index 1090f1c5ea..722f41a36b 100644 --- a/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/test/groovy/io/codearte/accurest/stubrunner/messaging/stream/StreamStubRunnerSpec.groovy +++ b/stub-runner/stub-runner-messaging/stub-runner-messaging-stream/src/test/groovy/io/codearte/accurest/stubrunner/messaging/stream/StreamStubRunnerSpec.groovy @@ -9,6 +9,9 @@ import io.codearte.accurest.stubrunner.StubFinder import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.autoconfigure.EnableAutoConfiguration import org.springframework.boot.test.SpringApplicationContextLoader +import org.springframework.cloud.stream.annotation.EnableBinding +import org.springframework.cloud.stream.messaging.Sink +import org.springframework.cloud.stream.messaging.Source import org.springframework.context.annotation.ComponentScan import org.springframework.context.annotation.Configuration import org.springframework.test.context.ContextConfiguration @@ -22,6 +25,7 @@ import java.util.concurrent.TimeUnit @ComponentScan @EnableAutoConfiguration @ContextConfiguration(classes = StreamStubRunnerSpec, loader = SpringApplicationContextLoader) +@EnableBinding([Sink, Source]) class StreamStubRunnerSpec extends Specification { @Autowired StubFinder stubFinder