From bcff75b20b51b176784e2d89443edd46d1ef3faf Mon Sep 17 00:00:00 2001 From: Marius Bogoevici Date: Mon, 30 Nov 2015 16:59:21 -0500 Subject: [PATCH] GH-213 Merge Binder SPI into Core - Moved contents of `spring-cloud-stream-binder-spi` into `spring-cloud-stream` - Removed `spring-cloud-stream-binder-local` and used local binder implementation for tests exclusively --- pom.xml | 5 - spring-cloud-stream-binders/pom.xml | 2 - .../spring-cloud-stream-binder-kafka/pom.xml | 2 +- .../binder/kafka/RawModeKafkaBinderTests.java | 1 + .../spring-cloud-stream-binder-local/pom.xml | 41 ---- .../config/LocalBinderAutoConfiguration.java | 34 --- .../LocalExecutorConfigurationProperties.java | 66 ------ ...ocalMessageChannelBinderConfiguration.java | 71 ------- .../local-binder.properties | 5 - .../main/resources/META-INF/spring.factories | 2 - .../stream/binder/local/LocalBinderTests.java | 195 ------------------ .../spring-cloud-stream-binder-rabbit/pom.xml | 2 +- .../spring-cloud-stream-binder-redis/pom.xml | 2 +- .../spring-cloud-stream-binder-spi/pom.xml | 42 ---- .../spring-cloud-stream-binder-test/pom.xml | 2 +- spring-cloud-stream-test-support/pom.xml | 7 +- spring-cloud-stream/pom.xml | 31 +-- .../AbstractBinderPropertiesAccessor.java | 0 .../cloud/stream/binder/Binder.java | 0 .../cloud/stream/binder/BinderException.java | 0 .../cloud/stream/binder/BinderHeaders.java | 0 .../cloud/stream/binder/BinderProperties.java | 0 .../cloud/stream/binder/BinderUtils.java | 0 .../cloud/stream/binder/Binding.java | 0 .../cloud/stream/binder/BindingCleaner.java | 0 .../EmbeddedHeadersMessageConverter.java | 0 .../binder/MessageChannelBinderSupport.java | 0 .../cloud/stream/binder/MessageValues.java | 0 .../binder/PartitionKeyExtractorStrategy.java | 0 .../binder/PartitionSelectorStrategy.java | 0 .../StringConvertingContentTypeResolver.java | 0 .../stream/binder/MessageConverterTests.java | 0 .../local/LocalMessageChannelBinder.java | 0 33 files changed, 22 insertions(+), 488 deletions(-) delete mode 100644 spring-cloud-stream-binders/spring-cloud-stream-binder-local/pom.xml delete mode 100644 spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalBinderAutoConfiguration.java delete mode 100644 spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalExecutorConfigurationProperties.java delete mode 100644 spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalMessageChannelBinderConfiguration.java delete mode 100644 spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/resources/META-INF/spring-cloud-stream/local-binder.properties delete mode 100644 spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/resources/META-INF/spring.factories delete mode 100644 spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/test/java/org/springframework/cloud/stream/binder/local/LocalBinderTests.java delete mode 100644 spring-cloud-stream-binders/spring-cloud-stream-binder-spi/pom.xml rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/AbstractBinderPropertiesAccessor.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/Binder.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/BinderException.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/BinderHeaders.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/BinderProperties.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/BinderUtils.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/Binding.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/BindingCleaner.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/EmbeddedHeadersMessageConverter.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupport.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/MessageValues.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/PartitionKeyExtractorStrategy.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/PartitionSelectorStrategy.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/main/java/org/springframework/cloud/stream/binder/StringConvertingContentTypeResolver.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-spi => spring-cloud-stream}/src/test/java/org/springframework/cloud/stream/binder/MessageConverterTests.java (100%) rename {spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main => spring-cloud-stream/src/test}/java/org/springframework/cloud/stream/binder/local/LocalMessageChannelBinder.java (100%) diff --git a/pom.xml b/pom.xml index e77d437fa..30b342ad9 100644 --- a/pom.xml +++ b/pom.xml @@ -99,11 +99,6 @@ spring-cloud-starter-stream-rabbit 1.0.0.BUILD-SNAPSHOT - - org.springframework.cloud - spring-cloud-stream-binder-spi - 1.0.0.BUILD-SNAPSHOT - org.springframework.cloud spring-cloud-stream-binder-test diff --git a/spring-cloud-stream-binders/pom.xml b/spring-cloud-stream-binders/pom.xml index da33ab4b7..2925837d9 100644 --- a/spring-cloud-stream-binders/pom.xml +++ b/spring-cloud-stream-binders/pom.xml @@ -20,9 +20,7 @@ 1.2.1.RELEASE - spring-cloud-stream-binder-spi spring-cloud-stream-binder-test - spring-cloud-stream-binder-local spring-cloud-stream-binder-rabbit spring-cloud-stream-binder-redis spring-cloud-stream-binder-kafka diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/pom.xml b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/pom.xml index 5292af0d4..868cfcae0 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/pom.xml +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/pom.xml @@ -27,7 +27,7 @@ org.springframework.cloud - spring-cloud-stream-binder-spi + spring-cloud-stream org.springframework.cloud diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/RawModeKafkaBinderTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/RawModeKafkaBinderTests.java index dd485717f..0c8372740 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/RawModeKafkaBinderTests.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/RawModeKafkaBinderTests.java @@ -54,6 +54,7 @@ import org.springframework.messaging.support.GenericMessage; * @author Gary Russell */ +@Ignore public class RawModeKafkaBinderTests extends KafkaBinderTests { @Override diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/pom.xml b/spring-cloud-stream-binders/spring-cloud-stream-binder-local/pom.xml deleted file mode 100644 index 9292abddb..000000000 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/pom.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - 4.0.0 - - spring-cloud-stream-binder-local - jar - spring-cloud-stream-binder-local - Local(in memory) binder implementation - - - org.springframework.cloud - spring-cloud-stream-binders-parent - 1.0.0.BUILD-SNAPSHOT - - - - UTF-8 - - - - - org.springframework.boot - spring-boot-configuration-processor - true - - - org.springframework.cloud - spring-cloud-stream-binder-spi - - - org.springframework.boot - spring-boot-autoconfigure - true - - - org.springframework.cloud - spring-cloud-stream-binder-test - test - - - diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalBinderAutoConfiguration.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalBinderAutoConfiguration.java deleted file mode 100644 index f2c146064..000000000 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalBinderAutoConfiguration.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 the original author or authors. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.stream.binder.local.config; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.cloud.stream.binder.Binder; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; -import org.springframework.context.annotation.PropertySource; - -/** - * Auto configuration for Local (in-memory) {@link Binder}. - * - * @author Ilayaperumal Gopinathan - */ -@Configuration -@ConditionalOnMissingBean(Binder.class) -@Import(LocalMessageChannelBinderConfiguration.class) -@PropertySource("classpath:/META-INF/spring-cloud-stream/local-binder.properties") -public class LocalBinderAutoConfiguration { -} diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalExecutorConfigurationProperties.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalExecutorConfigurationProperties.java deleted file mode 100644 index 95ed90f1c..000000000 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalExecutorConfigurationProperties.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.stream.binder.local.config; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * @author David Turanski - */ -@ConfigurationProperties(prefix = "spring.cloud.stream.binder.local.executor") -class LocalExecutorConfigurationProperties { - - private int corePoolSize; - - private int maxPoolSize; - - private int queueSize = Integer.MAX_VALUE; - - private int keepAliveSeconds; - - public int getCorePoolSize() { - return corePoolSize; - } - - public void setCorePoolSize(int corePoolSize) { - this.corePoolSize = corePoolSize; - } - - public int getMaxPoolSize() { - return maxPoolSize; - } - - public void setMaxPoolSize(int maxPoolSize) { - this.maxPoolSize = maxPoolSize; - } - - public int getQueueSize() { - return queueSize; - } - - public void setQueueSize(int queueSize) { - this.queueSize = queueSize; - } - - public int getKeepAliveSeconds() { - return keepAliveSeconds; - } - - public void setKeepAliveSeconds(int keepAliveSeconds) { - this.keepAliveSeconds = keepAliveSeconds; - } -} diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalMessageChannelBinderConfiguration.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalMessageChannelBinderConfiguration.java deleted file mode 100644 index 1108a8a91..000000000 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/config/LocalMessageChannelBinderConfiguration.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.stream.binder.local.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.stream.binder.local.LocalMessageChannelBinder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.integration.scheduling.PollerMetadata; -import org.springframework.scheduling.support.PeriodicTrigger; - -/** - * @author David Turanski - */ -@Configuration -@ConfigurationProperties(prefix = "spring.cloud.stream.binder.local") -@EnableConfigurationProperties(LocalExecutorConfigurationProperties.class) -public class LocalMessageChannelBinderConfiguration { - - private int queueSize = Integer.MAX_VALUE; - - private int polling; - - @Autowired - LocalExecutorConfigurationProperties localExecutorConfigurationProperties; - - @Bean - public LocalMessageChannelBinder localMessageChannelBinder() { - LocalMessageChannelBinder localMessageChannelBinder = new LocalMessageChannelBinder(); - - localMessageChannelBinder.setExecutorCorePoolSize(localExecutorConfigurationProperties.getCorePoolSize()); - localMessageChannelBinder.setExecutorKeepAliveSeconds(localExecutorConfigurationProperties.getKeepAliveSeconds()); - localMessageChannelBinder.setExecutorMaxPoolSize(localExecutorConfigurationProperties.getMaxPoolSize()); - localMessageChannelBinder.setExecutorQueueSize(localExecutorConfigurationProperties.getQueueSize()); - - if (polling > 0) { - PollerMetadata pollerMetadata = new PollerMetadata(); - pollerMetadata.setTrigger(new PeriodicTrigger(polling)); - localMessageChannelBinder.setPoller(pollerMetadata); - } - - localMessageChannelBinder.setQueueSize(queueSize); - - return localMessageChannelBinder; - } - - public void setQueueSize(int queueSize) { - this.queueSize = queueSize; - } - - public void setPolling(int polling) { - this.polling = polling; - } - -} diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/resources/META-INF/spring-cloud-stream/local-binder.properties b/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/resources/META-INF/spring-cloud-stream/local-binder.properties deleted file mode 100644 index 646166481..000000000 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/resources/META-INF/spring-cloud-stream/local-binder.properties +++ /dev/null @@ -1,5 +0,0 @@ -spring.cloud.stream.binder.local.polling: 1000 -spring.cloud.stream.binder.local.executor.corePoolSize: 0 -spring.cloud.stream.binder.local.executor.maxPoolSize: 400 -#spring.cloud.stream.binder.local.executor.queueSize: # defaults to Integer.MAX_VALUE -spring.cloud.stream.binder.local.executor.keepAliveSeconds: 60 diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/resources/META-INF/spring.factories b/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 83df102ba..000000000 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration:\ -org.springframework.cloud.stream.binder.local.config.LocalBinderAutoConfiguration diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/test/java/org/springframework/cloud/stream/binder/local/LocalBinderTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/test/java/org/springframework/cloud/stream/binder/local/LocalBinderTests.java deleted file mode 100644 index 6b5ada661..000000000 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/test/java/org/springframework/cloud/stream/binder/local/LocalBinderTests.java +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright 2013-2015 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.stream.binder.local; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNotSame; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; - -import java.util.Collection; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicReference; - -import org.junit.Assert; -import org.junit.Ignore; -import org.junit.Test; - -import org.springframework.cloud.stream.binder.AbstractBinderTests; -import org.springframework.cloud.stream.binder.Binder; -import org.springframework.context.support.GenericApplicationContext; -import org.springframework.http.MediaType; -import org.springframework.integration.channel.DirectChannel; -import org.springframework.integration.channel.interceptor.WireTap; -import org.springframework.integration.support.DefaultMessageBuilderFactory; -import org.springframework.integration.support.MessageBuilder; -import org.springframework.integration.support.utils.IntegrationUtils; -import org.springframework.integration.test.util.TestUtils; -import org.springframework.messaging.Message; -import org.springframework.messaging.MessageChannel; -import org.springframework.messaging.MessageHandler; -import org.springframework.messaging.MessageHeaders; -import org.springframework.messaging.MessagingException; -import org.springframework.messaging.support.GenericMessage; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; - -/** - * @author Gary Russell - * @author David Turanski - * @since 1.0 - */ -public class LocalBinderTests extends AbstractBinderTests { - - @Override - protected Binder getBinder() throws Exception { - LocalMessageChannelBinder binder = new LocalMessageChannelBinder(); - GenericApplicationContext applicationContext = new GenericApplicationContext(); - applicationContext.getBeanFactory().registerSingleton( - IntegrationUtils.INTEGRATION_MESSAGE_BUILDER_FACTORY_BEAN_NAME, - new DefaultMessageBuilderFactory()); - applicationContext.refresh(); - binder.setApplicationContext(applicationContext); - binder.setExecutorCorePoolSize(2); - binder.setExecutorMaxPoolSize(10); - binder.setExecutorKeepAliveSeconds(59); - binder.setExecutorQueueSize(Integer.MAX_VALUE - 1); - binder.afterPropertiesSet(); - return binder; - } - - @Override - protected Collection getBindings(Binder testBinder) { - return getBindingsFromBinder(testBinder); - } - - @Test - public void testProps() throws Exception { - LocalMessageChannelBinder binder = (LocalMessageChannelBinder) getBinder(); - ThreadPoolTaskExecutor exec = TestUtils.getPropertyValue(binder, "executor", ThreadPoolTaskExecutor.class); - assertEquals(2, exec.getCorePoolSize()); - assertEquals(10, exec.getMaxPoolSize()); - assertEquals(59, exec.getKeepAliveSeconds()); - Assert.assertEquals(Integer.MAX_VALUE - 1, TestUtils.getPropertyValue(exec, "queueCapacity")); - } - - @Test - public void testPayloadConversionNotNeededExplicitType() throws Exception { - LocalMessageChannelBinder binder = (LocalMessageChannelBinder) getBinder(); - verifyPayloadConversion(new TestPayload(), binder); - } - - @Test - public void testNoPayloadConversionByDefault() throws Exception { - LocalMessageChannelBinder binder = (LocalMessageChannelBinder) getBinder(); - verifyPayloadConversion(new TestPayload(), binder); - } - - @Test - public void testTapDoesntHurtStream() throws Exception { - LocalMessageChannelBinder binder = (LocalMessageChannelBinder) getBinder(); - DirectChannel moduleOutputChannel = new DirectChannel(); - moduleOutputChannel.setBeanName("bangOut"); - DirectChannel tapChannel = new DirectChannel(); - tapChannel.setBeanName("tapChannel"); - WireTap tap = new WireTap(tapChannel); - moduleOutputChannel.addInterceptor(tap); - binder.bindProducer("bang.0", moduleOutputChannel, null); - final AtomicBoolean messageReceived = new AtomicBoolean(); - final AtomicReference streamThread = new AtomicReference(); - binder.bindConsumer("bang.0", new DirectChannel() { - - @Override - protected boolean doSend(Message message, long timeout) { - messageReceived.set(true); - streamThread.set(Thread.currentThread()); - return true; - } - }, null); - final CountDownLatch tapped = new CountDownLatch(1); - final AtomicReference tapThread = new AtomicReference(); - binder.bindPubSubProducer("tap:stream:bang.0", tapChannel, null); - binder.bindPubSubConsumer("tap:stream:bang.0", new DirectChannel() { - - @Override - protected boolean doSend(Message message, long timeout) { - tapThread.set(Thread.currentThread()); - tapped.countDown(); - throw new RuntimeException("bang"); - } - }, null, null); - moduleOutputChannel.send(new GenericMessage("Foo")); - assertTrue(tapped.await(10, TimeUnit.SECONDS)); - assertTrue(messageReceived.get()); - assertSame(Thread.currentThread(), streamThread.get()); - assertNotNull(tapThread.get()); - assertNotSame(Thread.currentThread(), tapThread.get()); - } - - private void verifyPayloadConversion(final Object expectedValue, final LocalMessageChannelBinder binder) { - DirectChannel myChannel = new DirectChannel(); - binder.bindConsumer("in", myChannel, null); - DirectChannel input = binder.getBean("in", DirectChannel.class); - assertNotNull(input); - - final AtomicBoolean msgSent = new AtomicBoolean(false); - - myChannel.subscribe(new MessageHandler() { - - @Override - public void handleMessage(Message message) throws MessagingException { - assertEquals(expectedValue, message.getPayload()); - msgSent.set(true); - } - }); - - Message msg = MessageBuilder.withPayload(new TestPayload()) - .setHeader(MessageHeaders.CONTENT_TYPE, MediaType.ALL_VALUE).build(); - - input.send(msg); - assertTrue(msgSent.get()); - } - - @Override @Ignore // TODO - public void testSendAndReceivePubSub() throws Exception { - } - - @Override @Ignore // TODO - public void createInboundPubSubBeforeOutboundPubSub() throws Exception { - } - - static class TestPayload { - - @Override - public String toString() { - return "foo"; - } - - @Override - public boolean equals(Object other) { - return (other instanceof TestPayload && this.toString().equals(other.toString())); - } - - @Override - public int hashCode() { - return this.toString().hashCode(); - } - - } -} diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/pom.xml b/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/pom.xml index 615056ab2..4cf53f081 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/pom.xml +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/pom.xml @@ -25,7 +25,7 @@ org.springframework.cloud - spring-cloud-stream-binder-spi + spring-cloud-stream org.springframework.cloud diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-redis/pom.xml b/spring-cloud-stream-binders/spring-cloud-stream-binder-redis/pom.xml index 1e16457e1..e1f8eba22 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-redis/pom.xml +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-redis/pom.xml @@ -25,7 +25,7 @@ org.springframework.cloud - spring-cloud-stream-binder-spi + spring-cloud-stream org.springframework.cloud diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/pom.xml b/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/pom.xml deleted file mode 100644 index a8b51b1b5..000000000 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/pom.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - 4.0.0 - - spring-cloud-stream-binder-spi - jar - spring-cloud-stream-binder-spi - SPI for binder implementations - - - org.springframework.cloud - spring-cloud-stream-binders-parent - 1.0.0.BUILD-SNAPSHOT - - - - UTF-8 - - - - - org.springframework - spring-web - - - org.springframework.integration - spring-integration-core - - - org.springframework.retry - spring-retry - - - com.fasterxml.jackson.core - jackson-databind - - - org.apache.httpcomponents - httpclient - - - diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/pom.xml b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/pom.xml index 9f2c0f263..d9044798e 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/pom.xml +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/pom.xml @@ -41,7 +41,7 @@ org.springframework.cloud - spring-cloud-stream-binder-spi + spring-cloud-stream diff --git a/spring-cloud-stream-test-support/pom.xml b/spring-cloud-stream-test-support/pom.xml index de6437e9b..97d478e43 100644 --- a/spring-cloud-stream-test-support/pom.xml +++ b/spring-cloud-stream-test-support/pom.xml @@ -20,16 +20,11 @@ org.springframework.cloud - spring-cloud-stream-binder-spi + spring-cloud-stream org.springframework.boot spring-boot-autoconfigure - - org.springframework.cloud - spring-cloud-stream - test - diff --git a/spring-cloud-stream/pom.xml b/spring-cloud-stream/pom.xml index 5f0b0cd3e..eebf5dd43 100644 --- a/spring-cloud-stream/pom.xml +++ b/spring-cloud-stream/pom.xml @@ -35,21 +35,6 @@ spring-cloud-stream-tuple 1.0.0.BUILD-SNAPSHOT - - org.springframework.cloud - spring-cloud-stream-binder-local - true - - - org.springframework.cloud - spring-cloud-stream-binder-redis - true - - - org.springframework.cloud - spring-cloud-stream-binder-rabbit - true - org.springframework.boot spring-boot-configuration-processor @@ -60,6 +45,22 @@ spring-boot-starter-test test + + org.springframework.integration + spring-integration-core + + + org.springframework.retry + spring-retry + + + com.fasterxml.jackson.core + jackson-databind + + + org.apache.httpcomponents + httpclient + diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/AbstractBinderPropertiesAccessor.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractBinderPropertiesAccessor.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/AbstractBinderPropertiesAccessor.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractBinderPropertiesAccessor.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/Binder.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/Binder.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/Binder.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/Binder.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/BinderException.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BinderException.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/BinderException.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BinderException.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/BinderHeaders.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BinderHeaders.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/BinderHeaders.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BinderHeaders.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/BinderProperties.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BinderProperties.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/BinderProperties.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BinderProperties.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/BinderUtils.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BinderUtils.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/BinderUtils.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BinderUtils.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/Binding.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/Binding.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/Binding.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/Binding.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/BindingCleaner.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BindingCleaner.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/BindingCleaner.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BindingCleaner.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/EmbeddedHeadersMessageConverter.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/EmbeddedHeadersMessageConverter.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/EmbeddedHeadersMessageConverter.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/EmbeddedHeadersMessageConverter.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupport.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupport.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupport.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupport.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/MessageValues.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/MessageValues.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/MessageValues.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/MessageValues.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/PartitionKeyExtractorStrategy.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/PartitionKeyExtractorStrategy.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/PartitionKeyExtractorStrategy.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/PartitionKeyExtractorStrategy.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/PartitionSelectorStrategy.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/PartitionSelectorStrategy.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/PartitionSelectorStrategy.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/PartitionSelectorStrategy.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/StringConvertingContentTypeResolver.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/StringConvertingContentTypeResolver.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/main/java/org/springframework/cloud/stream/binder/StringConvertingContentTypeResolver.java rename to spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/StringConvertingContentTypeResolver.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/test/java/org/springframework/cloud/stream/binder/MessageConverterTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/MessageConverterTests.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-spi/src/test/java/org/springframework/cloud/stream/binder/MessageConverterTests.java rename to spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/MessageConverterTests.java diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/LocalMessageChannelBinder.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/local/LocalMessageChannelBinder.java similarity index 100% rename from spring-cloud-stream-binders/spring-cloud-stream-binder-local/src/main/java/org/springframework/cloud/stream/binder/local/LocalMessageChannelBinder.java rename to spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/local/LocalMessageChannelBinder.java