Bumping versions
This commit is contained in:
@@ -40,8 +40,7 @@ public class AmqpMessagingApplication {
|
||||
|
||||
@Bean
|
||||
public MessageConverter messageConverter() {
|
||||
final Jackson2JsonMessageConverter jsonMessageConverter = new Jackson2JsonMessageConverter(
|
||||
new ObjectMapper());
|
||||
final Jackson2JsonMessageConverter jsonMessageConverter = new Jackson2JsonMessageConverter(new ObjectMapper());
|
||||
jsonMessageConverter.setCreateMessageIds(true);
|
||||
final ContentTypeDelegatingMessageConverter messageConverter = new ContentTypeDelegatingMessageConverter(
|
||||
jsonMessageConverter);
|
||||
@@ -50,8 +49,7 @@ public class AmqpMessagingApplication {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory,
|
||||
MessageConverter messageConverter) {
|
||||
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, MessageConverter messageConverter) {
|
||||
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
|
||||
rabbitTemplate.setMessageConverter(messageConverter);
|
||||
return rabbitTemplate;
|
||||
|
||||
@@ -39,8 +39,8 @@ import org.springframework.context.annotation.Configuration;
|
||||
class Issue178ListenerConfiguration {
|
||||
|
||||
@Bean
|
||||
SimpleMessageListenerContainer messageListenerContainer(
|
||||
ConnectionFactory connectionFactory, RabbitTemplate rabbitTemplate) {
|
||||
SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory,
|
||||
RabbitTemplate rabbitTemplate) {
|
||||
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
|
||||
container.setConnectionFactory(connectionFactory);
|
||||
container.addQueueNames("rated-item-service.rated-item-event.exchange");
|
||||
@@ -54,12 +54,10 @@ class Issue178ListenerConfiguration {
|
||||
public void onMessage(Message message) {
|
||||
System.out.println("received: " + message);
|
||||
try {
|
||||
String payload = new ObjectMapper().writeValueAsString(new MyPojo(
|
||||
"992e46d8-ab05-4a26-a740-6ef7b0daeab3", "CREATED"));
|
||||
Message outputMessage = MessageBuilder.withBody(payload.getBytes())
|
||||
.build();
|
||||
rabbitTemplate.send(issue178OutputExchange().getName(), "routingkey",
|
||||
outputMessage);
|
||||
String payload = new ObjectMapper()
|
||||
.writeValueAsString(new MyPojo("992e46d8-ab05-4a26-a740-6ef7b0daeab3", "CREATED"));
|
||||
Message outputMessage = MessageBuilder.withBody(payload.getBytes()).build();
|
||||
rabbitTemplate.send(issue178OutputExchange().getName(), "routingkey", outputMessage);
|
||||
}
|
||||
catch (JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
|
||||
@@ -61,22 +61,18 @@ public class RabbitManager {
|
||||
this.rabbitTemplate = rabbitTemplate;
|
||||
}
|
||||
|
||||
@RabbitListener(
|
||||
bindings = @QueueBinding(
|
||||
value = @Queue, exchange = @Exchange(value = "input",
|
||||
durable = "true", autoDelete = "false", type = "topic"),
|
||||
key = "event"))
|
||||
@RabbitListener(bindings = @QueueBinding(value = @Queue,
|
||||
exchange = @Exchange(value = "input", durable = "true", autoDelete = "false", type = "topic"),
|
||||
key = "event"))
|
||||
public void newBook(Book book, @Headers Map<String, String> headers) {
|
||||
LOG.info("Received new book with bookname = " + book.getName());
|
||||
LOG.info("Headers = " + headers);
|
||||
this.service.sendBook(book, headers.get("amqp_replyTo"));
|
||||
}
|
||||
|
||||
@RabbitListener(
|
||||
bindings = @QueueBinding(
|
||||
value = @Queue, exchange = @Exchange(value = "input",
|
||||
durable = "true", autoDelete = "false", type = "topic"),
|
||||
key = "event2"))
|
||||
@RabbitListener(bindings = @QueueBinding(value = @Queue,
|
||||
exchange = @Exchange(value = "input", durable = "true", autoDelete = "false", type = "topic"),
|
||||
key = "event2"))
|
||||
public void newBook2(Book book, @Headers Map<String, String> headers) {
|
||||
LOG.info("newBook2 Received new book with bookname = " + book.getName());
|
||||
LOG.info("newBook2 Headers = " + headers);
|
||||
|
||||
@@ -32,8 +32,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
public class BookRouteConfiguration {
|
||||
|
||||
@Bean
|
||||
ActiveMQComponent activeMQComponent(
|
||||
@Value("${activemq.url:vm://localhost?broker.persistent=false}") String url) {
|
||||
ActiveMQComponent activeMQComponent(@Value("${activemq.url:vm://localhost?broker.persistent=false}") String url) {
|
||||
ActiveMQComponent component = new ActiveMQComponent();
|
||||
component.setBrokerURL(url);
|
||||
return component;
|
||||
@@ -46,16 +45,13 @@ public class BookRouteConfiguration {
|
||||
@Override
|
||||
public void configure() throws Exception {
|
||||
// scenario 1 - from bean to output
|
||||
from("direct:start").unmarshal()
|
||||
.json(JsonLibrary.Jackson, BookReturned.class).bean(bookService)
|
||||
from("direct:start").unmarshal().json(JsonLibrary.Jackson, BookReturned.class).bean(bookService)
|
||||
.to("jms:output");
|
||||
// scenario 2 - from input to output
|
||||
from("jms:input").unmarshal()
|
||||
.json(JsonLibrary.Jackson, BookReturned.class).bean(bookService)
|
||||
from("jms:input").unmarshal().json(JsonLibrary.Jackson, BookReturned.class).bean(bookService)
|
||||
.to("jms:output");
|
||||
// scenario 3 - from input to no output
|
||||
from("jms:delete").unmarshal()
|
||||
.json(JsonLibrary.Jackson, BookDeleted.class).bean(bookDeleter);
|
||||
from("jms:delete").unmarshal().json(JsonLibrary.Jackson, BookDeleted.class).bean(bookDeleter);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -40,8 +40,7 @@ public class BookListener {
|
||||
*/
|
||||
public Message<BookReturned> returnBook(BookReturned bookReturned) {
|
||||
log.info("Returning book [" + bookReturned + "]");
|
||||
return MessageBuilder.withPayload(bookReturned)
|
||||
.setHeader("BOOK-NAME", bookReturned.bookName).build();
|
||||
return MessageBuilder.withPayload(bookReturned).setHeader("BOOK-NAME", bookReturned.bookName).build();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -43,8 +43,8 @@ public class BookService {
|
||||
*/
|
||||
public void returnBook(BookReturned bookReturned) {
|
||||
log.info("Returning book " + bookReturned);
|
||||
this.outputChannel.send(MessageBuilder.withPayload(bookReturned)
|
||||
.setHeader("BOOK-NAME", bookReturned.bookName).build());
|
||||
this.outputChannel
|
||||
.send(MessageBuilder.withPayload(bookReturned).setHeader("BOOK-NAME", bookReturned.bookName).build());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,8 +26,7 @@ import org.springframework.messaging.support.MessageBuilder;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component("bookReturned")
|
||||
public class BookReturnedListener
|
||||
implements Function<BookReturned, Message<BookReturned>> {
|
||||
public class BookReturnedListener implements Function<BookReturned, Message<BookReturned>> {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(BookReturnedListener.class);
|
||||
|
||||
@@ -40,8 +39,7 @@ public class BookReturnedListener
|
||||
@Override
|
||||
public Message<BookReturned> apply(BookReturned bookReturned) {
|
||||
log.info("Got the book " + bookReturned);
|
||||
return MessageBuilder.withPayload(bookReturned)
|
||||
.setHeader("BOOK-NAME", bookReturned.bookName).build();
|
||||
return MessageBuilder.withPayload(bookReturned).setHeader("BOOK-NAME", bookReturned.bookName).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,8 +34,7 @@ public class BookService implements Supplier<Flux<Message<BookReturned>>> {
|
||||
|
||||
private final EmitterProcessor<Message<BookReturned>> bookReturnedEmitterProcessor;
|
||||
|
||||
public BookService(
|
||||
EmitterProcessor<Message<BookReturned>> bookReturnedEmitterProcessor) {
|
||||
public BookService(EmitterProcessor<Message<BookReturned>> bookReturnedEmitterProcessor) {
|
||||
this.bookReturnedEmitterProcessor = bookReturnedEmitterProcessor;
|
||||
}
|
||||
|
||||
@@ -50,8 +49,8 @@ public class BookService implements Supplier<Flux<Message<BookReturned>>> {
|
||||
*/
|
||||
public void returnBook(BookReturned bookReturned) {
|
||||
log.info("Returning book " + bookReturned);
|
||||
this.bookReturnedEmitterProcessor.onNext(MessageBuilder.withPayload(bookReturned)
|
||||
.setHeader("BOOK-NAME", bookReturned.bookName).build());
|
||||
this.bookReturnedEmitterProcessor
|
||||
.onNext(MessageBuilder.withPayload(bookReturned).setHeader("BOOK-NAME", bookReturned.bookName).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -48,8 +48,7 @@ public class AmqpMessagingApplication {
|
||||
|
||||
@Bean
|
||||
public MessageConverter messageConverter(ObjectMapper objectMapper) {
|
||||
final Jackson2JsonMessageConverter jsonMessageConverter = new Jackson2JsonMessageConverter(
|
||||
objectMapper);
|
||||
final Jackson2JsonMessageConverter jsonMessageConverter = new Jackson2JsonMessageConverter(objectMapper);
|
||||
jsonMessageConverter.setCreateMessageIds(true);
|
||||
final ContentTypeDelegatingMessageConverter messageConverter = new ContentTypeDelegatingMessageConverter(
|
||||
jsonMessageConverter);
|
||||
@@ -58,8 +57,7 @@ public class AmqpMessagingApplication {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory,
|
||||
MessageConverter messageConverter) {
|
||||
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, MessageConverter messageConverter) {
|
||||
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
|
||||
rabbitTemplate.setMessageConverter(messageConverter);
|
||||
return rabbitTemplate;
|
||||
@@ -70,8 +68,8 @@ public class AmqpMessagingApplication {
|
||||
static class MessageListenerAdapterConfig {
|
||||
|
||||
@Bean
|
||||
public MessageListenerAdapter messageListenerAdapter(
|
||||
MessageSubscriber messageSubscriber, MessageConverter messageConverter) {
|
||||
public MessageListenerAdapter messageListenerAdapter(MessageSubscriber messageSubscriber,
|
||||
MessageConverter messageConverter) {
|
||||
return new MessageListenerAdapter(messageSubscriber, messageConverter);
|
||||
}
|
||||
|
||||
@@ -79,15 +77,14 @@ public class AmqpMessagingApplication {
|
||||
|
||||
@Bean
|
||||
public Binding binding() {
|
||||
return BindingBuilder.bind(new Queue("test.queue"))
|
||||
.to(new DirectExchange("contract-test.exchange")).with("#");
|
||||
return BindingBuilder.bind(new Queue("test.queue")).to(new DirectExchange("contract-test.exchange"))
|
||||
.with("#");
|
||||
}
|
||||
// end::amqp_binding[]
|
||||
|
||||
// tag::amqp_listener[]
|
||||
@Bean
|
||||
public SimpleMessageListenerContainer simpleMessageListenerContainer(
|
||||
ConnectionFactory connectionFactory,
|
||||
public SimpleMessageListenerContainer simpleMessageListenerContainer(ConnectionFactory connectionFactory,
|
||||
MessageListenerAdapter listenerAdapter) {
|
||||
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
|
||||
container.setConnectionFactory(connectionFactory);
|
||||
@@ -116,8 +113,8 @@ public class AmqpMessagingApplication {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(
|
||||
ConnectionFactory connectionFactory, MessageConverter messageConverter) {
|
||||
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory,
|
||||
MessageConverter messageConverter) {
|
||||
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
|
||||
factory.setConnectionFactory(connectionFactory);
|
||||
factory.setConcurrentConsumers(3);
|
||||
|
||||
@@ -32,8 +32,7 @@ public class MessageSubscriberRabbitListener {
|
||||
|
||||
// tag::amqp_annotated_listener[]
|
||||
@RabbitListener(bindings = @QueueBinding(value = @Queue("test.queue"),
|
||||
exchange = @Exchange(value = "contract-test.exchange",
|
||||
ignoreDeclarationExceptions = "true")))
|
||||
exchange = @Exchange(value = "contract-test.exchange", ignoreDeclarationExceptions = "true")))
|
||||
public void handlePerson(Person person) {
|
||||
this.person = person;
|
||||
}
|
||||
|
||||
@@ -51,22 +51,19 @@ public class LoanApplicationService {
|
||||
return buildResponseFromFraudResult(response);
|
||||
}
|
||||
|
||||
private FraudServiceResponse sendRequestToFraudDetectionService(
|
||||
FraudServiceRequest request) {
|
||||
private FraudServiceResponse sendRequestToFraudDetectionService(FraudServiceRequest request) {
|
||||
HttpHeaders httpHeaders = new HttpHeaders();
|
||||
httpHeaders.add(HttpHeaders.CONTENT_TYPE, FRAUD_SERVICE_JSON_VERSION_1);
|
||||
|
||||
// tag::client_call_server[]
|
||||
ResponseEntity<FraudServiceResponse> response = this.restTemplate.exchange(
|
||||
this.fraudUrl + "/fraudcheck", HttpMethod.PUT,
|
||||
new HttpEntity<>(request, httpHeaders), FraudServiceResponse.class);
|
||||
ResponseEntity<FraudServiceResponse> response = this.restTemplate.exchange(this.fraudUrl + "/fraudcheck",
|
||||
HttpMethod.PUT, new HttpEntity<>(request, httpHeaders), FraudServiceResponse.class);
|
||||
// end::client_call_server[]
|
||||
|
||||
return response.getBody();
|
||||
}
|
||||
|
||||
private LoanApplicationResult buildResponseFromFraudResult(
|
||||
FraudServiceResponse response) {
|
||||
private LoanApplicationResult buildResponseFromFraudResult(FraudServiceResponse response) {
|
||||
LoanApplicationStatus applicationStatus = null;
|
||||
if (FraudCheckStatus.OK == response.getFraudCheckStatus()) {
|
||||
applicationStatus = LoanApplicationStatus.LOAN_APPLIED;
|
||||
@@ -75,8 +72,7 @@ public class LoanApplicationService {
|
||||
applicationStatus = LoanApplicationStatus.LOAN_APPLICATION_REJECTED;
|
||||
}
|
||||
|
||||
return new LoanApplicationResult(applicationStatus,
|
||||
response.getRejectionReason());
|
||||
return new LoanApplicationResult(applicationStatus, response.getRejectionReason());
|
||||
}
|
||||
|
||||
public void setFraudUrl(String fraudUrl) {
|
||||
|
||||
@@ -25,8 +25,7 @@ public class LoanApplicationResult {
|
||||
public LoanApplicationResult() {
|
||||
}
|
||||
|
||||
public LoanApplicationResult(LoanApplicationStatus loanApplicationStatus,
|
||||
String rejectionReason) {
|
||||
public LoanApplicationResult(LoanApplicationStatus loanApplicationStatus, String rejectionReason) {
|
||||
this.loanApplicationStatus = loanApplicationStatus;
|
||||
this.rejectionReason = rejectionReason;
|
||||
}
|
||||
|
||||
@@ -35,10 +35,9 @@ public class FailFastLoanApplicationServiceTests {
|
||||
@Test
|
||||
public void shouldFailToStartContextWhenNoStubCanBeFound() {
|
||||
// When
|
||||
final Throwable throwable = catchThrowable(() -> new SpringApplicationBuilder(
|
||||
Application.class, StubRunnerConfiguration.class)
|
||||
.properties(ImmutableMap.of("stubrunner.stubsMode", "REMOTE",
|
||||
"stubrunner.repositoryRoot",
|
||||
final Throwable throwable = catchThrowable(
|
||||
() -> new SpringApplicationBuilder(Application.class, StubRunnerConfiguration.class)
|
||||
.properties(ImmutableMap.of("stubrunner.stubsMode", "REMOTE", "stubrunner.repositoryRoot",
|
||||
"classpath:m2repo/repository/", "stubrunner.ids",
|
||||
new String[] {
|
||||
"org.springframework.cloud.contract.verifier.stubs:should-not-be-found" }))
|
||||
@@ -46,26 +45,23 @@ public class FailFastLoanApplicationServiceTests {
|
||||
|
||||
// Then
|
||||
assertThat(throwable).isInstanceOf(BeanCreationException.class);
|
||||
assertThat(throwable.getCause().getCause())
|
||||
.isInstanceOf(BeanInstantiationException.class).hasMessageContaining(
|
||||
"No stubs or contracts were found for [org.springframework.cloud.contract.verifier.stubs:should-not-be-found:+:stubs] and the switch to fail on no stubs was set.");
|
||||
assertThat(throwable.getCause().getCause()).isInstanceOf(BeanInstantiationException.class).hasMessageContaining(
|
||||
"No stubs or contracts were found for [org.springframework.cloud.contract.verifier.stubs:should-not-be-found:+:stubs] and the switch to fail on no stubs was set.");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotTryAndWorkOfflineWhenRemoteModeIsOn() {
|
||||
// When
|
||||
final Throwable throwable = catchThrowable(() -> new SpringApplicationBuilder(
|
||||
Application.class, StubRunnerConfiguration.class)
|
||||
.properties(ImmutableMap.of("stubrunner.stubsMode", "CLASSPATH",
|
||||
"stubrunner.ids",
|
||||
final Throwable throwable = catchThrowable(
|
||||
() -> new SpringApplicationBuilder(Application.class, StubRunnerConfiguration.class)
|
||||
.properties(ImmutableMap.of("stubrunner.stubsMode", "CLASSPATH", "stubrunner.ids",
|
||||
new String[] {
|
||||
"org.springframework.cloud.contract.verifier.stubs:should-not-be-found" }))
|
||||
.run());
|
||||
|
||||
// Then
|
||||
assertThat(throwable).isInstanceOf(BeanCreationException.class);
|
||||
assertThat(throwable.getCause().getCause())
|
||||
.isInstanceOf(BeanInstantiationException.class)
|
||||
assertThat(throwable.getCause().getCause()).isInstanceOf(BeanInstantiationException.class)
|
||||
.hasMessageContaining("No stubs were found on classpath ");
|
||||
}
|
||||
|
||||
|
||||
@@ -39,8 +39,8 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
// tag::autoconfigure_stubrunner[]
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
|
||||
@AutoConfigureStubRunner(repositoryRoot = "classpath:m2repo/repository/", ids = {
|
||||
"org.springframework.cloud.contract.verifier.stubs:contextPathFraudDetectionServer" },
|
||||
@AutoConfigureStubRunner(repositoryRoot = "classpath:m2repo/repository/",
|
||||
ids = { "org.springframework.cloud.contract.verifier.stubs:contextPathFraudDetectionServer" },
|
||||
stubsMode = StubRunnerProperties.StubsMode.REMOTE)
|
||||
public class LoanApplicationServiceTests {
|
||||
|
||||
@@ -58,14 +58,13 @@ public class LoanApplicationServiceTests {
|
||||
@Before
|
||||
public void setPort() {
|
||||
this.service.setFraudUrl(
|
||||
this.stubFinder.findStubUrl("contextPathFraudDetectionServer").toString()
|
||||
+ "/fraud-path/");
|
||||
this.stubFinder.findStubUrl("contextPathFraudDetectionServer").toString() + "/fraud-path/");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldStartThisAppWithContextPath() {
|
||||
String response = new RestTemplate().getForObject(
|
||||
"http://localhost:" + this.port + "/my-path/foo", String.class);
|
||||
String response = new RestTemplate().getForObject("http://localhost:" + this.port + "/my-path/foo",
|
||||
String.class);
|
||||
|
||||
assertThat(response).isNotEmpty();
|
||||
}
|
||||
@@ -73,13 +72,11 @@ public class LoanApplicationServiceTests {
|
||||
@Test
|
||||
public void shouldSuccessfullyApplyForLoan() {
|
||||
// given:
|
||||
LoanApplication application = new LoanApplication(new Client("1234567890"),
|
||||
123.123);
|
||||
LoanApplication application = new LoanApplication(new Client("1234567890"), 123.123);
|
||||
// when:
|
||||
LoanApplicationResult loanApplication = this.service.loanApplication(application);
|
||||
// then:
|
||||
assertThat(loanApplication.getLoanApplicationStatus())
|
||||
.isEqualTo(LoanApplicationStatus.LOAN_APPLIED);
|
||||
assertThat(loanApplication.getLoanApplicationStatus()).isEqualTo(LoanApplicationStatus.LOAN_APPLIED);
|
||||
assertThat(loanApplication.getRejectionReason()).isNull();
|
||||
}
|
||||
|
||||
@@ -87,8 +84,7 @@ public class LoanApplicationServiceTests {
|
||||
@Test
|
||||
public void shouldBeRejectedDueToAbnormalLoanAmount() {
|
||||
// given:
|
||||
LoanApplication application = new LoanApplication(new Client("1234567890"),
|
||||
99999);
|
||||
LoanApplication application = new LoanApplication(new Client("1234567890"), 99999);
|
||||
// when:
|
||||
LoanApplicationResult loanApplication = this.service.loanApplication(application);
|
||||
// then:
|
||||
|
||||
Reference in New Issue
Block a user