This is an automated email from the ASF dual-hosted git repository. ffang pushed a commit to branch more-rest-test-new in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git
commit e1fdba4283579c5e739039380354fb5fba298de1 Author: Freeman Fang <freeman.f...@gmail.com> AuthorDate: Thu Jan 19 11:45:12 2023 -0500 add CxfRsAsyncProducerTest (cherry picked from commit d97ee6391e950395e59276fcefba7dbea09d351d) --- .../rest/springboot/CxfRsAsyncProducerTest.java | 640 +++++++++++++++++++++ .../springboot/CxfRsGlobalSslProducerTest.java | 13 +- .../rest/springboot/CxfRsProducerHeaderTest.java | 13 +- .../rest/springboot/CxfRsSslAsyncProducerTest.java | 13 +- .../cxf/rest/springboot/CxfRsSslProducerTest.java | 13 +- 5 files changed, 687 insertions(+), 5 deletions(-) diff --git a/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsAsyncProducerTest.java b/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsAsyncProducerTest.java new file mode 100644 index 00000000000..34b38c8b2c9 --- /dev/null +++ b/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsAsyncProducerTest.java @@ -0,0 +1,640 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.cxf.rest.springboot; + + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import javax.ws.rs.core.Response; + + +import org.apache.camel.CamelContext; +import org.apache.camel.Exchange; +import org.apache.camel.ExchangePattern; +import org.apache.camel.Message; +import org.apache.camel.Processor; +import org.apache.camel.ProducerTemplate; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.cxf.common.CXFTestSupport; +import org.apache.camel.component.cxf.common.CxfOperationException; +import org.apache.camel.component.cxf.common.message.CxfConstants; +import org.apache.camel.component.cxf.jaxrs.testbean.Customer; +import org.apache.camel.component.cxf.spring.jaxrs.SpringJAXRSClientFactoryBean; +import org.apache.camel.component.cxf.spring.jaxrs.SpringJAXRSServerFactoryBean; +import org.apache.camel.spring.boot.CamelAutoConfiguration; +import org.apache.camel.spring.xml.CamelEndpointFactoryBean; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory; +import org.springframework.boot.web.servlet.server.ServletWebServerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.apache.camel.test.spring.junit5.CamelSpringBootTest; +import org.apache.camel.util.CastUtils; +import org.apache.cxf.Bus; +import org.apache.cxf.endpoint.Client; +import org.apache.cxf.endpoint.Server; +import org.apache.cxf.feature.Feature; +import org.apache.cxf.interceptor.InterceptorProvider; +import org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean; +import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; +import org.apache.cxf.jaxrs.utils.ParameterizedCollectionType; +import org.apache.cxf.spring.boot.autoconfigure.CxfAutoConfiguration; + + + +@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@CamelSpringBootTest +@SpringBootTest( + classes = { + CamelAutoConfiguration.class, + CxfRsAsyncProducerTest.class, + CxfRsAsyncProducerTest.TestConfiguration.class, + CxfAutoConfiguration.class + }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT +) +public class CxfRsAsyncProducerTest { + + static int port1 = CXFTestSupport.getPort1(); + static int port2 = CXFTestSupport.getPort2(); + + private Server server; + + @Autowired + private ProducerTemplate template; + + @Autowired + private CamelContext context; + + + + @BeforeEach + public void setUp() throws Exception { + JAXRSServerFactoryBean sfb = new SpringJAXRSServerFactoryBean(); + List<Object> serviceBeans = new ArrayList<Object>(); + serviceBeans.add(new org.apache.camel.component.cxf.jaxrs.testbean.CustomerService()); + sfb.setServiceBeans(serviceBeans); + sfb.setAddress("/CxfRsAsyncProducerTest/"); + sfb.setStaticSubresourceResolution(true); + server = sfb.create(); + server.start(); + } + + @AfterEach + public void shutdown() throws Exception { + if (server != null) { + server.stop(); + server.destroy(); + } + } + + //@Test + public void testGetCustomerWithClientProxyAPI() { + // START SNIPPET: ProxyExample + Exchange exchange = template.send("direct://proxy", new Processor() { + public void process(Exchange exchange) throws Exception { + exchange.setPattern(ExchangePattern.InOut); + Message inMessage = exchange.getIn(); + // set the operation name + inMessage.setHeader(CxfConstants.OPERATION_NAME, "getCustomer"); + // using the proxy client API + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, Boolean.FALSE); + // set a customer header + inMessage.setHeader("key", "value"); + // set the parameters , if you just have one parameter + // camel will put this object into an Object[] itself + inMessage.setBody("123"); + } + }); + + // get the response message + Customer response = (Customer) exchange.getMessage().getBody(); + + assertNotNull(response, "The response should not be null"); + assertEquals(123, response.getId(), "Get a wrong customer id"); + assertEquals("John", response.getName(), "Get a wrong customer name"); + assertEquals(200, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong response code"); + assertEquals("value", exchange.getMessage().getHeader("key"), "Get a wrong header value"); + // END SNIPPET: ProxyExample + } + + //@Test + public void testGetCustomersWithClientProxyAPI() { + Exchange exchange = template.send("direct://proxy", newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message inMessage = newExchange.getIn(); + // set the operation name + inMessage.setHeader(CxfConstants.OPERATION_NAME, "getCustomers"); + // using the proxy client API + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, Boolean.FALSE); + // camel will put this object into an Object[] itself + inMessage.setBody(null); + }); + + // get the response message + List<Customer> response = CastUtils.cast((List<?>) exchange.getMessage().getBody()); + + assertNotNull(response, "The response should not be null"); + assertTrue(response.contains(new Customer(113, "Dan")), "Dan is missing!"); + assertTrue(response.contains(new Customer(123, "John")), "John is missing!"); + assertEquals(200, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong response code"); + } + + //@Test + public void testGetCustomersWithHttpCentralClientAPI() { + Exchange exchange = template.send("direct://proxy", newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message inMessage = newExchange.getIn(); + // set the Http method + inMessage.setHeader(Exchange.HTTP_METHOD, "GET"); + // set the relative path + inMessage.setHeader(Exchange.HTTP_PATH, "/customerservice/customers/"); + // using the proxy client API + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, Boolean.TRUE); + // set the headers + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, List.class); + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_GENERIC_TYPE, + new ParameterizedCollectionType(Customer.class)); + // camel will put this object into an Object[] itself + inMessage.setBody(null); + }); + + // get the response message + List<Customer> response = CastUtils.cast((List<?>) exchange.getMessage().getBody()); + + assertNotNull(response, "The response should not be null"); + assertTrue(response.contains(new Customer(113, "Dan")), "Dan is missing!"); + assertTrue(response.contains(new Customer(123, "John")), "John is missing!"); + assertEquals(200, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong response code"); + } + + @Test + public void testGetCustomerWithHttpCentralClientAPI() { + Exchange exchange = template.send("direct://http", newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message inMessage = newExchange.getIn(); + // using the http central client API + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, Boolean.TRUE); + // set the Http method + inMessage.setHeader(Exchange.HTTP_METHOD, "GET"); + // set the relative path + inMessage.setHeader(Exchange.HTTP_PATH, "/customerservice/customers/123"); + // Specify the response class , cxfrs will use InputStream as the response object type + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, Customer.class); + // set a customer header + inMessage.setHeader("key", "value"); + // since we use the Get method, so we don't need to set the message body + inMessage.setBody(null); + }); + + // get the response message + Customer response = (Customer) exchange.getMessage().getBody(); + + assertNotNull(response, "The response should not be null"); + assertEquals(123, response.getId(), "Get a wrong customer id"); + assertEquals("John", response.getName(), "Get a wrong customer name"); + assertEquals(200, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong response code"); + assertEquals("value", exchange.getMessage().getHeader("key"), "Get a wrong header value"); + } + + @Test + public void testSuppressGetCustomerExceptionWithCxfRsEndpoint() { + Exchange exchange + = template.send("cxfrs://http://localhost:" + port1 + "/services/" + getClass().getSimpleName() + + "/?httpClientAPI=true&throwExceptionOnFailure=false", + newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message message = newExchange.getIn(); + // set the Http method + message.setHeader(Exchange.HTTP_METHOD, "PUT"); + // set the relative path + message.setHeader(Exchange.HTTP_PATH, "/customerservice/customers"); + // we just setup the customer with a wrong id + Customer customer = new Customer(); + customer.setId(222); + customer.setName("user"); + message.setBody(customer); + }); + + // we should get the exception here + assertNull(exchange.getException(), "Don't expect the exception here"); + Message result = exchange.getMessage(); + assertEquals(406, result.getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong http status code."); + + } + + @Test + public void testGetCustomerExceptionWithCxfRsEndpoint() { + Exchange exchange + = template.send( + "cxfrs://http://localhost:" + port1 + "/services/" + getClass().getSimpleName() + "/?httpClientAPI=true", + newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message message = newExchange.getIn(); + // set the Http method + message.setHeader(Exchange.HTTP_METHOD, "PUT"); + // set the relative path + message.setHeader(Exchange.HTTP_PATH, "/customerservice/customers"); + // we just setup the customer with a wrong id + Customer customer = new Customer(); + customer.setId(222); + customer.setName("user"); + message.setBody(customer); + }); + + // we should get the exception here + assertNotNull(exchange.getException(), "Expect the exception here"); + CxfOperationException exception = (CxfOperationException) exchange.getException(); + + assertEquals("Cannot find the customer!", exception.getResponseBody(), "Get a wrong response body"); + + } + + @Test + public void testGetCustomerWithCxfRsEndpoint() { + Exchange exchange + = template.send( + "cxfrs://http://localhost:" + port1 + "/services/" + getClass().getSimpleName() + "/?httpClientAPI=true", + newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message inMessage = newExchange.getIn(); + // set the Http method + inMessage.setHeader(Exchange.HTTP_METHOD, "GET"); + // set the relative path + inMessage.setHeader(Exchange.HTTP_PATH, "/customerservice/customers/123"); + // Specify the response class , cxfrs will use InputStream as the response object type + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, Customer.class); + // since we use the Get method, so we don't need to set the message body + inMessage.setBody(null); + }); + + // get the response message + Customer response = (Customer) exchange.getMessage().getBody(); + assertNotNull(response, "The response should not be null"); + assertEquals(123, response.getId(), "Get a wrong customer id"); + assertEquals("John", response.getName(), "Get a wrong customer name"); + assertEquals(200, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong response code"); + } + + @Test + public void testGetCustomerWithVariableReplacementAndCxfRsEndpoint() { + Exchange exchange = template.send( + "cxfrs://http://localhost:" + port1 + "/services/" + getClass().getSimpleName() + "/?httpClientAPI=true", + newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message inMessage = newExchange.getIn(); + // set the Http method + inMessage.setHeader(Exchange.HTTP_METHOD, "GET"); + // set the relative path + inMessage.setHeader(Exchange.HTTP_PATH, "/customerservice/customers/{customerId}"); + // Set variables for replacement + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_VAR_VALUES, new String[] { "123" }); + // Specify the response class , cxfrs will use InputStream as the response object type + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, Customer.class); + // since we use the Get method, so we don't need to set the message body + inMessage.setBody(null); + }); + + // get the response message + Customer response = (Customer) exchange.getMessage().getBody(); + assertNotNull(response, "The response should not be null"); + assertEquals(123, response.getId(), "Get a wrong customer id"); + assertEquals("John", response.getName(), "Get a wrong customer name"); + assertEquals(200, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong response code"); + } + + @Test + public void testAddCustomerUniqueResponseCodeWithHttpClientAPI() { + Exchange exchange + = template.send( + "cxfrs://http://localhost:" + port1 + "/services/" + getClass().getSimpleName() + "?httpClientAPI=true", + newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message inMessage = newExchange.getIn(); + // set the Http method + inMessage.setHeader(Exchange.HTTP_METHOD, "POST"); + // set the relative path + inMessage.setHeader(Exchange.HTTP_PATH, "/customerservice/customersUniqueResponseCode"); + // create a new customer object + Customer customer = new Customer(); + customer.setId(9999); + customer.setName("HttpClient"); + inMessage.setBody(customer); + }); + + // get the response message + Response response = (Response) exchange.getMessage().getBody(); + assertNotNull(response, "The response should not be null"); + assertNotNull(response.getEntity(), "The response entity should not be null"); + // check the response code + assertEquals(201, response.getStatus(), "Get a wrong response code"); + // check the response code from message header + assertEquals(201, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong response code"); + } + + //@Test + public void testAddCustomerUniqueResponseCodeWithProxyAPI() { + Exchange exchange = template.send("direct://proxy", new Processor() { + public void process(Exchange exchange) throws Exception { + exchange.setPattern(ExchangePattern.InOut); + Message inMessage = exchange.getIn(); + // set the operation name + inMessage.setHeader(CxfConstants.OPERATION_NAME, "addCustomerUniqueResponseCode"); + // using the proxy client API + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, Boolean.FALSE); + // set the parameters , if you just have one parameter + // camel will put this object into an Object[] itself + Customer customer = new Customer(); + customer.setId(8888); + customer.setName("ProxyAPI"); + inMessage.setBody(customer); + } + }); + + // get the response message + Response response = (Response) exchange.getMessage().getBody(); + assertNotNull(response, "The response should not be null"); + assertNotNull(response.getEntity(), "The response entity should not be null"); + // check the response code + assertEquals(201, response.getStatus(), "Get a wrong response code"); + // check the response code from message header + assertEquals(201, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong response code"); + } + + @Test + public void testAddCustomerUniqueResponseCode() { + Exchange exchange + = template.send( + "cxfrs://http://localhost:" + port1 + "/services/" + getClass().getSimpleName() + "?httpClientAPI=true", + new Processor() { + public void process(Exchange exchange) throws Exception { + exchange.setPattern(ExchangePattern.InOut); + Message inMessage = exchange.getIn(); + // set the Http method + inMessage.setHeader(Exchange.HTTP_METHOD, "POST"); + // set the relative path + inMessage.setHeader(Exchange.HTTP_PATH, "/customerservice/customersUniqueResponseCode"); + // put the response's entity into out message body + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, Customer.class); + // create a new customer object + Customer customer = new Customer(); + customer.setId(8888); + customer.setName("Willem"); + inMessage.setBody(customer); + } + }); + + // get the response message + Customer response = (Customer) exchange.getMessage().getBody(); + assertNotNull(response, "The response should not be null"); + assertNotEquals(8888, response.getId(), "Get a wrong customer id"); + assertEquals("Willem", response.getName(), "Get a wrong customer name"); + assertEquals(201, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong response code"); + } + + @Test + public void testProducerWithQueryParameters() { + Exchange exchange = template.send("cxfrs://http://localhost:" + port2 + "/" + getClass().getSimpleName() + + "/testQuery?httpClientAPI=true&q1=12&q2=13", + newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message inMessage = newExchange.getIn(); + // set the Http method + inMessage.setHeader(Exchange.HTTP_METHOD, "GET"); + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, InputStream.class); + inMessage.setBody(null); + }); + + // get the response message + String response = exchange.getMessage().getBody(String.class); + assertNotNull(response, "The response should not be null"); + assertEquals("q1=12&q2=13", response, "The response value is wrong"); + } + + @Test + public void testProducerWithQueryParametersHeader() { + Exchange exchange = template.send("cxfrs://http://localhost:" + port2 + "/" + getClass().getSimpleName() + + "/testQuery?httpClientAPI=true&q1=12&q2=13", + newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message inMessage = newExchange.getIn(); + // set the Http method + inMessage.setHeader(Exchange.HTTP_METHOD, "GET"); + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, InputStream.class); + // override the parameter setting from URI + // START SNIPPET: QueryMapExample + Map<String, String> queryMap = new LinkedHashMap<>(); + queryMap.put("q1", "new"); + queryMap.put("q2", "world"); + inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_QUERY_MAP, queryMap); + // END SNIPPET: QueryMapExample + inMessage.setBody(null); + }); + + // get the response message + String response = exchange.getMessage().getBody(String.class); + assertNotNull(response, "The response should not be null"); + assertEquals("q1=new&q2=world", response, "The response value is wrong"); + } + + @Test + public void testRestServerDirectlyGetCustomer() { + // we cannot convert directly to Customer as we need camel-jaxb + String response = template.requestBodyAndHeader( + "cxfrs:http://localhost:" + port1 + "/services/" + getClass().getSimpleName() + "/customerservice/customers/123", + null, Exchange.HTTP_METHOD, "GET", String.class); + + assertNotNull(response, "The response should not be null"); + } + + @Test + public void testRestServerDirectlyAddCustomer() { + Customer input = new Customer(); + input.setName("Donald Duck"); + + // we cannot convert directly to Customer as we need camel-jaxb + String response = template.requestBodyAndHeader( + "cxfrs:http://localhost:" + port1 + "/services/" + getClass().getSimpleName() + "/customerservice/customers", + input, Exchange.HTTP_METHOD, "POST", String.class); + + assertNotNull(response); + assertTrue(response.endsWith("<name>Donald Duck</name></Customer>")); + } + + + + + @Test + public void testProducerWithFeature() { + TestFeature feature = context.getRegistry().lookupByNameAndType("testFeature", TestFeature.class); + + template.requestBodyAndHeader("cxfrs:http://localhost:" + port1 + "/services/" + getClass().getSimpleName() + + "/customerservice/customers/123?features=#myFeatures", + null, Exchange.HTTP_METHOD, "GET", String.class); + + assertTrue(feature.initialized, "The feature should be initialized"); + } + + @Test + public void testProducer422Response() { + Exchange exchange = template.send( + "cxfrs://http://localhost:" + port1 + "/services/" + getClass().getSimpleName() + "/?httpClientAPI=true", + newExchange -> { + newExchange.setPattern(ExchangePattern.InOut); + Message message = newExchange.getIn(); + // Try to create a new Customer with an invalid name + message.setHeader(Exchange.HTTP_METHOD, "POST"); + message.setHeader(Exchange.HTTP_PATH, "/customerservice/customers"); + Customer customer = new Customer(); + customer.setId(8888); + customer.setName(""); // will trigger a 422 response (a common REST server validation response code) + message.setBody(customer); + }); + + assertNotNull(exchange.getException(), "Expect the exception here"); + assertTrue(exchange.getException() instanceof CxfOperationException, "Exception should be a CxfOperationException"); + + CxfOperationException cxfOperationException = CxfOperationException.class.cast(exchange.getException()); + + assertEquals(422, cxfOperationException.getStatusCode(), "CXF operation exception has correct response code"); + } + + class TestFeature implements Feature { + boolean initialized; + + @Override + public void initialize(InterceptorProvider interceptorProvider, Bus bus) { + initialized = true; + } + + @Override + public void initialize(Client client, Bus bus) { + //Do nothing + } + + @Override + public void initialize(Server server, Bus bus) { + //Do nothing + } + + @Override + public void initialize(Bus bus) { + //Do nothing + } + } + + class JettyProcessor implements Processor { + @Override + public void process(Exchange exchange) throws Exception { + // check the query + Message inMessage = exchange.getIn(); + exchange.getMessage().setBody(inMessage.getHeader(Exchange.HTTP_QUERY, String.class)); + } + } + + // ************************************* + // Config + // ************************************* + + @Configuration + public class TestConfiguration { + + + @Bean + public ServletWebServerFactory servletWebServerFactory() { + return new UndertowServletWebServerFactory(port1); + } + + + @Bean + public CamelEndpointFactoryBean fromEndpoint() { + CamelEndpointFactoryBean jettyConsumer = new CamelEndpointFactoryBean(); + jettyConsumer.setUri("jetty://http://localhost:" + port2 + "/CxfRsAsyncProducerTest/testQuery"); + return jettyConsumer; + } + + @Bean + public Processor myProcessor() { + return new JettyProcessor(); + } + + /*@Bean + public AbstractJAXRSFactoryBean rsClientProxy() { + SpringJAXRSClientFactoryBean afb = new SpringJAXRSClientFactoryBean(); + //afb.setBus(BusFactory.getDefaultBus()); + afb.setAddress("http://localhost:" + port1 + + "/services/CxfRsAsyncProducerTest/"); + //afb.setServiceClass somehow cause conflict with other test, should be bus conflict + afb.setServiceClass(org.apache.camel.component.cxf.jaxrs.testbean.CustomerService.class); + afb.setLoggingFeatureEnabled(true); + + return afb; + }*/ + + @Bean + public AbstractJAXRSFactoryBean rsClientHttp() { + SpringJAXRSClientFactoryBean afb = new SpringJAXRSClientFactoryBean(); + afb.setAddress("http://localhost:" + port1 + + "/services/CxfRsAsyncProducerTest/"); + return afb; + } + + + + @Bean + public Feature testFeature() { + return new TestFeature(); + } + + @Bean + public List<Feature> myFeatures(Feature testFeature) { + List<Feature> features = new ArrayList<Feature>(); + features.add(testFeature); + return features; + } + + @Bean + public RouteBuilder routeBuilder() { + return new RouteBuilder() { + @Override + public void configure() { + //from("direct://proxy").to("cxfrs:bean:rsClientProxy"); + from("direct://http").to("cxfrs:bean:rsClientHttp"); + from("ref:fromEndpoint").process("myProcessor"); + } + }; + } + } + +} diff --git a/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsGlobalSslProducerTest.java b/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsGlobalSslProducerTest.java index 3a0e4ff6c04..54f253566ab 100644 --- a/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsGlobalSslProducerTest.java +++ b/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsGlobalSslProducerTest.java @@ -40,6 +40,7 @@ import org.apache.camel.support.jsse.KeyStoreParameters; import org.apache.camel.support.jsse.SSLContextParameters; import org.apache.camel.support.jsse.TrustManagersParameters; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -85,6 +86,8 @@ public class CxfRsGlobalSslProducerTest { @Autowired protected ProducerTemplate template; + private Server server; + @BeforeEach public void setUp() throws Exception { JAXRSServerFactoryBean sfb = new JAXRSServerFactoryBean(); @@ -93,9 +96,17 @@ public class CxfRsGlobalSslProducerTest { sfb.setServiceBeans(serviceBeans); sfb.setAddress("/CxfRsProducerTest/"); sfb.setStaticSubresourceResolution(true); - Server server = sfb.create(); + server = sfb.create(); server.start(); } + + @AfterEach + public void shutdown() throws Exception { + if (server != null) { + server.stop(); + server.destroy(); + } + } protected void setupDestinationURL(Message inMessage) { diff --git a/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsProducerHeaderTest.java b/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsProducerHeaderTest.java index 47bcf5063c2..347aa19624e 100644 --- a/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsProducerHeaderTest.java +++ b/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsProducerHeaderTest.java @@ -36,6 +36,7 @@ import org.apache.camel.component.cxf.util.CxfUtils; import org.apache.camel.spring.boot.CamelAutoConfiguration; import org.apache.camel.spring.xml.CamelEndpointFactoryBean; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -79,6 +80,8 @@ public class CxfRsProducerHeaderTest { @Autowired protected CamelContext camelContext; + private Server server; + @BeforeEach public void setUp() throws Exception { JAXRSServerFactoryBean sfb = new JAXRSServerFactoryBean(); @@ -87,11 +90,17 @@ public class CxfRsProducerHeaderTest { sfb.setServiceBeans(serviceBeans); sfb.setAddress("/CxfRsProducerHeaderTest/"); sfb.setStaticSubresourceResolution(true); - Server server = sfb.create(); + server = sfb.create(); server.start(); } - + @AfterEach + public void shutdown() throws Exception { + if (server != null) { + server.stop(); + server.destroy(); + } + } @Test public void testInvokeThatDoesNotInvolveHeaders() throws Exception { diff --git a/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsSslAsyncProducerTest.java b/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsSslAsyncProducerTest.java index dbcf0247d2c..a92d59c7b48 100644 --- a/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsSslAsyncProducerTest.java +++ b/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsSslAsyncProducerTest.java @@ -39,6 +39,7 @@ import org.apache.camel.support.jsse.KeyStoreParameters; import org.apache.camel.support.jsse.SSLContextParameters; import org.apache.camel.support.jsse.TrustManagersParameters; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -84,6 +85,8 @@ public class CxfRsSslAsyncProducerTest { @Autowired protected ProducerTemplate template; + private Server server; + @BeforeEach public void setUp() throws Exception { JAXRSServerFactoryBean sfb = new JAXRSServerFactoryBean(); @@ -92,9 +95,17 @@ public class CxfRsSslAsyncProducerTest { sfb.setServiceBeans(serviceBeans); sfb.setAddress("/CxfRsProducerTest/"); sfb.setStaticSubresourceResolution(true); - Server server = sfb.create(); + server = sfb.create(); server.start(); } + + @AfterEach + public void shutdown() throws Exception { + if (server != null) { + server.stop(); + server.destroy(); + } + } protected void setupDestinationURL(Message inMessage) { diff --git a/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsSslProducerTest.java b/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsSslProducerTest.java index ecd97ec46d9..38bed0e8eed 100644 --- a/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsSslProducerTest.java +++ b/components-starter/camel-cxf-rest-starter/src/test/java/org/apache/camel/component/cxf/rest/springboot/CxfRsSslProducerTest.java @@ -39,6 +39,7 @@ import org.apache.camel.support.jsse.KeyStoreParameters; import org.apache.camel.support.jsse.SSLContextParameters; import org.apache.camel.support.jsse.TrustManagersParameters; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -84,6 +85,8 @@ public class CxfRsSslProducerTest { @Autowired protected ProducerTemplate template; + private Server server; + @BeforeEach public void setUp() throws Exception { JAXRSServerFactoryBean sfb = new JAXRSServerFactoryBean(); @@ -92,9 +95,17 @@ public class CxfRsSslProducerTest { sfb.setServiceBeans(serviceBeans); sfb.setAddress("/CxfRsProducerTest/"); sfb.setStaticSubresourceResolution(true); - Server server = sfb.create(); + server = sfb.create(); server.start(); } + + @AfterEach + public void shutdown() throws Exception { + if (server != null) { + server.stop(); + server.destroy(); + } + } protected void setupDestinationURL(Message inMessage) {