BAEL-5237 - Apache Camel Conditional Routing (#12675)
* BAEL-4706 - Spring Boot with Spring Batch * BAEL-3948 - Fix test(s) in spring-batch which leaves repository.sqlite changed * BAEL-4736 - Convert JSONArray to List of Object using camel-jackson * BAEL-4756 - Mockito MockSettings * BAEL-4756 - Mockito MockSettings - fix spelling * BAEL-2674 - Upgrade the Okhttp article * BAEL-4204 - Adding Interceptors in OkHTTP * BAEL-4836 - Mocking Static Methods with Mockito * BAEL-4205 - A Guide to Events in OkHTTP * BAEL-5408 - Update Camel version in spring-boot-camel module * BAEL-5234 - Apache Camel Routes Testing in Spring Boot * BAEL-5234 - Apache Camel Routes Testing in Spring Boot * BAEL-5237 - Apache Camel Conditional Routing Co-authored-by: Jonathan Cook <jcook@sciops.esa.int>
This commit is contained in:
parent
8a79e04d39
commit
cd9f1cce2e
@ -0,0 +1,23 @@
|
|||||||
|
package com.baeldung.camel.conditional;
|
||||||
|
|
||||||
|
import org.apache.camel.builder.RouteBuilder;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class ConditionalBeanRouter extends RouteBuilder {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void configure() throws Exception {
|
||||||
|
|
||||||
|
from("direct:start-conditional-bean")
|
||||||
|
.routeId("conditional-bean-route")
|
||||||
|
.choice()
|
||||||
|
.when(method(FruitBean.class, "isApple"))
|
||||||
|
.setHeader("favourite", simple("Apples"))
|
||||||
|
.to("mock:result")
|
||||||
|
.otherwise()
|
||||||
|
.setHeader("favourite", header("fruit"))
|
||||||
|
.to("mock:result")
|
||||||
|
.end();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.baeldung.camel.conditional;
|
||||||
|
|
||||||
|
import org.apache.camel.builder.RouteBuilder;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class ConditionalBodyRouter extends RouteBuilder {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void configure() throws Exception {
|
||||||
|
|
||||||
|
from("direct:start-conditional")
|
||||||
|
.routeId("conditional-body-route")
|
||||||
|
.choice()
|
||||||
|
.when(body().contains("Baeldung"))
|
||||||
|
.setBody(simple("Goodbye, Baeldung!"))
|
||||||
|
.to("mock:result-body")
|
||||||
|
.otherwise()
|
||||||
|
.to("mock:result-body")
|
||||||
|
.end();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.baeldung.camel.conditional;
|
||||||
|
|
||||||
|
import org.apache.camel.builder.RouteBuilder;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class ConditionalHeaderRouter extends RouteBuilder {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void configure() throws Exception {
|
||||||
|
|
||||||
|
from("direct:start-conditional-header")
|
||||||
|
.routeId("conditional-header-route")
|
||||||
|
.choice()
|
||||||
|
.when(header("fruit").isEqualTo("Apple"))
|
||||||
|
.setHeader("favourite", simple("Apples"))
|
||||||
|
.to("mock:result")
|
||||||
|
.otherwise()
|
||||||
|
.setHeader("favourite", header("fruit"))
|
||||||
|
.to("mock:result")
|
||||||
|
.end();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.baeldung.camel.conditional;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class ConditionalRoutingSpringApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(ConditionalRoutingSpringApplication.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.baeldung.camel.conditional;
|
||||||
|
|
||||||
|
import org.apache.camel.Exchange;
|
||||||
|
|
||||||
|
public class FruitBean {
|
||||||
|
|
||||||
|
private FruitBean() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isApple(Exchange exchange) {
|
||||||
|
return "Apple".equals(exchange.getIn()
|
||||||
|
.getHeader("fruit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.baeldung.camel.conditional;
|
||||||
|
|
||||||
|
import org.apache.camel.EndpointInject;
|
||||||
|
import org.apache.camel.ProducerTemplate;
|
||||||
|
import org.apache.camel.component.mock.MockEndpoint;
|
||||||
|
import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@CamelSpringBootTest
|
||||||
|
class ConditionalBeanRouterUnitTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProducerTemplate template;
|
||||||
|
|
||||||
|
@EndpointInject("mock:result")
|
||||||
|
private MockEndpoint mock;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void whenSendBodyWithFruit_thenFavouriteHeaderReceivedSuccessfully() throws InterruptedException {
|
||||||
|
mock.expectedHeaderReceived("favourite", "Apples");
|
||||||
|
|
||||||
|
template.sendBodyAndHeader("direct:start-conditional-bean", null, "fruit", "Apple");
|
||||||
|
|
||||||
|
mock.assertIsSatisfied();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.baeldung.camel.conditional;
|
||||||
|
|
||||||
|
import org.apache.camel.EndpointInject;
|
||||||
|
import org.apache.camel.ProducerTemplate;
|
||||||
|
import org.apache.camel.component.mock.MockEndpoint;
|
||||||
|
import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@CamelSpringBootTest
|
||||||
|
class ConditionalBodyRouterUnitTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProducerTemplate template;
|
||||||
|
|
||||||
|
@EndpointInject("mock:result-body")
|
||||||
|
private MockEndpoint mock;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void whenSendBodyWithBaeldung_thenGoodbyeMessageReceivedSuccessfully() throws InterruptedException {
|
||||||
|
mock.expectedBodiesReceived("Goodbye, Baeldung!");
|
||||||
|
|
||||||
|
template.sendBody("direct:start-conditional", "Hello Baeldung Readers!");
|
||||||
|
|
||||||
|
mock.assertIsSatisfied();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.baeldung.camel.conditional;
|
||||||
|
|
||||||
|
import org.apache.camel.EndpointInject;
|
||||||
|
import org.apache.camel.ProducerTemplate;
|
||||||
|
import org.apache.camel.component.mock.MockEndpoint;
|
||||||
|
import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@CamelSpringBootTest
|
||||||
|
class ConditionalHeaderRouterUnitTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProducerTemplate template;
|
||||||
|
|
||||||
|
@EndpointInject("mock:result")
|
||||||
|
private MockEndpoint mock;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void whenSendBodyWithFruit_thenFavouriteHeaderReceivedSuccessfully() throws InterruptedException {
|
||||||
|
mock.expectedHeaderReceived("favourite", "Banana");
|
||||||
|
|
||||||
|
template.sendBodyAndHeader("direct:start-conditional-header", null, "fruit", "Banana");
|
||||||
|
|
||||||
|
mock.assertIsSatisfied();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user