diff --git a/pom.xml b/pom.xml index f93cc86cc..eaa47001c 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,7 @@ 1.7 + false @@ -46,6 +47,21 @@ + + org.apache.maven.plugins + maven-checkstyle-plugin + 2.17 + + src/checkstyle/checkstyle.xml + + + + com.puppycrawl.tools + checkstyle + 6.17 + + + org.apache.maven.plugins maven-javadoc-plugin @@ -62,6 +78,31 @@ + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + checkstyle-validation + validate + + ${disable.checks} + src/checkstyle/checkstyle.xml + src/checkstyle/checkstyle-header.txt + checkstyle.build.directory=${project.build.directory} + UTF-8 + true + true + true + + + check + + + + + diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaConsumerProperties.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaConsumerProperties.java index 9c9a22134..b9b78f3c0 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaConsumerProperties.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaConsumerProperties.java @@ -18,8 +18,6 @@ package org.springframework.cloud.stream.binder.kafka; import javax.validation.constraints.Min; -import org.springframework.cloud.stream.binder.ConsumerProperties; - /** * @author Marius Bogoevici */ diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaMessageChannelBinder.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaMessageChannelBinder.java index 8a7f0a7a3..42a084b07 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaMessageChannelBinder.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/KafkaMessageChannelBinder.java @@ -29,6 +29,12 @@ import java.util.Properties; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; +import kafka.admin.AdminUtils; +import kafka.api.OffsetRequest; +import kafka.serializer.Decoder; +import kafka.serializer.DefaultDecoder; +import kafka.utils.ZKStringSerializer$; +import kafka.utils.ZkUtils; import org.I0Itec.zkclient.ZkClient; import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.kafka.common.serialization.ByteArraySerializer; @@ -83,12 +89,6 @@ import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import kafka.admin.AdminUtils; -import kafka.api.OffsetRequest; -import kafka.serializer.Decoder; -import kafka.serializer.DefaultDecoder; -import kafka.utils.ZKStringSerializer$; -import kafka.utils.ZkUtils; import scala.collection.Seq; /** @@ -150,17 +150,17 @@ public class KafkaMessageChannelBinder extends AbstractBinder 0) { - String[] combinedHeadersToMap = - Arrays.copyOfRange(BinderHeaders.STANDARD_HEADERS, 0, BinderHeaders.STANDARD_HEADERS.length + headersToMap - .length); - System.arraycopy(headersToMap, 0, combinedHeadersToMap, BinderHeaders.STANDARD_HEADERS.length, headersToMap - .length); + String[] combinedHeadersToMap = Arrays.copyOfRange( + BinderHeaders.STANDARD_HEADERS, 0, + BinderHeaders.STANDARD_HEADERS.length + headersToMap.length); + System.arraycopy(headersToMap, 0, combinedHeadersToMap, + BinderHeaders.STANDARD_HEADERS.length, headersToMap.length); this.headersToMap = combinedHeadersToMap; } else { @@ -502,8 +502,8 @@ public class KafkaMessageChannelBinder extends AbstractBinder consumerProperties, - String group, String topic, Collection listenedPartitions, - long referencePoint) { + String group, String topic, Collection listenedPartitions, + long referencePoint) { Assert.isTrue(StringUtils.hasText(topic) ^ !CollectionUtils.isEmpty(listenedPartitions), "Exactly one of topic or a list of listened partitions must be provided"); KafkaMessageListenerContainer messageListenerContainer; @@ -617,7 +617,7 @@ public class KafkaMessageChannelBinder extends AbstractBinder properties, int numberOfPartitions, - ProducerConfiguration producerConfiguration) { + ProducerConfiguration producerConfiguration) { this.topicName = topicName; producerProperties = properties; this.numberOfKafkaPartitions = numberOfPartitions; diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/main/java/org/springframework/cloud/stream/binder/rabbit/RabbitMessageChannelBinder.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/main/java/org/springframework/cloud/stream/binder/rabbit/RabbitMessageChannelBinder.java index 01561f78a..b6e201e3b 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/main/java/org/springframework/cloud/stream/binder/rabbit/RabbitMessageChannelBinder.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/main/java/org/springframework/cloud/stream/binder/rabbit/RabbitMessageChannelBinder.java @@ -23,9 +23,6 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.Map; -import com.rabbitmq.client.AMQP; -import com.rabbitmq.client.Channel; -import com.rabbitmq.client.Envelope; import org.aopalliance.aop.Advice; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -91,6 +88,10 @@ import org.springframework.scheduling.TaskScheduler; import org.springframework.util.Assert; import org.springframework.util.StringUtils; +import com.rabbitmq.client.AMQP; +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Envelope; + /** * A {@link org.springframework.cloud.stream.binder.Binder} implementation backed by RabbitMQ. * @@ -354,7 +355,7 @@ public class RabbitMessageChannelBinder extends AbstractBinder properties, - RabbitTemplate rabbitTemplate) { + RabbitTemplate rabbitTemplate) { String prefix = properties.getExtension().getPrefix(); String exchangeName = applyPrefix(prefix, name); TopicExchange exchange = new TopicExchange(exchangeName); diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/TestUtils.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/TestUtils.java index a5e48ecb0..af546a8ff 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/TestUtils.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/TestUtils.java @@ -24,38 +24,41 @@ import org.springframework.util.Assert; */ public class TestUtils { - /** - * Uses nested {@link DirectFieldAccessor}s to obtain a property using dotted notation to traverse fields; e.g. - * "foo.bar.baz" will obtain a reference to the baz field of the bar field of foo. Adopted from Spring Integration. - * @param root The object. - * @param propertyPath The path. - * @return The field. - */ - public static Object getPropertyValue(Object root, String propertyPath) { - Object value = null; - DirectFieldAccessor accessor = new DirectFieldAccessor(root); - String[] tokens = propertyPath.split("\\."); - for (int i = 0; i < tokens.length; i++) { - value = accessor.getPropertyValue(tokens[i]); - if (value != null) { - accessor = new DirectFieldAccessor(value); - } - else if (i == tokens.length - 1) { - return null; - } - else { - throw new IllegalArgumentException("intermediate property '" + tokens[i] + "' is null"); - } - } - return value; - } + /** + * Uses nested {@link DirectFieldAccessor}s to obtain a property using dotted notation + * to traverse fields; e.g. "foo.bar.baz" will obtain a reference to the baz field of + * the bar field of foo. Adopted from Spring Integration. + * @param root The object. + * @param propertyPath The path. + * @return The field. + */ + public static Object getPropertyValue(Object root, String propertyPath) { + Object value = null; + DirectFieldAccessor accessor = new DirectFieldAccessor(root); + String[] tokens = propertyPath.split("\\."); + for (int i = 0; i < tokens.length; i++) { + value = accessor.getPropertyValue(tokens[i]); + if (value != null) { + accessor = new DirectFieldAccessor(value); + } + else if (i == tokens.length - 1) { + return null; + } + else { + throw new IllegalArgumentException( + "intermediate property '" + tokens[i] + "' is null"); + } + } + return value; + } - @SuppressWarnings("unchecked") - public static T getPropertyValue(Object root, String propertyPath, Class type) { - Object value = getPropertyValue(root, propertyPath); - if (value != null) { - Assert.isAssignable(type, value.getClass()); - } - return (T) value; - } + @SuppressWarnings("unchecked") + public static T getPropertyValue(Object root, String propertyPath, + Class type) { + Object value = getPropertyValue(root, propertyPath); + if (value != null) { + Assert.isAssignable(type, value.getClass()); + } + return (T) value; + } } diff --git a/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/StreamListenerTests.java b/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/StreamListenerTests.java index 08dee7027..104372bad 100644 --- a/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/StreamListenerTests.java +++ b/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/StreamListenerTests.java @@ -68,48 +68,64 @@ public class StreamListenerTests { Sink sink = context.getBean(Sink.class); String id = UUID.randomUUID().toString(); sink.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json").build()); + .setHeader("contentType", "application/json").build()); assertTrue(testSink.latch.await(10, TimeUnit.SECONDS)); assertThat(testSink.receivedArguments, hasSize(1)); - assertThat(testSink.receivedArguments.get(0), hasProperty("bar", equalTo("barbar" + id))); + assertThat(testSink.receivedArguments.get(0), + hasProperty("bar", equalTo("barbar" + id))); context.close(); } @Test @SuppressWarnings("unchecked") public void testAnnotatedArguments() throws Exception { - ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithAnnotatedArguments.class); + ConfigurableApplicationContext context = SpringApplication + .run(TestPojoWithAnnotatedArguments.class); - TestPojoWithAnnotatedArguments testPojoWithAnnotatedArguments = context.getBean(TestPojoWithAnnotatedArguments.class); + TestPojoWithAnnotatedArguments testPojoWithAnnotatedArguments = context + .getBean(TestPojoWithAnnotatedArguments.class); Sink sink = context.getBean(Sink.class); String id = UUID.randomUUID().toString(); - sink.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json").setHeader("testHeader", "testValue").build()); + sink.input() + .send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") + .setHeader("contentType", "application/json") + .setHeader("testHeader", "testValue").build()); assertThat(testPojoWithAnnotatedArguments.receivedArguments, hasSize(3)); - assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(0), instanceOf(FooPojo.class)); - assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(0), hasProperty("bar", equalTo("barbar" + id))); - assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(1), instanceOf(Map.class)); - assertThat((Map) testPojoWithAnnotatedArguments.receivedArguments.get(1), + assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(0), + instanceOf(FooPojo.class)); + assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(0), + hasProperty("bar", equalTo("barbar" + id))); + assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(1), + instanceOf(Map.class)); + assertThat( + (Map) testPojoWithAnnotatedArguments.receivedArguments + .get(1), hasEntry(MessageHeaders.CONTENT_TYPE, "application/json")); - assertThat((Map) testPojoWithAnnotatedArguments.receivedArguments.get(1), - hasEntry(equalTo("testHeader"), equalTo("testValue"))); - assertThat((String) testPojoWithAnnotatedArguments.receivedArguments.get(2), equalTo("application/json")); + assertThat((Map) testPojoWithAnnotatedArguments.receivedArguments + .get(1), hasEntry(equalTo("testHeader"), equalTo("testValue"))); + assertThat((String) testPojoWithAnnotatedArguments.receivedArguments.get(2), + equalTo("application/json")); context.close(); } @Test @SuppressWarnings("unchecked") public void testReturn() throws Exception { - ConfigurableApplicationContext context = SpringApplication.run(TestStringProcessor.class); + ConfigurableApplicationContext context = SpringApplication + .run(TestStringProcessor.class); MessageCollector collector = context.getBean(MessageCollector.class); Processor processor = context.getBean(Processor.class); String id = UUID.randomUUID().toString(); - processor.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json").build()); - Message message = (Message) collector.forChannel(processor.output()).poll(1, TimeUnit.SECONDS); - TestStringProcessor testStringProcessor = context.getBean(TestStringProcessor.class); + processor.input() + .send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") + .setHeader("contentType", "application/json").build()); + Message message = (Message) collector + .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); + TestStringProcessor testStringProcessor = context + .getBean(TestStringProcessor.class); assertThat(testStringProcessor.receivedPojos, hasSize(1)); - assertThat(testStringProcessor.receivedPojos.get(0), hasProperty("bar", equalTo("barbar" + id))); + assertThat(testStringProcessor.receivedPojos.get(0), + hasProperty("bar", equalTo("barbar" + id))); assertThat(message, not(nullValue(Message.class))); assertThat(message.getPayload(), equalTo("barbar" + id)); context.close(); @@ -118,36 +134,47 @@ public class StreamListenerTests { @Test @SuppressWarnings("unchecked") public void testReturnConversion() throws Exception { - ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithMimeType.class, + ConfigurableApplicationContext context = SpringApplication.run( + TestPojoWithMimeType.class, "--spring.cloud.stream.bindings.output.contentType=application/json"); MessageCollector collector = context.getBean(MessageCollector.class); Processor processor = context.getBean(Processor.class); String id = UUID.randomUUID().toString(); - processor.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json").build()); - TestPojoWithMimeType testPojoWithMimeType = context.getBean(TestPojoWithMimeType.class); + processor.input() + .send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") + .setHeader("contentType", "application/json").build()); + TestPojoWithMimeType testPojoWithMimeType = context + .getBean(TestPojoWithMimeType.class); assertThat(testPojoWithMimeType.receivedPojos, hasSize(1)); - assertThat(testPojoWithMimeType.receivedPojos.get(0), hasProperty("bar", equalTo("barbar" + id))); - Message message = (Message) collector.forChannel(processor.output()).poll(1, TimeUnit.SECONDS); + assertThat(testPojoWithMimeType.receivedPojos.get(0), + hasProperty("bar", equalTo("barbar" + id))); + Message message = (Message) collector + .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); assertThat(message, not(nullValue(Message.class))); assertThat(message.getPayload(), equalTo("{\"qux\":\"barbar" + id + "\"}")); - assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE, String.class), equalTo("application/json")); + assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE, String.class), + equalTo("application/json")); context.close(); } @Test @SuppressWarnings("unchecked") public void testReturnNoConversion() throws Exception { - ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithMimeType.class); + ConfigurableApplicationContext context = SpringApplication + .run(TestPojoWithMimeType.class); MessageCollector collector = context.getBean(MessageCollector.class); Processor processor = context.getBean(Processor.class); String id = UUID.randomUUID().toString(); - processor.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json").build()); - TestPojoWithMimeType testPojoWithMimeType = context.getBean(TestPojoWithMimeType.class); + processor.input() + .send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") + .setHeader("contentType", "application/json").build()); + TestPojoWithMimeType testPojoWithMimeType = context + .getBean(TestPojoWithMimeType.class); assertThat(testPojoWithMimeType.receivedPojos, hasSize(1)); - assertThat(testPojoWithMimeType.receivedPojos.get(0), hasProperty("bar", equalTo("barbar" + id))); - Message message = (Message) collector.forChannel(processor.output()).poll(1, TimeUnit.SECONDS); + assertThat(testPojoWithMimeType.receivedPojos.get(0), + hasProperty("bar", equalTo("barbar" + id))); + Message message = (Message) collector + .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); assertThat(message, not(nullValue(Message.class))); assertThat(message.getPayload().getQux(), equalTo("barbar" + id)); context.close(); @@ -156,16 +183,21 @@ public class StreamListenerTests { @Test @SuppressWarnings("unchecked") public void testReturnMessage() throws Exception { - ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithMessageReturn.class); + ConfigurableApplicationContext context = SpringApplication + .run(TestPojoWithMessageReturn.class); MessageCollector collector = context.getBean(MessageCollector.class); Processor processor = context.getBean(Processor.class); String id = UUID.randomUUID().toString(); - processor.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json").build()); - TestPojoWithMessageReturn testPojoWithMessageReturn = context.getBean(TestPojoWithMessageReturn.class); + processor.input() + .send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") + .setHeader("contentType", "application/json").build()); + TestPojoWithMessageReturn testPojoWithMessageReturn = context + .getBean(TestPojoWithMessageReturn.class); assertThat(testPojoWithMessageReturn.receivedPojos, hasSize(1)); - assertThat(testPojoWithMessageReturn.receivedPojos.get(0), hasProperty("bar", equalTo("barbar" + id))); - Message message = (Message) collector.forChannel(processor.output()).poll(1, TimeUnit.SECONDS); + assertThat(testPojoWithMessageReturn.receivedPojos.get(0), + hasProperty("bar", equalTo("barbar" + id))); + Message message = (Message) collector + .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); assertThat(message, not(nullValue(Message.class))); assertThat(message.getPayload().getQux(), equalTo("barbar" + id)); context.close(); @@ -174,16 +206,20 @@ public class StreamListenerTests { @Test @SuppressWarnings("unchecked") public void testMessageArgument() throws Exception { - ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithMessageArgument.class); + ConfigurableApplicationContext context = SpringApplication + .run(TestPojoWithMessageArgument.class); MessageCollector collector = context.getBean(MessageCollector.class); Processor processor = context.getBean(Processor.class); String id = UUID.randomUUID().toString(); processor.input().send(MessageBuilder.withPayload("barbar" + id) - .setHeader("contentType", "text/plain").build()); - TestPojoWithMessageArgument testPojoWithMessageArgument = context.getBean(TestPojoWithMessageArgument.class); + .setHeader("contentType", "text/plain").build()); + TestPojoWithMessageArgument testPojoWithMessageArgument = context + .getBean(TestPojoWithMessageArgument.class); assertThat(testPojoWithMessageArgument.receivedMessages, hasSize(1)); - assertThat(testPojoWithMessageArgument.receivedMessages.get(0).getPayload(), equalTo("barbar" + id)); - Message message = (Message) collector.forChannel(processor.output()).poll(1, TimeUnit.SECONDS); + assertThat(testPojoWithMessageArgument.receivedMessages.get(0).getPayload(), + equalTo("barbar" + id)); + Message message = (Message) collector + .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); assertThat(message, not(nullValue(Message.class))); assertThat(message.getPayload().getQux(), equalTo("barbar" + id)); context.close(); @@ -193,32 +229,38 @@ public class StreamListenerTests { @SuppressWarnings("unchecked") public void testDuplicateMapping() throws Exception { try { - ConfigurableApplicationContext context = SpringApplication.run(TestDuplicateMapping.class); + ConfigurableApplicationContext context = SpringApplication + .run(TestDuplicateMapping.class); fail("Exception expected on duplicate mapping"); } catch (BeanCreationException e) { - assertThat(e.getCause().getMessage(), startsWith("Duplicate @StreamListener mapping")); + assertThat(e.getCause().getMessage(), + startsWith("Duplicate @StreamListener mapping")); } } - @Test @SuppressWarnings("unchecked") public void testHandlerBean() throws Exception { - ConfigurableApplicationContext context = SpringApplication.run(TestHandlerBean.class, + ConfigurableApplicationContext context = SpringApplication.run( + TestHandlerBean.class, "--spring.cloud.stream.bindings.output.contentType=application/json"); MessageCollector collector = context.getBean(MessageCollector.class); Processor processor = context.getBean(Processor.class); String id = UUID.randomUUID().toString(); - processor.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json").build()); + processor.input() + .send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") + .setHeader("contentType", "application/json").build()); HandlerBean handlerBean = context.getBean(HandlerBean.class); assertThat(handlerBean.receivedPojos, hasSize(1)); - assertThat(handlerBean.receivedPojos.get(0), hasProperty("bar", equalTo("barbar" + id))); - Message message = (Message) collector.forChannel(processor.output()).poll(1, TimeUnit.SECONDS); + assertThat(handlerBean.receivedPojos.get(0), + hasProperty("bar", equalTo("barbar" + id))); + Message message = (Message) collector + .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); assertThat(message, not(nullValue(Message.class))); assertThat(message.getPayload(), equalTo("{\"qux\":\"barbar" + id + "\"}")); - assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE, String.class), equalTo("application/json")); + assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE, String.class), + equalTo("application/json")); context.close(); } @@ -230,7 +272,6 @@ public class StreamListenerTests { CountDownLatch latch = new CountDownLatch(1); - @StreamListener(Sink.INPUT) public void receive(FooPojo fooPojo) { receivedArguments.add(fooPojo); @@ -275,8 +316,9 @@ public class StreamListenerTests { List receivedArguments = new ArrayList<>(); @StreamListener(Processor.INPUT) - public void receive(@Payload FooPojo fooPojo, @Headers Map headers, - @Header(MessageHeaders.CONTENT_TYPE) String contentType) { + public void receive(@Payload FooPojo fooPojo, + @Headers Map headers, + @Header(MessageHeaders.CONTENT_TYPE) String contentType) { receivedArguments.add(fooPojo); receivedArguments.add(headers); receivedArguments.add(contentType); diff --git a/spring-cloud-stream-test-support-internal/src/main/java/org/springframework/cloud/stream/test/junit/AbstractExternalResourceTestSupport.java b/spring-cloud-stream-test-support-internal/src/main/java/org/springframework/cloud/stream/test/junit/AbstractExternalResourceTestSupport.java index 2379397c6..9243709f0 100644 --- a/spring-cloud-stream-test-support-internal/src/main/java/org/springframework/cloud/stream/test/junit/AbstractExternalResourceTestSupport.java +++ b/spring-cloud-stream-test-support-internal/src/main/java/org/springframework/cloud/stream/test/junit/AbstractExternalResourceTestSupport.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 the original author or authors. + * Copyright 2015-2016 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. @@ -29,105 +29,110 @@ import org.slf4j.LoggerFactory; import org.springframework.util.Assert; /** - * Abstract base class for JUnit {@link Rule}s that detect the presence of some external resource. If the resource is - * indeed present, it will be available during the test lifecycle through {@link #getResource()}. If it is not, tests - * will either fail or be skipped, depending on the value of system property {@value #SCS_EXTERNAL_SERVERS_REQUIRED}. + * Abstract base class for JUnit {@link Rule}s that detect the presence of some external + * resource. If the resource is indeed present, it will be available during the test + * lifecycle through {@link #getResource()}. If it is not, tests will either fail or be + * skipped, depending on the value of system property + * {@value #SCS_EXTERNAL_SERVERS_REQUIRED}. * * @author Eric Bottard * @author Gary Russell */ public abstract class AbstractExternalResourceTestSupport implements TestRule { - public static final String SCS_EXTERNAL_SERVERS_REQUIRED = "SCS_EXTERNAL_SERVERS_REQUIRED"; + public static final String SCS_EXTERNAL_SERVERS_REQUIRED = "SCS_EXTERNAL_SERVERS_REQUIRED"; - protected R resource; + protected R resource; - private String resourceDescription; + private String resourceDescription; - protected final Logger logger = LoggerFactory.getLogger(this.getClass()); + protected final Logger logger = LoggerFactory.getLogger(this.getClass()); - protected AbstractExternalResourceTestSupport(String resourceDescription) { - Assert.hasText(resourceDescription, "resourceDescription is required"); - this.resourceDescription = resourceDescription; - } + protected AbstractExternalResourceTestSupport(String resourceDescription) { + Assert.hasText(resourceDescription, "resourceDescription is required"); + this.resourceDescription = resourceDescription; + } - @Override - public Statement apply(final Statement base, Description description) { - try { - obtainResource(); - } - catch (Exception e) { - maybeCleanup(); + @Override + public Statement apply(final Statement base, Description description) { + try { + obtainResource(); + } + catch (Exception e) { + maybeCleanup(); - return failOrSkip(e); - } + return failOrSkip(e); + } - return new Statement() { + return new Statement() { - @Override - public void evaluate() throws Throwable { - try { - base.evaluate(); - } - finally { - try { - cleanupResource(); - } - catch (Exception ignored) { - logger.warn("Exception while trying to cleanup proper resource", ignored); - } - } - } + @Override + public void evaluate() throws Throwable { + try { + base.evaluate(); + } + finally { + try { + cleanupResource(); + } + catch (Exception ignored) { + logger.warn("Exception while trying to cleanup proper resource", + ignored); + } + } + } - }; - } + }; + } - private Statement failOrSkip(final Exception e) { - String serversRequired = System.getenv(SCS_EXTERNAL_SERVERS_REQUIRED); - if ("true".equalsIgnoreCase(serversRequired)) { - logger.error(resourceDescription + " IS REQUIRED BUT NOT AVAILABLE", e); - fail(resourceDescription + " IS NOT AVAILABLE"); - // Never reached, here to satisfy method signature - return null; - } - else { - logger.error(resourceDescription + " IS NOT AVAILABLE, SKIPPING TESTS", e); - return new Statement() { + private Statement failOrSkip(final Exception e) { + String serversRequired = System.getenv(SCS_EXTERNAL_SERVERS_REQUIRED); + if ("true".equalsIgnoreCase(serversRequired)) { + logger.error(resourceDescription + " IS REQUIRED BUT NOT AVAILABLE", e); + fail(resourceDescription + " IS NOT AVAILABLE"); + // Never reached, here to satisfy method signature + return null; + } + else { + logger.error(resourceDescription + " IS NOT AVAILABLE, SKIPPING TESTS", e); + return new Statement() { - @Override - public void evaluate() throws Throwable { - Assume.assumeTrue("Skipping test due to " + resourceDescription + " not being available " + e, false); - } - }; - } - } + @Override + public void evaluate() throws Throwable { + Assume.assumeTrue("Skipping test due to " + resourceDescription + + " not being available " + e, false); + } + }; + } + } - private void maybeCleanup() { - if (resource != null) { - try { - cleanupResource(); - } - catch (Exception ignored) { - logger.warn("Exception while trying to cleanup failed resource", ignored); - } - } - } + private void maybeCleanup() { + if (resource != null) { + try { + cleanupResource(); + } + catch (Exception ignored) { + logger.warn("Exception while trying to cleanup failed resource", ignored); + } + } + } - public R getResource() { - return resource; - } + public R getResource() { + return resource; + } - /** - * Perform cleanup of the {@link #resource} field, which is guaranteed to be non null. - * - * @throws Exception any exception thrown by this method will be logged and swallowed - */ - protected abstract void cleanupResource() throws Exception; + /** + * Perform cleanup of the {@link #resource} field, which is guaranteed to be non null. + * + * @throws Exception any exception thrown by this method will be logged and swallowed + */ + protected abstract void cleanupResource() throws Exception; - /** - * Try to obtain and validate a resource. Implementors should either set the {@link #resource} field with a valid - * resource and return normally, or throw an exception. - */ - protected abstract void obtainResource() throws Exception; + /** + * Try to obtain and validate a resource. Implementors should either set the + * {@link #resource} field with a valid resource and return normally, or throw an + * exception. + */ + protected abstract void obtainResource() throws Exception; } diff --git a/spring-cloud-stream-test-support-internal/src/main/java/org/springframework/cloud/stream/test/junit/kafka/TestKafkaCluster.java b/spring-cloud-stream-test-support-internal/src/main/java/org/springframework/cloud/stream/test/junit/kafka/TestKafkaCluster.java index e96598f0d..ee0c8daf9 100644 --- a/spring-cloud-stream-test-support-internal/src/main/java/org/springframework/cloud/stream/test/junit/kafka/TestKafkaCluster.java +++ b/spring-cloud-stream-test-support-internal/src/main/java/org/springframework/cloud/stream/test/junit/kafka/TestKafkaCluster.java @@ -1,5 +1,5 @@ /* - * Copyright 2014 the original author or authors. + * Copyright 2014-2016 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. @@ -16,30 +16,15 @@ package org.springframework.cloud.stream.test.junit.kafka; -import kafka.admin.AdminUtils; -import kafka.consumer.Consumer; -import kafka.consumer.ConsumerConfig; -import kafka.javaapi.consumer.ConsumerConnector; -import kafka.server.KafkaConfig; -import kafka.server.KafkaServerStartable; - -import kafka.utils.TestUtils; -import org.I0Itec.zkclient.ZkClient; -import org.apache.curator.framework.CuratorFramework; -import org.apache.curator.framework.CuratorFrameworkFactory; -import org.apache.curator.framework.recipes.cache.PathChildrenCache; -import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent; -import org.apache.curator.framework.recipes.cache.PathChildrenCacheListener; -import org.apache.curator.retry.RetryUntilElapsed; -import org.apache.curator.test.TestingServer; - -import org.springframework.util.Assert; -import org.springframework.util.SocketUtils; - import java.io.IOException; -import java.util.Collections; import java.util.Properties; +import kafka.server.KafkaConfig; +import kafka.server.KafkaServerStartable; +import kafka.utils.TestUtils; +import org.apache.curator.test.TestingServer; + +import org.springframework.util.SocketUtils; /** * A test Kafka + ZooKeeper pair for testing purposes. @@ -65,8 +50,8 @@ public class TestKafkaCluster { } private static KafkaConfig getKafkaConfig(final String zkConnectString) { - scala.collection.Iterator propsI = - TestUtils.createBrokerConfigs(1, false).iterator(); + scala.collection.Iterator propsI = TestUtils + .createBrokerConfigs(1, false).iterator(); assert propsI.hasNext(); Properties props = propsI.next(); assert props.containsKey("zookeeper.connect"); @@ -75,8 +60,7 @@ public class TestKafkaCluster { } public String getKafkaBrokerString() { - return String.format("localhost:%d", - kafkaServer.serverConfig().port()); + return String.format("localhost:%d", kafkaServer.serverConfig().port()); } public void stop() throws IOException { @@ -84,8 +68,6 @@ public class TestKafkaCluster { zkServer.stop(); } - - public String getZkConnectString() { return zkServer.getConnectString(); } diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/aggregate/SharedChannelRegistry.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/aggregate/SharedChannelRegistry.java index e00361aad..210b43f91 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/aggregate/SharedChannelRegistry.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/aggregate/SharedChannelRegistry.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 the original author or authors. + * Copyright 2015-2016 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. @@ -24,7 +24,6 @@ import org.springframework.messaging.MessageChannel; /** * A registry for channels that can be shared between modules, used for module aggregation. - * * @author Marius Bogoevici */ public class SharedChannelRegistry { @@ -39,7 +38,7 @@ public class SharedChannelRegistry { } public void register(String id, MessageChannel messageChannel) { - sharedChannels.put(id, messageChannel); + sharedChannels.put(id, messageChannel); } public Map getAll() { diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/ChannelBindingService.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/ChannelBindingService.java index 556c2f5cc..c2d301ac7 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/ChannelBindingService.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/ChannelBindingService.java @@ -44,7 +44,6 @@ import org.springframework.validation.beanvalidation.CustomValidatorBean; /** * Handles the operations related to channel binding including binding of input/output channels by delegating * to an underlying {@link Binder}, setting up data type conversion for binding channel. - * * @author Mark Fisher * @author Dave Syer * @author Marius Bogoevici @@ -64,7 +63,7 @@ public class ChannelBindingService { private final Map>> consumerBindings = new HashMap<>(); public ChannelBindingService(ChannelBindingServiceProperties channelBindingServiceProperties, - BinderFactory binderFactory) { + BinderFactory binderFactory) { this.channelBindingServiceProperties = channelBindingServiceProperties; this.binderFactory = binderFactory; } diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/InputBindingLifecycle.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/InputBindingLifecycle.java index f2eeaacf7..2c44dae80 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/InputBindingLifecycle.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/InputBindingLifecycle.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 the original author or authors. + * Copyright 2015-2016 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. @@ -17,7 +17,6 @@ package org.springframework.cloud.stream.binding; import java.util.Map; -import java.util.concurrent.atomic.AtomicBoolean; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; @@ -28,7 +27,6 @@ import org.springframework.context.SmartLifecycle; /** * Coordinates binding/unbinding of input channels in accordance to the lifecycle * of the host context. - * * @author Marius Bogoevici * @author Ilayaperumal Gopinathan */ @@ -106,7 +104,8 @@ public class InputBindingLifecycle implements SmartLifecycle, ApplicationContext } /** - * Return a high value so that this bean is started after receiving Lifecycle beans are started. Beans that need to start after bindings will set a higher phase value. + * Return a high value so that this bean is started after receiving Lifecycle beans + * are started. Beans that need to start after bindings will set a higher phase value. */ @Override public int getPhase() { diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java index 1c4c358b7..2c11f86b6 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java @@ -39,12 +39,10 @@ import org.springframework.util.MimeType; import org.springframework.util.StringUtils; /** - * A {@link MessageChannelConfigurer} that sets data types and message converters based on {@link * BindingProperties#contentType}. Also adds a {@link org.springframework.messaging.support.ChannelInterceptor} to * the message channel to set the `ContentType` header for the message (if not already set) based on the `ContentType` * binding property of the channel. - @ * @author Ilayaperumal Gopinathan * @author Marius Bogoevici */ @@ -59,8 +57,8 @@ public class MessageConverterConfigurer implements MessageChannelConfigurer, Bea private final ChannelBindingServiceProperties channelBindingServiceProperties; public MessageConverterConfigurer(ChannelBindingServiceProperties channelBindingServiceProperties, - MessageBuilderFactory messageBuilderFactory, - CompositeMessageConverterFactory compositeMessageConverterFactory) { + MessageBuilderFactory messageBuilderFactory, + CompositeMessageConverterFactory compositeMessageConverterFactory) { Assert.notNull(compositeMessageConverterFactory, "The message converter factory cannot be null"); this.messageBuilderFactory = messageBuilderFactory; this.channelBindingServiceProperties = channelBindingServiceProperties; @@ -95,14 +93,15 @@ public class MessageConverterConfigurer implements MessageChannelConfigurer, Bea messageChannel.setDatatypes(supportedDataTypes); messageChannel.setMessageConverter(new MessageWrappingMessageConverter(messageConverter, mimeType)); messageChannel.addInterceptor(new ChannelInterceptorAdapter() { + @Override public Message preSend(Message message, MessageChannel messageChannel) { Object contentTypeFromMessage = message.getHeaders().get(MessageHeaders.CONTENT_TYPE); if (contentTypeFromMessage == null) { return messageBuilderFactory - .fromMessage(message) - .setHeader(MessageHeaders.CONTENT_TYPE, contentType) - .build(); +.fromMessage(message) + .setHeader(MessageHeaders.CONTENT_TYPE, contentType) + .build(); } return message; } @@ -171,7 +170,9 @@ public class MessageConverterConfigurer implements MessageChannelConfigurer, Bea MimeType messageContentType = MessageConverterUtils.X_JAVA_OBJECT.equals(contentType) ? MessageConverterUtils.javaObjectMimeType(payload.getClass()) : contentType; return messageBuilderFactory.withPayload(payload).copyHeaders(headers) - .copyHeaders(Collections.singletonMap(MessageHeaders.CONTENT_TYPE, messageContentType.toString())).build(); + .copyHeaders(Collections.singletonMap(MessageHeaders.CONTENT_TYPE, + messageContentType.toString())) + .build(); } } } diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BinderFactoryConfiguration.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BinderFactoryConfiguration.java index 6eeffcbb8..944c92083 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BinderFactoryConfiguration.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BinderFactoryConfiguration.java @@ -53,7 +53,7 @@ public class BinderFactoryConfiguration { @Bean @ConditionalOnMissingBean(BinderFactory.class) public BinderFactory binderFactory(BinderTypeRegistry binderTypeRegistry, - ChannelBindingServiceProperties channelBindingServiceProperties) { + ChannelBindingServiceProperties channelBindingServiceProperties) { Map binderConfigurations = new HashMap<>(); if (!CollectionUtils.isEmpty(channelBindingServiceProperties.getBinders())) { for (Map.Entry binderEntry : @@ -120,8 +120,8 @@ public class BinderFactoryConfiguration { Collection parsedBinderConfigurations = new ArrayList<>(); for (Map.Entry entry : properties.entrySet()) { String binderType = (String) entry.getKey(); - String[] binderConfigurationClassNames = - StringUtils.commaDelimitedListToStringArray((String)entry.getValue()); + String[] binderConfigurationClassNames = StringUtils + .commaDelimitedListToStringArray((String) entry.getValue()); Class[] binderConfigurationClasses = new Class[binderConfigurationClassNames.length]; int i = 0; for (String binderConfigurationClassName : binderConfigurationClassNames) { diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/converter/AbstractFromMessageConverter.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/converter/AbstractFromMessageConverter.java index dc881751f..ee8a97f3b 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/converter/AbstractFromMessageConverter.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/converter/AbstractFromMessageConverter.java @@ -37,7 +37,6 @@ import org.springframework.util.MimeType; * * Extend this class to implement {@link org.springframework.messaging.converter.MessageConverter MessageConverters} * used with custom Message conversion. Only {@link #fromMessage} is supported. - * * @author David Turanski * @author Ilayaperumal Gopinathan * @author Marius Bogoevici @@ -50,7 +49,6 @@ public abstract class AbstractFromMessageConverter extends AbstractMessageConver /** * Creates a converter that ignores content-type message headers - * * @param targetMimeType the required target type */ protected AbstractFromMessageConverter(MimeType targetMimeType) { @@ -63,7 +61,8 @@ public abstract class AbstractFromMessageConverter extends AbstractMessageConver /** * Creates a converter that handles one or more content-type message headers - * @param supportedSourceMimeTypes list of {@link MimeType} that may present in content-type header + * @param supportedSourceMimeTypes list of {@link MimeType} that may present in + * content-type header * @param targetMimeType the required target type */ protected AbstractFromMessageConverter(Collection supportedSourceMimeTypes, MimeType targetMimeType) { @@ -73,12 +72,13 @@ public abstract class AbstractFromMessageConverter extends AbstractMessageConver } /** - * Creates a converter that handles one or more content-type message headers and one or more target MIME types - * @param supportedSourceMimeTypes a list of supported content types + * Creates a converter that handles one or more content-type message headers and one + * or more target MIME types + * @param supportedSourceMimeTypes a list of supported content types * @param targetMimeTypes a list of supported target types */ protected AbstractFromMessageConverter(Collection supportedSourceMimeTypes, - Collection targetMimeTypes) { + Collection targetMimeTypes) { super(supportedSourceMimeTypes); Assert.notNull(targetMimeTypes, "'targetMimeTypes' cannot be null"); this.targetMimeTypes = new ArrayList<>(targetMimeTypes); @@ -86,7 +86,8 @@ public abstract class AbstractFromMessageConverter extends AbstractMessageConver /** * Creates a converter that requires a specific content-type message header - * @param supportedSourceMimeType {@link MimeType} that must be present in content-type header + * @param supportedSourceMimeType {@link MimeType} that must be present in + * content-type header * @param targetMimeType the required target type */ protected AbstractFromMessageConverter(MimeType supportedSourceMimeType, MimeType targetMimeType) { @@ -94,8 +95,10 @@ public abstract class AbstractFromMessageConverter extends AbstractMessageConver } /** - * Creates a converter that requires a specific content-type message header and supports multiple target MIME types. - * @param supportedSourceMimeType {@link MimeType} that must be present in content-type header + * Creates a converter that requires a specific content-type message header and + * supports multiple target MIME types. + * @param supportedSourceMimeType {@link MimeType} that must be present in + * content-type header * @param targetMimeTypes a list of supported target types */ protected AbstractFromMessageConverter(MimeType supportedSourceMimeType, Collection targetMimeTypes) { @@ -104,14 +107,12 @@ public abstract class AbstractFromMessageConverter extends AbstractMessageConver /** * Subclasses implement this to specify supported target types - * * @return an array of supported classes or null if any target type is supported */ protected abstract Class[] supportedTargetTypes(); /** * Subclasses implement this to specify supported payload types - * * @return an array of supported classes or null if any target type is supported */ protected abstract Class[] supportedPayloadTypes(); diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ArbitraryInterfaceBindingTestsWithDefaults.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ArbitraryInterfaceBindingTestsWithDefaults.java index 9f5a0fe10..53b9ae406 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ArbitraryInterfaceBindingTestsWithDefaults.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ArbitraryInterfaceBindingTestsWithDefaults.java @@ -21,8 +21,6 @@ import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; -import java.util.Properties; - import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @@ -54,10 +52,14 @@ public class ArbitraryInterfaceBindingTestsWithDefaults { @SuppressWarnings("unchecked") @Test public void testArbitraryInterfaceChannelsBound() { - verify(binder).bindConsumer(eq("foo"), anyString(), eq(fooChannels.foo()), Mockito.any()); - verify(binder).bindConsumer(eq("bar"), anyString(), eq(fooChannels.bar()), Mockito.any()); - verify(binder).bindProducer(eq("baz"), eq(fooChannels.baz()), Mockito.any()); - verify(binder).bindProducer(eq("qux"), eq(fooChannels.qux()), Mockito.any()); + verify(binder).bindConsumer(eq("foo"), anyString(), eq(fooChannels.foo()), + Mockito.any()); + verify(binder).bindConsumer(eq("bar"), anyString(), eq(fooChannels.bar()), + Mockito.any()); + verify(binder).bindProducer(eq("baz"), eq(fooChannels.baz()), + Mockito.any()); + verify(binder).bindProducer(eq("qux"), eq(fooChannels.qux()), + Mockito.any()); verifyNoMoreInteractions(binder); } diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderAwareChannelResolverTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderAwareChannelResolverTests.java index d906fe08f..c10ab52ec 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderAwareChannelResolverTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderAwareChannelResolverTests.java @@ -97,7 +97,8 @@ public class BinderAwareChannelResolverTests { bindings.put("foo", bindingProperties); this.channelBindingServiceProperties.setBindings(bindings); MessageConverterConfigurer messageConverterConfigurer = new MessageConverterConfigurer( - this.channelBindingServiceProperties, new DefaultMessageBuilderFactory(), new CompositeMessageConverterFactory()); + this.channelBindingServiceProperties, new DefaultMessageBuilderFactory(), + new CompositeMessageConverterFactory()); messageConverterConfigurer.setBeanFactory(Mockito.mock(ConfigurableListableBeanFactory.class)); messageConverterConfigurer.afterPropertiesSet(); this.bindableChannelFactory = new DefaultBindableChannelFactory(messageConverterConfigurer); @@ -197,7 +198,8 @@ public class BinderAwareChannelResolverTests { private final Map destinations = new ConcurrentHashMap<>(); @Override - public Binding bindConsumer(String name, String group, MessageChannel inboundBindTarget, ConsumerProperties properties) { + public Binding bindConsumer(String name, String group, + MessageChannel inboundBindTarget, ConsumerProperties properties) { synchronized (destinations) { if (!destinations.containsKey(name)) { destinations.put(name, new DirectChannel()); @@ -210,7 +212,8 @@ public class BinderAwareChannelResolverTests { @Override - public Binding bindProducer(String name, MessageChannel outboundBindTarget, ProducerProperties properties) { + public Binding bindProducer(String name, + MessageChannel outboundBindTarget, ProducerProperties properties) { synchronized (destinations) { if (!destinations.containsKey(name)) { destinations.put(name, new DirectChannel()); diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderFactoryConfigurationTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderFactoryConfigurationTests.java index 0c566caf0..e218e570b 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderFactoryConfigurationTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderFactoryConfigurationTests.java @@ -59,11 +59,15 @@ public class BinderFactoryConfigurationTests { @Test public void loadBinderTypeRegistry() throws Exception { try { - ConfigurableApplicationContext context = createBinderTestContext(new String[]{}); + ConfigurableApplicationContext context = createBinderTestContext( + new String[] {}); fail(); } catch (BeanCreationException e) { - assertThat(e.getMessage(),containsString("Cannot create binder factory, no `META-INF/spring.binders` " + + assertThat(e.getMessage(), + containsString( + "Cannot create binder factory, no `META-INF/spring.binders` " + + "resources found on the classpath")); } } @@ -97,20 +101,20 @@ public class BinderFactoryConfigurationTests { BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder1 = binderFactory.getBinder("binder1"); - assertThat(((StubBinder1)binder1).getName(), is(equalTo("foo"))); + assertThat(((StubBinder1) binder1).getName(), is(equalTo("foo"))); } @Test public void loadBinderTypeRegistryWithOneCustomBinderAndSharedEnvironment() throws Exception { ConfigurableApplicationContext context = createBinderTestContext( new String[] {"binder1"}, "binder1.name=foo", - "spring.cloud.stream.binders.custom.properties.foo=bar", - "spring.cloud.stream.binders.custom.type=binder1"); + "spring.cloud.stream.binders.custom.properties.foo=bar", + "spring.cloud.stream.binders.custom.type=binder1"); BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder1 = binderFactory.getBinder("custom"); - assertThat(((StubBinder1)binder1).getName(), is(equalTo("foo"))); + assertThat(((StubBinder1) binder1).getName(), is(equalTo("foo"))); } @Test @@ -124,14 +128,14 @@ public class BinderFactoryConfigurationTests { BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder1 = binderFactory.getBinder("custom"); - assertThat(((StubBinder1)binder1).getName(),isEmptyOrNullString()); + assertThat(((StubBinder1) binder1).getName(), isEmptyOrNullString()); } @Test public void loadBinderTypeRegistryWithTwoBinders() throws Exception { ConfigurableApplicationContext context = createBinderTestContext( - new String[]{"binder1", "binder2"}); + new String[] { "binder1", "binder2" }); BinderTypeRegistry binderTypeRegistry = context.getBean(BinderTypeRegistry.class); assertThat(binderTypeRegistry, notNullValue()); assertThat(binderTypeRegistry.getAll().size(), equalTo(2)); @@ -165,7 +169,8 @@ public class BinderFactoryConfigurationTests { ConfigurableApplicationContext context = createBinderTestContext( - new String[]{"binder1", "binder2"}, "spring.cloud.stream.defaultBinder:binder2"); + new String[] { "binder1", "binder2" }, + "spring.cloud.stream.defaultBinder:binder2"); BinderTypeRegistry binderTypeRegistry = context.getBean(BinderTypeRegistry.class); assertThat(binderTypeRegistry, notNullValue()); assertThat(binderTypeRegistry.getAll().size(), equalTo(2)); @@ -186,10 +191,9 @@ public class BinderFactoryConfigurationTests { Binder defaultBinder = binderFactory.getBinder(null); assertThat(defaultBinder, is(binder2)); } - + public static ConfigurableApplicationContext createBinderTestContext(String[] additionalClasspathDirectories, - String... properties) - throws IOException { + String... properties) throws IOException { URL[] urls = ObjectUtils.isEmpty(additionalClasspathDirectories) ? new URL[0] : new URL[additionalClasspathDirectories.length]; if (!ObjectUtils.isEmpty(additionalClasspathDirectories)) { @@ -208,5 +212,6 @@ public class BinderFactoryConfigurationTests { @Import({BinderFactoryConfiguration.class, PropertyPlaceholderAutoConfiguration.class}) @EnableBinding public static class SimpleApplication { + } } diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ErrorBindingTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ErrorBindingTests.java index 1f6195a89..9794896f7 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ErrorBindingTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ErrorBindingTests.java @@ -21,8 +21,6 @@ import static org.mockito.Matchers.eq; import static org.mockito.Matchers.isNull; import static org.mockito.Matchers.same; -import java.util.Properties; - import org.junit.Test; import org.mockito.Mockito; diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/HealthIndicatorsConfigurationTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/HealthIndicatorsConfigurationTests.java index 63e360615..ef8ffde12 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/HealthIndicatorsConfigurationTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/HealthIndicatorsConfigurationTests.java @@ -54,40 +54,44 @@ import org.springframework.util.ObjectUtils; */ public class HealthIndicatorsConfigurationTests { - @Test public void healthIndicatorsCheck() throws Exception { - ConfigurableApplicationContext context = - createBinderTestContext( - new String[]{"binder1", "binder2"}, "spring.cloud.stream.defaultBinder:binder2"); + ConfigurableApplicationContext context = createBinderTestContext( + new String[] { "binder1", "binder2" }, + "spring.cloud.stream.defaultBinder:binder2"); Binder binder1 = context.getBean(BinderFactory.class).getBinder("binder1"); assertThat(binder1, instanceOf(StubBinder1.class)); Binder binder2 = context.getBean(BinderFactory.class).getBinder("binder2"); assertThat(binder2, instanceOf(StubBinder2.class)); - CompositeHealthIndicator bindersHealthIndicator = - context.getBean("bindersHealthIndicator", CompositeHealthIndicator.class); + CompositeHealthIndicator bindersHealthIndicator = context + .getBean("bindersHealthIndicator", CompositeHealthIndicator.class); - DirectFieldAccessor directFieldAccessor = new DirectFieldAccessor(bindersHealthIndicator); + DirectFieldAccessor directFieldAccessor = new DirectFieldAccessor( + bindersHealthIndicator); assertNotNull(bindersHealthIndicator); - assertNotNull(context.getBean("testHealthIndicator1", CompositeHealthIndicator.class)); - assertNotNull(context.getBean("testHealthIndicator2", CompositeHealthIndicator.class)); + assertNotNull( + context.getBean("testHealthIndicator1", CompositeHealthIndicator.class)); + assertNotNull( + context.getBean("testHealthIndicator2", CompositeHealthIndicator.class)); @SuppressWarnings("unchecked") - Map healthIndicators = - (Map) directFieldAccessor.getPropertyValue("indicators"); + Map healthIndicators = (Map) directFieldAccessor + .getPropertyValue("indicators"); assertThat(healthIndicators, IsMapContaining.hasKey("binder1")); - assertThat(healthIndicators.get("binder1").health().getStatus(), CoreMatchers.equalTo(Status.UP)); + assertThat(healthIndicators.get("binder1").health().getStatus(), + CoreMatchers.equalTo(Status.UP)); assertThat(healthIndicators, IsMapContaining.hasKey("binder2")); - assertThat(healthIndicators.get("binder2").health().getStatus(), CoreMatchers.equalTo(Status.UNKNOWN)); + assertThat(healthIndicators.get("binder2").health().getStatus(), + CoreMatchers.equalTo(Status.UNKNOWN)); } @Test public void healthIndicatorsCheckWhenDisabled() throws Exception { - ConfigurableApplicationContext context = - createBinderTestContext( - new String[]{"binder1", "binder2"}, "spring.cloud.stream.defaultBinder:binder2", - "management.health.binders.enabled:false"); + ConfigurableApplicationContext context = createBinderTestContext( + new String[] { "binder1", "binder2" }, + "spring.cloud.stream.defaultBinder:binder2", + "management.health.binders.enabled:false"); Binder binder1 = context.getBean(BinderFactory.class).getBinder("binder1"); assertThat(binder1, instanceOf(StubBinder1.class)); @@ -100,26 +104,28 @@ public class HealthIndicatorsConfigurationTests { } catch (NoSuchBeanDefinitionException e) { } - assertNotNull(context.getBean("testHealthIndicator1", CompositeHealthIndicator.class)); - assertNotNull(context.getBean("testHealthIndicator2", CompositeHealthIndicator.class)); + assertNotNull( + context.getBean("testHealthIndicator1", CompositeHealthIndicator.class)); + assertNotNull( + context.getBean("testHealthIndicator2", CompositeHealthIndicator.class)); } - public static ConfigurableApplicationContext createBinderTestContext(String[] additionalClasspathDirectories, - String... properties) - throws IOException { - URL[] urls = ObjectUtils.isEmpty(additionalClasspathDirectories) ? - new URL[0] : new URL[additionalClasspathDirectories.length]; + public static ConfigurableApplicationContext createBinderTestContext( + String[] additionalClasspathDirectories, String... properties) + throws IOException { + URL[] urls = ObjectUtils.isEmpty(additionalClasspathDirectories) ? new URL[0] + : new URL[additionalClasspathDirectories.length]; if (!ObjectUtils.isEmpty(additionalClasspathDirectories)) { for (int i = 0; i < additionalClasspathDirectories.length; i++) { - urls[i] = new URL(new ClassPathResource(additionalClasspathDirectories[i]).getURL().toString() + "/"); + urls[i] = new URL(new ClassPathResource(additionalClasspathDirectories[i]) + .getURL().toString() + "/"); } } - ClassLoader classLoader = new URLClassLoader(urls, BinderFactoryConfigurationTests.class.getClassLoader()); + ClassLoader classLoader = new URLClassLoader(urls, + BinderFactoryConfigurationTests.class.getClassLoader()); return new SpringApplicationBuilder(SimpleSource.class) .resourceLoader(new DefaultResourceLoader(classLoader)) - .properties(properties) - .web(false) - .run(); + .properties(properties).web(false).run(); } @EnableAutoConfiguration @@ -141,5 +147,4 @@ public class HealthIndicatorsConfigurationTests { } } - } diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ProcessorBindingTestsWithBindingTargets.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ProcessorBindingTestsWithBindingTargets.java index 79d888e17..41f3d4ec7 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ProcessorBindingTestsWithBindingTargets.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ProcessorBindingTestsWithBindingTargets.java @@ -20,8 +20,6 @@ import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; -import java.util.Properties; - import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @@ -48,14 +46,17 @@ public class ProcessorBindingTestsWithBindingTargets { @Autowired private Binder binder; - @Autowired @Bindings(TestProcessor.class) + @Autowired + @Bindings(TestProcessor.class) private Processor testProcessor; @SuppressWarnings("unchecked") @Test public void testSourceOutputChannelBound() { - verify(binder).bindConsumer(eq("testtock.0"), anyString(), eq(testProcessor.input()), Mockito.any()); - verify(binder).bindProducer(eq("testtock.1"), eq(testProcessor.output()), Mockito.any()); + verify(binder).bindConsumer(eq("testtock.0"), anyString(), + eq(testProcessor.input()), Mockito.any()); + verify(binder).bindProducer(eq("testtock.1"), eq(testProcessor.output()), + Mockito.any()); } @EnableBinding(Processor.class) diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ProcessorBindingTestsWithDefaults.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ProcessorBindingTestsWithDefaults.java index 090ab178c..8a6a81a04 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ProcessorBindingTestsWithDefaults.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ProcessorBindingTestsWithDefaults.java @@ -20,8 +20,6 @@ import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verifyNoMoreInteractions; -import java.util.Properties; - import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SinkBindingTestsWithBindingTargets.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SinkBindingTestsWithBindingTargets.java index a81314a21..92f9e9a91 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SinkBindingTestsWithBindingTargets.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SinkBindingTestsWithBindingTargets.java @@ -21,8 +21,6 @@ import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; -import java.util.Properties; - import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @@ -49,13 +47,15 @@ public class SinkBindingTestsWithBindingTargets { @Autowired private Binder binder; - @Autowired @Bindings(TestSink.class) + @Autowired + @Bindings(TestSink.class) private Sink testSink; @SuppressWarnings("unchecked") @Test public void testSourceOutputChannelBound() { - verify(binder).bindConsumer(eq("testtock"), anyString(), eq(testSink.input()), Mockito.any()); + verify(binder).bindConsumer(eq("testtock"), anyString(), eq(testSink.input()), + Mockito.any()); verifyNoMoreInteractions(binder); } diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SinkBindingTestsWithDefaults.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SinkBindingTestsWithDefaults.java index d592c8b93..eecaf70ec 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SinkBindingTestsWithDefaults.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SinkBindingTestsWithDefaults.java @@ -21,8 +21,6 @@ import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; -import java.util.Properties; - import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SourceBindingTestsWithBindingTargets.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SourceBindingTestsWithBindingTargets.java index 49ab987bc..4218b4b61 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SourceBindingTestsWithBindingTargets.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/SourceBindingTestsWithBindingTargets.java @@ -20,8 +20,6 @@ import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; -import java.util.Properties; - import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/stub2/StubBinder2ConfigurationB.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/stub2/StubBinder2ConfigurationB.java index 8a8fac197..758956b95 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/stub2/StubBinder2ConfigurationB.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/stub2/StubBinder2ConfigurationB.java @@ -29,4 +29,4 @@ public class StubBinder2ConfigurationB { public StubBinder2Dependency dependency() { return new StubBinder2Dependency(); } - } +} diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binding/ChannelBindingServiceTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binding/ChannelBindingServiceTests.java index a2768a7db..db9a923fe 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binding/ChannelBindingServiceTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binding/ChannelBindingServiceTests.java @@ -16,7 +16,6 @@ package org.springframework.cloud.stream.binding; - import static org.hamcrest.CoreMatchers.sameInstance; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.core.Is.is; @@ -41,6 +40,11 @@ import java.util.Map; import java.util.Properties; import java.util.concurrent.atomic.AtomicReference; +import org.junit.Test; +import org.mockito.Mockito; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; + import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.cloud.stream.binder.Binder; @@ -59,11 +63,6 @@ import org.springframework.integration.support.DefaultMessageBuilderFactory; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.core.DestinationResolutionException; -import org.junit.Test; -import org.mockito.Mockito; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - /** * @author Gary Russell * @author Mark Fisher @@ -86,18 +85,21 @@ public class ChannelBindingServiceTests { new BinderConfiguration(new BinderType("mock", new Class[]{MockBinderConfiguration.class}), new Properties(), true))); Binder binder = binderFactory.getBinder("mock"); - ChannelBindingService service = new ChannelBindingService(properties, binderFactory); + ChannelBindingService service = new ChannelBindingService(properties, + binderFactory); MessageChannel inputChannel = new DirectChannel(); @SuppressWarnings("unchecked") Binding mockBinding = Mockito.mock(Binding.class); - when(binder.bindConsumer(eq("foo"), isNull(String.class), same(inputChannel), any(ConsumerProperties.class))) - .thenReturn(mockBinding); - Collection> bindings = service.bindConsumer(inputChannel, inputChannelName); + when(binder.bindConsumer(eq("foo"), isNull(String.class), same(inputChannel), + any(ConsumerProperties.class))).thenReturn(mockBinding); + Collection> bindings = service.bindConsumer(inputChannel, + inputChannelName); assertThat(bindings.size(), is(1)); Binding binding = bindings.iterator().next(); assertThat(binding, sameInstance(mockBinding)); service.unbindConsumers(inputChannelName); - verify(binder).bindConsumer(eq("foo"), isNull(String.class), same(inputChannel), any(ConsumerProperties.class)); + verify(binder).bindConsumer(eq("foo"), isNull(String.class), same(inputChannel), + any(ConsumerProperties.class)); verify(binding).unbind(); binderFactory.destroy(); } @@ -113,13 +115,18 @@ public class ChannelBindingServiceTests { properties.setBindings(bindingProperties); - DefaultBinderFactory binderFactory = - new DefaultBinderFactory<>(Collections.singletonMap("mock", - new BinderConfiguration(new BinderType("mock", new Class[]{MockBinderConfiguration.class}), - new Properties(), true))); + DefaultBinderFactory binderFactory = new DefaultBinderFactory<>( + Collections + .singletonMap("mock", + new BinderConfiguration( + new BinderType("mock", + new Class[] { + MockBinderConfiguration.class }), + new Properties(), true))); Binder binder = binderFactory.getBinder("mock"); - ChannelBindingService service = new ChannelBindingService(properties, binderFactory); + ChannelBindingService service = new ChannelBindingService(properties, + binderFactory); MessageChannel inputChannel = new DirectChannel(); @SuppressWarnings("unchecked") @@ -127,12 +134,13 @@ public class ChannelBindingServiceTests { @SuppressWarnings("unchecked") Binding mockBinding2 = Mockito.mock(Binding.class); - when(binder.bindConsumer(eq("foo"), isNull(String.class), same(inputChannel), any(ConsumerProperties.class))) - .thenReturn(mockBinding1); - when(binder.bindConsumer(eq("bar"), isNull(String.class), same(inputChannel), any(ConsumerProperties.class))) - .thenReturn(mockBinding2); + when(binder.bindConsumer(eq("foo"), isNull(String.class), same(inputChannel), + any(ConsumerProperties.class))).thenReturn(mockBinding1); + when(binder.bindConsumer(eq("bar"), isNull(String.class), same(inputChannel), + any(ConsumerProperties.class))).thenReturn(mockBinding2); - Collection> bindings = service.bindConsumer(inputChannel, "input"); + Collection> bindings = service.bindConsumer(inputChannel, + "input"); assertThat(bindings.size(), is(2)); Iterator> iterator = bindings.iterator(); @@ -144,8 +152,10 @@ public class ChannelBindingServiceTests { service.unbindConsumers("input"); - verify(binder).bindConsumer(eq("foo"), isNull(String.class), same(inputChannel), any(ConsumerProperties.class)); - verify(binder).bindConsumer(eq("bar"), isNull(String.class), same(inputChannel), any(ConsumerProperties.class)); + verify(binder).bindConsumer(eq("foo"), isNull(String.class), same(inputChannel), + any(ConsumerProperties.class)); + verify(binder).bindConsumer(eq("bar"), isNull(String.class), same(inputChannel), + any(ConsumerProperties.class)); verify(binding1).unbind(); verify(binding2).unbind(); @@ -162,37 +172,48 @@ public class ChannelBindingServiceTests { final String inputChannelName = "input"; bindingProperties.put(inputChannelName, props); properties.setBindings(bindingProperties); - DefaultBinderFactory binderFactory = - new DefaultBinderFactory<>(Collections.singletonMap("mock", - new BinderConfiguration(new BinderType("mock", new Class[]{MockBinderConfiguration.class}), - new Properties(), true))); + DefaultBinderFactory binderFactory = new DefaultBinderFactory<>( + Collections + .singletonMap("mock", + new BinderConfiguration( + new BinderType("mock", + new Class[] { + MockBinderConfiguration.class }), + new Properties(), true))); Binder binder = binderFactory.getBinder("mock"); - ChannelBindingService service = new ChannelBindingService(properties, binderFactory); + ChannelBindingService service = new ChannelBindingService(properties, + binderFactory); MessageChannel inputChannel = new DirectChannel(); @SuppressWarnings("unchecked") Binding mockBinding = Mockito.mock(Binding.class); - when(binder.bindConsumer(eq("foo"), eq("fooGroup"), same(inputChannel), any(ConsumerProperties.class))) - .thenReturn(mockBinding); - Collection> bindings = service.bindConsumer(inputChannel, inputChannelName); + when(binder.bindConsumer(eq("foo"), eq("fooGroup"), same(inputChannel), + any(ConsumerProperties.class))).thenReturn(mockBinding); + Collection> bindings = service.bindConsumer(inputChannel, + inputChannelName); assertThat(bindings.size(), is(1)); Binding binding = bindings.iterator().next(); assertThat(binding, sameInstance(mockBinding)); service.unbindConsumers(inputChannelName); - verify(binder).bindConsumer(eq("foo"), eq(props.getGroup()), same(inputChannel), any(ConsumerProperties.class)); + verify(binder).bindConsumer(eq("foo"), eq(props.getGroup()), same(inputChannel), + any(ConsumerProperties.class)); verify(binding).unbind(); binderFactory.destroy(); } @Test - public void checkDynamicBinding () { + public void checkDynamicBinding() { ChannelBindingServiceProperties properties = new ChannelBindingServiceProperties(); DynamicDestinationsBindable dynamicDestinationsBindable = new DynamicDestinationsBindable(); - DefaultBinderFactory binderFactory = - new DefaultBinderFactory<>(Collections.singletonMap("mock", - new BinderConfiguration(new BinderType("mock", new Class[]{MockBinderConfiguration.class}), - new Properties(), true))); + DefaultBinderFactory binderFactory = new DefaultBinderFactory<>( + Collections + .singletonMap("mock", + new BinderConfiguration( + new BinderType("mock", + new Class[] { + MockBinderConfiguration.class }), + new Properties(), true))); Binder binder = binderFactory.getBinder("mock"); MessageChannel inputChannel = new DirectChannel(); @@ -200,14 +221,18 @@ public class ChannelBindingServiceTests { Binding mockBinding = Mockito.mock(Binding.class); @SuppressWarnings("unchecked") final AtomicReference dynamic = new AtomicReference<>(); - when(binder.bindProducer( - matches("bar"), any(DirectChannel.class), any(ProducerProperties.class))).thenReturn(mockBinding); - BinderAwareChannelResolver resolver = new BinderAwareChannelResolver(binderFactory, properties, dynamicDestinationsBindable, - new DefaultBindableChannelFactory(new MessageConverterConfigurer(properties, new DefaultMessageBuilderFactory(), new CompositeMessageConverterFactory()))); - ConfigurableListableBeanFactory beanFactory = mock(ConfigurableListableBeanFactory.class); + when(binder.bindProducer(matches("bar"), any(DirectChannel.class), + any(ProducerProperties.class))).thenReturn(mockBinding); + BinderAwareChannelResolver resolver = new BinderAwareChannelResolver( + binderFactory, properties, dynamicDestinationsBindable, + new DefaultBindableChannelFactory(new MessageConverterConfigurer( + properties, new DefaultMessageBuilderFactory(), + new CompositeMessageConverterFactory()))); + ConfigurableListableBeanFactory beanFactory = mock( + ConfigurableListableBeanFactory.class); when(beanFactory.getBean("mock:bar", MessageChannel.class)) .thenThrow(new NoSuchBeanDefinitionException(MessageChannel.class)); - doAnswer(new Answer(){ + doAnswer(new Answer() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { @@ -227,7 +252,8 @@ public class ChannelBindingServiceTests { resolver.setBeanFactory(beanFactory); MessageChannel resolved = resolver.resolveDestination("mock:bar"); assertThat(resolved, sameInstance(dynamic.get())); - verify(binder).bindProducer(eq("bar"), eq(dynamic.get()), any(ProducerProperties.class)); + verify(binder).bindProducer(eq("bar"), eq(dynamic.get()), + any(ProducerProperties.class)); properties.setDynamicDestinations(new String[] { "mock:bar" }); resolved = resolver.resolveDestination("mock:bar"); assertThat(resolved, sameInstance(dynamic.get())); @@ -237,7 +263,8 @@ public class ChannelBindingServiceTests { fail(); } catch (DestinationResolutionException e) { - assertThat(e.getMessage(), containsString("Failed to find MessageChannel bean with name 'mock:bar'")); + assertThat(e.getMessage(), containsString( + "Failed to find MessageChannel bean with name 'mock:bar'")); } } @@ -280,18 +307,24 @@ public class ChannelBindingServiceTests { final String inputChannelName = "input"; bindingProperties.put(inputChannelName, props); serviceProperties.setBindings(bindingProperties); - DefaultBinderFactory binderFactory = - new DefaultBinderFactory<>(Collections.singletonMap("mock", - new BinderConfiguration(new BinderType("mock", new Class[]{MockBinderConfiguration.class}), - new Properties(), true))); - ChannelBindingService service = new ChannelBindingService(serviceProperties, binderFactory); + DefaultBinderFactory binderFactory = new DefaultBinderFactory<>( + Collections + .singletonMap("mock", + new BinderConfiguration( + new BinderType("mock", + new Class[] { + MockBinderConfiguration.class }), + new Properties(), true))); + ChannelBindingService service = new ChannelBindingService(serviceProperties, + binderFactory); MessageChannel inputChannel = new DirectChannel(); try { service.bindConsumer(inputChannel, inputChannelName); fail("Consumer properties should be validated."); } catch (IllegalStateException e) { - assertTrue(e.getMessage().contains("Concurrency should be greater than zero.")); + assertTrue( + e.getMessage().contains("Concurrency should be greater than zero.")); } } } diff --git a/src/checkstyle/checkstyle.xml b/src/checkstyle/checkstyle.xml new file mode 100644 index 000000000..8bc4ea48a --- /dev/null +++ b/src/checkstyle/checkstyle.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + +