diff --git a/pact/pact-message-consumer/src/main/java/io/reflectoring/UserCreatedMessageConsumer.java b/pact/pact-message-consumer/src/main/java/io/reflectoring/MessageConsumer.java similarity index 83% rename from pact/pact-message-consumer/src/main/java/io/reflectoring/UserCreatedMessageConsumer.java rename to pact/pact-message-consumer/src/main/java/io/reflectoring/MessageConsumer.java index d5e9f92..42232a9 100644 --- a/pact/pact-message-consumer/src/main/java/io/reflectoring/UserCreatedMessageConsumer.java +++ b/pact/pact-message-consumer/src/main/java/io/reflectoring/MessageConsumer.java @@ -13,13 +13,13 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class UserCreatedMessageConsumer { +public class MessageConsumer { - private Logger logger = LoggerFactory.getLogger(UserCreatedMessageConsumer.class); + private Logger logger = LoggerFactory.getLogger(MessageConsumer.class); private ObjectMapper objectMapper; - public UserCreatedMessageConsumer(ObjectMapper objectMapper) { + public MessageConsumer(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } diff --git a/pact/pact-message-consumer/src/main/java/io/reflectoring/MessageConsumerConfiguration.java b/pact/pact-message-consumer/src/main/java/io/reflectoring/MessageConsumerConfiguration.java index 7c41af9..619aded 100644 --- a/pact/pact-message-consumer/src/main/java/io/reflectoring/MessageConsumerConfiguration.java +++ b/pact/pact-message-consumer/src/main/java/io/reflectoring/MessageConsumerConfiguration.java @@ -47,13 +47,13 @@ public class MessageConsumerConfiguration { } @Bean - public MessageListenerAdapter listenerAdapter(UserCreatedMessageConsumer userCreatedMessageConsumer) { - return new MessageListenerAdapter(userCreatedMessageConsumer, "consumeStringMessage"); + public MessageListenerAdapter listenerAdapter(MessageConsumer messageConsumer) { + return new MessageListenerAdapter(messageConsumer, "consumeStringMessage"); } @Bean - public UserCreatedMessageConsumer eventReceiver(ObjectMapper objectMapper) { - return new UserCreatedMessageConsumer(objectMapper); + public MessageConsumer eventReceiver(ObjectMapper objectMapper) { + return new MessageConsumer(objectMapper); } } diff --git a/pact/pact-message-consumer/src/test/java/io/reflectoring/UserCreatedMessageConsumerTest.java b/pact/pact-message-consumer/src/test/java/io/reflectoring/MessageConsumerTest.java similarity index 88% rename from pact/pact-message-consumer/src/test/java/io/reflectoring/UserCreatedMessageConsumerTest.java rename to pact/pact-message-consumer/src/test/java/io/reflectoring/MessageConsumerTest.java index 4202b04..2c2be5e 100644 --- a/pact/pact-message-consumer/src/test/java/io/reflectoring/UserCreatedMessageConsumerTest.java +++ b/pact/pact-message-consumer/src/test/java/io/reflectoring/MessageConsumerTest.java @@ -17,14 +17,14 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -public class UserCreatedMessageConsumerTest { +public class MessageConsumerTest { @Rule public MessagePactProviderRule mockProvider = new MessagePactProviderRule(this); private byte[] currentMessage; @Autowired - private UserCreatedMessageConsumer userCreatedMessageConsumer; + private MessageConsumer messageConsumer; @Pact(provider = "userservice", consumer = "userclient") public MessagePact userCreatedMessagePact(MessagePactBuilder builder) { @@ -46,7 +46,7 @@ public class UserCreatedMessageConsumerTest { @Test @PactVerification("userCreatedMessagePact") public void verifyCreatePersonPact() throws IOException { - userCreatedMessageConsumer.consumeStringMessage(new String(this.currentMessage)); + messageConsumer.consumeStringMessage(new String(this.currentMessage)); } /** diff --git a/pact/pact-message-provider/.gitignore b/pact/pact-message-producer/.gitignore similarity index 100% rename from pact/pact-message-provider/.gitignore rename to pact/pact-message-producer/.gitignore diff --git a/pact/pact-message-provider/README.md b/pact/pact-message-producer/README.md similarity index 100% rename from pact/pact-message-provider/README.md rename to pact/pact-message-producer/README.md diff --git a/pact/pact-message-provider/application.yml b/pact/pact-message-producer/application.yml similarity index 100% rename from pact/pact-message-provider/application.yml rename to pact/pact-message-producer/application.yml diff --git a/pact/pact-message-provider/build.gradle b/pact/pact-message-producer/build.gradle similarity index 100% rename from pact/pact-message-provider/build.gradle rename to pact/pact-message-producer/build.gradle diff --git a/pact/pact-message-provider/gradle.properties b/pact/pact-message-producer/gradle.properties similarity index 100% rename from pact/pact-message-provider/gradle.properties rename to pact/pact-message-producer/gradle.properties diff --git a/pact/pact-message-provider/gradle/wrapper/gradle-wrapper.jar b/pact/pact-message-producer/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from pact/pact-message-provider/gradle/wrapper/gradle-wrapper.jar rename to pact/pact-message-producer/gradle/wrapper/gradle-wrapper.jar diff --git a/pact/pact-message-provider/gradle/wrapper/gradle-wrapper.properties b/pact/pact-message-producer/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from pact/pact-message-provider/gradle/wrapper/gradle-wrapper.properties rename to pact/pact-message-producer/gradle/wrapper/gradle-wrapper.properties diff --git a/pact/pact-message-provider/gradlew b/pact/pact-message-producer/gradlew similarity index 100% rename from pact/pact-message-provider/gradlew rename to pact/pact-message-producer/gradlew diff --git a/pact/pact-message-provider/gradlew.bat b/pact/pact-message-producer/gradlew.bat similarity index 100% rename from pact/pact-message-provider/gradlew.bat rename to pact/pact-message-producer/gradlew.bat diff --git a/pact/pact-message-provider/src/main/java/io/reflectoring/DemoApplication.java b/pact/pact-message-producer/src/main/java/io/reflectoring/DemoApplication.java similarity index 100% rename from pact/pact-message-provider/src/main/java/io/reflectoring/DemoApplication.java rename to pact/pact-message-producer/src/main/java/io/reflectoring/DemoApplication.java diff --git a/pact/pact-message-producer/src/main/java/io/reflectoring/MessageProducer.java b/pact/pact-message-producer/src/main/java/io/reflectoring/MessageProducer.java new file mode 100644 index 0000000..4e96157 --- /dev/null +++ b/pact/pact-message-producer/src/main/java/io/reflectoring/MessageProducer.java @@ -0,0 +1,31 @@ +package io.reflectoring; + +import java.io.IOException; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Takes a {@link UserCreatedMessage}, converts it to a {@link String} and sends it to be published. + */ +class MessageProducer { + + private Logger logger = LoggerFactory.getLogger(MessageProducer.class); + + private ObjectMapper objectMapper; + + private MessagePublisher messagePublisher; + + MessageProducer(ObjectMapper objectMapper, MessagePublisher messagePublisher) { + this.objectMapper = objectMapper; + this.messagePublisher = messagePublisher; + } + + void produceUserCreatedMessage(UserCreatedMessage message) throws IOException { + String stringMessage = objectMapper.writeValueAsString(message); + messagePublisher.publishMessage(stringMessage, "user.created"); + logger.info("Published message '{}'", stringMessage); + } + +} diff --git a/pact/pact-message-provider/src/main/java/io/reflectoring/MessageProviderConfiguration.java b/pact/pact-message-producer/src/main/java/io/reflectoring/MessageProviderConfiguration.java similarity index 54% rename from pact/pact-message-provider/src/main/java/io/reflectoring/MessageProviderConfiguration.java rename to pact/pact-message-producer/src/main/java/io/reflectoring/MessageProviderConfiguration.java index 9f5b6b6..195ee29 100644 --- a/pact/pact-message-provider/src/main/java/io/reflectoring/MessageProviderConfiguration.java +++ b/pact/pact-message-producer/src/main/java/io/reflectoring/MessageProviderConfiguration.java @@ -18,18 +18,18 @@ class MessageProviderConfiguration { @Bean - UserCreatedMessageProvider messageProvider(ObjectMapper objectMapper, UserCreatedMessagePublisher publisher) { - return new UserCreatedMessageProvider(objectMapper, publisher); + MessageProducer messageProvider(ObjectMapper objectMapper, MessagePublisher publisher) { + return new MessageProducer(objectMapper, publisher); } @Bean - UserCreatedMessagePublisher messagePublisher(RabbitTemplate rabbitTemplate, TopicExchange topicExchange) { - return new UserCreatedMessagePublisher(rabbitTemplate, topicExchange); + MessagePublisher messagePublisher(RabbitTemplate rabbitTemplate, TopicExchange topicExchange) { + return new MessagePublisher(rabbitTemplate, topicExchange); } @Bean - SendMessageJob job(UserCreatedMessageProvider messageProvider) { - return new SendMessageJob(messageProvider); + SendMessageJob job(MessageProducer messageProducer) { + return new SendMessageJob(messageProducer); } diff --git a/pact/pact-message-provider/src/main/java/io/reflectoring/UserCreatedMessagePublisher.java b/pact/pact-message-producer/src/main/java/io/reflectoring/MessagePublisher.java similarity index 79% rename from pact/pact-message-provider/src/main/java/io/reflectoring/UserCreatedMessagePublisher.java rename to pact/pact-message-producer/src/main/java/io/reflectoring/MessagePublisher.java index 692dda8..ed0451c 100644 --- a/pact/pact-message-provider/src/main/java/io/reflectoring/UserCreatedMessagePublisher.java +++ b/pact/pact-message-producer/src/main/java/io/reflectoring/MessagePublisher.java @@ -6,13 +6,13 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; /** * Publishes a String message to RabbitMQ. */ -class UserCreatedMessagePublisher { +class MessagePublisher { private RabbitTemplate rabbitTemplate; private TopicExchange topicExchange; - UserCreatedMessagePublisher(RabbitTemplate rabbitTemplate, TopicExchange topicExchange) { + MessagePublisher(RabbitTemplate rabbitTemplate, TopicExchange topicExchange) { this.rabbitTemplate = rabbitTemplate; this.topicExchange = topicExchange; } diff --git a/pact/pact-message-provider/src/main/java/io/reflectoring/SendMessageJob.java b/pact/pact-message-producer/src/main/java/io/reflectoring/SendMessageJob.java similarity index 76% rename from pact/pact-message-provider/src/main/java/io/reflectoring/SendMessageJob.java rename to pact/pact-message-producer/src/main/java/io/reflectoring/SendMessageJob.java index 87bece3..0cd44ea 100644 --- a/pact/pact-message-provider/src/main/java/io/reflectoring/SendMessageJob.java +++ b/pact/pact-message-producer/src/main/java/io/reflectoring/SendMessageJob.java @@ -10,10 +10,10 @@ class SendMessageJob { private Random random = new Random(); - private UserCreatedMessageProvider messageProvider; + private MessageProducer messageProducer; - SendMessageJob(UserCreatedMessageProvider messageProvider) { - this.messageProvider = messageProvider; + SendMessageJob(MessageProducer messageProducer) { + this.messageProducer = messageProducer; } /** @@ -29,7 +29,7 @@ class SendMessageJob { .name("Zaphpod Beeblebrox") .build()) .build(); - messageProvider.sendUserCreatedMessage(userCreatedMessage); + messageProducer.produceUserCreatedMessage(userCreatedMessage); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/pact/pact-message-provider/src/main/java/io/reflectoring/User.java b/pact/pact-message-producer/src/main/java/io/reflectoring/User.java similarity index 100% rename from pact/pact-message-provider/src/main/java/io/reflectoring/User.java rename to pact/pact-message-producer/src/main/java/io/reflectoring/User.java diff --git a/pact/pact-message-provider/src/main/java/io/reflectoring/UserCreatedMessage.java b/pact/pact-message-producer/src/main/java/io/reflectoring/UserCreatedMessage.java similarity index 100% rename from pact/pact-message-provider/src/main/java/io/reflectoring/UserCreatedMessage.java rename to pact/pact-message-producer/src/main/java/io/reflectoring/UserCreatedMessage.java diff --git a/pact/pact-message-provider/src/test/java/io/reflectoring/CustomAmqpTarget.java b/pact/pact-message-producer/src/test/java/io/reflectoring/CustomAmqpTarget.java similarity index 80% rename from pact/pact-message-provider/src/test/java/io/reflectoring/CustomAmqpTarget.java rename to pact/pact-message-producer/src/test/java/io/reflectoring/CustomAmqpTarget.java index 33fee30..c68ac04 100644 --- a/pact/pact-message-provider/src/test/java/io/reflectoring/CustomAmqpTarget.java +++ b/pact/pact-message-producer/src/test/java/io/reflectoring/CustomAmqpTarget.java @@ -10,6 +10,12 @@ import au.com.dius.pact.provider.ProviderVerifier; import au.com.dius.pact.provider.junit.target.AmqpTarget; import org.jetbrains.annotations.NotNull; +/** + * Custom implementation of {@link AmqpTarget} since with {@link AmqpTarget} + * I had classpath troubles (see https://github.com/DiUS/pact-jvm/issues/763). + * Use at own risk, since the implementation is not complete and may behave + * a little different that the original class. + */ public class CustomAmqpTarget extends AmqpTarget { public CustomAmqpTarget(List packagesToScan) { diff --git a/pact/pact-message-provider/src/test/java/io/reflectoring/CustomProviderVerifier.java b/pact/pact-message-producer/src/test/java/io/reflectoring/CustomProviderVerifier.java similarity index 100% rename from pact/pact-message-provider/src/test/java/io/reflectoring/CustomProviderVerifier.java rename to pact/pact-message-producer/src/test/java/io/reflectoring/CustomProviderVerifier.java diff --git a/pact/pact-message-provider/src/test/java/io/reflectoring/UserCreatedMessageProviderTest.java b/pact/pact-message-producer/src/test/java/io/reflectoring/UserCreatedMessageProviderTest.java similarity index 75% rename from pact/pact-message-provider/src/test/java/io/reflectoring/UserCreatedMessageProviderTest.java rename to pact/pact-message-producer/src/test/java/io/reflectoring/UserCreatedMessageProviderTest.java index 9337837..4c6647e 100644 --- a/pact/pact-message-provider/src/test/java/io/reflectoring/UserCreatedMessageProviderTest.java +++ b/pact/pact-message-producer/src/test/java/io/reflectoring/UserCreatedMessageProviderTest.java @@ -8,16 +8,12 @@ import au.com.dius.pact.provider.PactVerifyProvider; import au.com.dius.pact.provider.junit.PactRunner; import au.com.dius.pact.provider.junit.Provider; import au.com.dius.pact.provider.junit.loader.PactFolder; -import au.com.dius.pact.provider.junit.target.AmqpTarget; import au.com.dius.pact.provider.junit.target.Target; import au.com.dius.pact.provider.junit.target.TestTarget; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; import static org.mockito.Mockito.*; @RunWith(PactRunner.class) @@ -28,9 +24,9 @@ public class UserCreatedMessageProviderTest { @TestTarget public final Target target = new CustomAmqpTarget(Collections.singletonList("io.reflectoring")); - private UserCreatedMessagePublisher publisher = Mockito.mock(UserCreatedMessagePublisher.class); + private MessagePublisher publisher = Mockito.mock(MessagePublisher.class); - private UserCreatedMessageProvider messageProvider = new UserCreatedMessageProvider(new ObjectMapper(), publisher); + private MessageProducer messageProducer = new MessageProducer(new ObjectMapper(), publisher); @PactVerifyProvider("a user created message") public String verifyUserCreatedMessage() throws IOException { @@ -45,7 +41,7 @@ public class UserCreatedMessageProviderTest { .name("Zaphod Beeblebrox") .build()) .build(); - messageProvider.sendUserCreatedMessage(message); + messageProducer.produceUserCreatedMessage(message); // then ArgumentCaptor messageCapture = ArgumentCaptor.forClass(String.class); diff --git a/pact/pact-message-provider/target/pacts/userclient-userservice.json b/pact/pact-message-producer/target/pacts/userclient-userservice.json similarity index 100% rename from pact/pact-message-provider/target/pacts/userclient-userservice.json rename to pact/pact-message-producer/target/pacts/userclient-userservice.json diff --git a/pact/pact-message-provider/src/main/java/io/reflectoring/UserCreatedMessageProvider.java b/pact/pact-message-provider/src/main/java/io/reflectoring/UserCreatedMessageProvider.java deleted file mode 100644 index 3dffdce..0000000 --- a/pact/pact-message-provider/src/main/java/io/reflectoring/UserCreatedMessageProvider.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.reflectoring; - -import java.io.IOException; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Takes a {@link UserCreatedMessage}, converts it to a {@link String} and sends it to be published. - */ -class UserCreatedMessageProvider { - - private Logger logger = LoggerFactory.getLogger(UserCreatedMessageProvider.class); - - private ObjectMapper objectMapper; - - private UserCreatedMessagePublisher userCreatedMessagePublisher; - - UserCreatedMessageProvider(ObjectMapper objectMapper, UserCreatedMessagePublisher userCreatedMessagePublisher) { - this.objectMapper = objectMapper; - this.userCreatedMessagePublisher = userCreatedMessagePublisher; - } - - void sendUserCreatedMessage(UserCreatedMessage message) throws IOException { - String stringMessage = objectMapper.writeValueAsString(message); - userCreatedMessagePublisher.publishMessage(stringMessage, "user.created"); - logger.info("Published message '{}'", stringMessage); - } - -} diff --git a/settings.gradle b/settings.gradle index c14a0f6..73a254d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -10,7 +10,7 @@ include 'spring-cloud:spring-cloud-contract-consumer' include 'pact:pact-spring-provider' include 'pact:pact-feign-consumer' include 'pact:pact-message-consumer' -include 'pact:pact-message-provider' +include 'pact:pact-message-producer' include 'spring-boot:rabbitmq-event-brokering'