From e75bbaafbcca87423aaec7a92efe4f08b2c823a7 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 25 Apr 2016 17:40:02 +0200 Subject: [PATCH] Fixed NPE, added consumer producer to DSL --- .../builder/JUnitMessagingMethodBodyBuilder.groovy | 2 +- .../builder/SpockMessagingMethodBodyBuilder.groovy | 2 +- .../io/codearte/accurest/dsl/internal/Input.groovy | 14 +++++++++++++- .../accurest/dsl/internal/OutputMessage.groovy | 8 ++++++++ .../camel/StubRunnerCamelConfiguration.groovy | 4 ++-- .../StubRunnerIntegrationConfiguration.groovy | 6 +++--- .../stream/StubRunnerStreamConfiguration.groovy | 10 +++++----- .../accurest/stubrunner/StubRunnerExecutor.groovy | 4 ++-- 8 files changed, 35 insertions(+), 15 deletions(-) diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/builder/JUnitMessagingMethodBodyBuilder.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/builder/JUnitMessagingMethodBodyBuilder.groovy index 12d62ae555..fa8551cdb2 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/builder/JUnitMessagingMethodBodyBuilder.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/builder/JUnitMessagingMethodBodyBuilder.groovy @@ -28,7 +28,7 @@ class JUnitMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder { if (request.triggeredBy) { return request.triggeredBy.executionCommand } - return "accurestMessaging.send(inputMessage, \"${request.messageFrom}\")" + return "accurestMessaging.send(inputMessage, \"${request.messageFrom.serverValue}\")" } @Override diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/builder/SpockMessagingMethodBodyBuilder.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/builder/SpockMessagingMethodBodyBuilder.groovy index c5fba9da10..e9bbb2e1db 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/builder/SpockMessagingMethodBodyBuilder.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/builder/SpockMessagingMethodBodyBuilder.groovy @@ -26,7 +26,7 @@ class SpockMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder { if (request.triggeredBy) { return request.triggeredBy.executionCommand } - return "accurestMessaging.send(inputMessage, '${request.messageFrom}')" + return "accurestMessaging.send(inputMessage, '${request.messageFrom.serverValue}')" } @Override diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Input.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Input.groovy index 8cd7fe06f4..0b833c4090 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Input.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Input.groovy @@ -10,7 +10,7 @@ import groovy.transform.TypeChecked @ToString(includePackage = false, includeNames = true) class Input extends Common { - String messageFrom + DslProperty messageFrom ExecutionProperty triggeredBy Headers messageHeaders BodyType messageBody @@ -24,7 +24,19 @@ class Input extends Common { this.messageBody = input.messageBody } + ServerDslProperty producer(Object clientValue) { + return new ServerDslProperty(clientValue) + } + + ClientDslProperty consumer(Object clientValue) { + return new ClientDslProperty(clientValue) + } + void messageFrom(String messageFrom) { + this.messageFrom = new DslProperty<>(messageFrom) + } + + void messageFrom(DslProperty messageFrom) { this.messageFrom = messageFrom } diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/OutputMessage.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/OutputMessage.groovy index 10bc07fd17..b173c6481c 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/OutputMessage.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/OutputMessage.groovy @@ -31,6 +31,14 @@ class OutputMessage extends Common { this.sentTo = sentTo } + ServerDslProperty producer(Object clientValue) { + return new ServerDslProperty(clientValue) + } + + ClientDslProperty consumer(Object clientValue) { + return new ClientDslProperty(clientValue) + } + void body(Object bodyAsValue) { this.body = new DslProperty(bodyAsValue) } diff --git a/stub-runner/stub-runner-messaging/stub-runner-messaging-camel/src/main/groovy/io/codearte/accurest/stubrunner/messaging/camel/StubRunnerCamelConfiguration.groovy b/stub-runner/stub-runner-messaging/stub-runner-messaging-camel/src/main/groovy/io/codearte/accurest/stubrunner/messaging/camel/StubRunnerCamelConfiguration.groovy index d27329f5d3..a00e1d6c85 100644 --- a/stub-runner/stub-runner-messaging/stub-runner-messaging-camel/src/main/groovy/io/codearte/accurest/stubrunner/messaging/camel/StubRunnerCamelConfiguration.groovy +++ b/stub-runner/stub-runner-messaging/stub-runner-messaging-camel/src/main/groovy/io/codearte/accurest/stubrunner/messaging/camel/StubRunnerCamelConfiguration.groovy @@ -23,8 +23,8 @@ class StubRunnerCamelConfiguration { @Override public void configure() throws Exception { Map> accurestContracts = batchStubRunner.accurestContracts - (accurestContracts.values().flatten() as Collection).findAll { it?.input?.messageFrom && it?.outputMessage?.sentTo }.each { - from(it.input.messageFrom) + (accurestContracts.values().flatten() as Collection).findAll { it?.input?.messageFrom?.clientValue && it?.outputMessage?.sentTo }.each { + from(it.input.messageFrom.clientValue) .filter(new StubRunnerCamelPredicate(it)) .process(new StubRunnerCamelProcessor(it)) .to(it.outputMessage.sentTo.clientValue) diff --git a/stub-runner/stub-runner-messaging/stub-runner-messaging-integration/src/main/groovy/io/codearte/accurest/stubrunner/messaging/integration/StubRunnerIntegrationConfiguration.groovy b/stub-runner/stub-runner-messaging/stub-runner-messaging-integration/src/main/groovy/io/codearte/accurest/stubrunner/messaging/integration/StubRunnerIntegrationConfiguration.groovy index b5205afa30..f4ba7902a0 100644 --- a/stub-runner/stub-runner-messaging/stub-runner-messaging-integration/src/main/groovy/io/codearte/accurest/stubrunner/messaging/integration/StubRunnerIntegrationConfiguration.groovy +++ b/stub-runner/stub-runner-messaging/stub-runner-messaging-integration/src/main/groovy/io/codearte/accurest/stubrunner/messaging/integration/StubRunnerIntegrationConfiguration.groovy @@ -32,12 +32,12 @@ class StubRunnerIntegrationConfiguration { Map> accurestContracts = batchStubRunner.accurestContracts accurestContracts.each { StubConfiguration key, Collection value -> String name = "${key.groupId}_${key.artifactId}" - value.findAll { it?.input?.messageFrom }.each { GroovyDsl dsl -> + value.findAll { it?.input?.messageFrom?.clientValue }.each { GroovyDsl dsl -> String flowName = "${name}_${dsl.label}_${dsl.hashCode()}" - IntegrationFlowBuilder builder = IntegrationFlows.from(dsl.input.messageFrom) + IntegrationFlowBuilder builder = IntegrationFlows.from(dsl.input.messageFrom.clientValue) .filter(new StubRunnerIntegrationMessageSelector(dsl), { FilterEndpointSpec e -> e.id("${flowName}.filter") } ) .transform(new StubRunnerIntegrationTransformer(dsl), { GenericEndpointSpec e -> e.id("${flowName}.transformer") }) - if (dsl.outputMessage) { + if (dsl.outputMessage?.sentTo) { builder = builder.channel(dsl.outputMessage.sentTo.clientValue) } else { builder = builder.handle(new DummyMessageHandler(), "handle") 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 index b188cf8562..6c3508f3ea 100644 --- 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 @@ -36,12 +36,12 @@ class StubRunnerStreamConfiguration { Map> accurestContracts = batchStubRunner.accurestContracts accurestContracts.each { StubConfiguration key, Collection value -> String name = "${key.groupId}_${key.artifactId}" - value.findAll { it?.input?.messageFrom }.each { GroovyDsl dsl -> + value.findAll { it?.input?.messageFrom?.clientValue }.each { GroovyDsl dsl -> String flowName = "${name}_${dsl.label}_${dsl.hashCode()}" - IntegrationFlowBuilder builder = IntegrationFlows.from(dsl.input.messageFrom) + 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) { + if (dsl.outputMessage?.sentTo) { builder = builder.channel(dsl.outputMessage.sentTo.clientValue) } else { builder = builder.handle(new DummyMessageHandler(), "handle") @@ -49,8 +49,8 @@ class StubRunnerStreamConfiguration { 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, MessageChannel.class), dsl.input.messageFrom) - if (dsl.outputMessage) { + 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) } } diff --git a/stub-runner/stub-runner/src/main/groovy/io/codearte/accurest/stubrunner/StubRunnerExecutor.groovy b/stub-runner/stub-runner/src/main/groovy/io/codearte/accurest/stubrunner/StubRunnerExecutor.groovy index f558a82bd8..92cb78b7ad 100644 --- a/stub-runner/stub-runner/src/main/groovy/io/codearte/accurest/stubrunner/StubRunnerExecutor.groovy +++ b/stub-runner/stub-runner/src/main/groovy/io/codearte/accurest/stubrunner/StubRunnerExecutor.groovy @@ -98,8 +98,8 @@ class StubRunnerExecutor implements StubFinder { if (!groovyDsl.outputMessage) { return } - AccurestMessage message = accurestMessaging.create(groovyDsl.outputMessage.body.clientValue, - groovyDsl.outputMessage.headers.asStubSideMap()) + AccurestMessage message = accurestMessaging.create(groovyDsl.outputMessage?.body?.clientValue, + groovyDsl.outputMessage?.headers?.asStubSideMap()) accurestMessaging.send(message, groovyDsl.outputMessage.sentTo.clientValue) }