This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git
The following commit(s) were added to refs/heads/main by this push:
new 8b5ec9bdc5f CAMEL-19177: camel-platform-http - Spring Boot
implementation that use directly the HTTP server (#793)
8b5ec9bdc5f is described below
commit 8b5ec9bdc5f8da04e130d516800d5897f79e3098
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Mar 22 08:55:18 2023 +0100
CAMEL-19177: camel-platform-http - Spring Boot implementation that use
directly the HTTP server (#793)
---
.../camel-platform-http-starter/pom.xml | 5 +-
.../springboot/CamelRequestHandlerMapping.java | 113 ++++++++++++++++
.../http/springboot/PlatformHttpMessage.java | 107 +++++++++++++++
.../http/springboot/ServletPlatformHttpEngine.java | 48 -------
...> SpringBootPlatformHttpAutoConfiguration.java} | 38 +++---
.../springboot/SpringBootPlatformHttpBinding.java | 50 +++++++
.../SpringBootPlatformHttpConstants.java} | 12 +-
.../springboot/SpringBootPlatformHttpConsumer.java | 143 ++++++++++++++++++++
.../springboot/SpringBootPlatformHttpEngine.java} | 8 +-
...rk.boot.autoconfigure.AutoConfiguration.imports | 2 +-
.../JettyCustomPlatformHttpConsumer.java | 130 ------------------
.../platform/http/springboot/JettyServerTest.java | 53 --------
...PlatformHttpBase.java => PlatformHttpBase.java} | 6 +-
.../platform/http/springboot/PlatformHttpTest.java | 145 ---------------------
...stPlatformHttpContextPathConfigurationTest.java | 130 ------------------
...java => SpringBootPlatformHttpRestDSLTest.java} | 19 ++-
...tpTest.java => SpringBootPlatformHttpTest.java} | 17 +--
17 files changed, 461 insertions(+), 565 deletions(-)
diff --git a/components-starter/camel-platform-http-starter/pom.xml
b/components-starter/camel-platform-http-starter/pom.xml
index 418f26d4a46..79127a611eb 100644
--- a/components-starter/camel-platform-http-starter/pom.xml
+++ b/components-starter/camel-platform-http-starter/pom.xml
@@ -40,15 +40,14 @@
<version>${camel-version}</version>
</dependency>
<dependency>
- <groupId>org.apache.camel.springboot</groupId>
- <artifactId>camel-servlet-starter</artifactId>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-http-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot-version}</version>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
diff --git
a/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/CamelRequestHandlerMapping.java
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/CamelRequestHandlerMapping.java
new file mode 100644
index 00000000000..7d6bb54adc4
--- /dev/null
+++
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/CamelRequestHandlerMapping.java
@@ -0,0 +1,113 @@
+/*
+ * 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.platform.http.springboot;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.apache.camel.component.platform.http.HttpEndpointModel;
+import org.apache.camel.component.platform.http.PlatformHttpComponent;
+import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
+import org.apache.camel.component.platform.http.PlatformHttpListener;
+import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
+import org.apache.camel.util.ReflectionHelper;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
+import
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
+import org.springframework.web.util.ServletRequestPathUtils;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class CamelRequestHandlerMapping extends RequestMappingHandlerMapping
implements PlatformHttpListener {
+
+ private final PlatformHttpComponent component;
+ private final PlatformHttpEngine engine;
+ private final Map<String, RequestMappingInfo> mappings = new HashMap<>();
+
+ public CamelRequestHandlerMapping(PlatformHttpComponent component,
PlatformHttpEngine engine) {
+ this.component = component;
+ this.engine = engine;
+ this.component.addPlatformHttpListener(this);
+ }
+
+ @Override
+ public int getOrder() {
+ return -1;
+ }
+
+ @Override
+ protected String[] getCandidateBeanNames() {
+ // no candidates
+ return new String[]{};
+ }
+
+ @Override
+ protected boolean isHandler(Class<?> beanType) {
+ return false;
+ }
+
+ @Override
+ protected RequestMappingInfo getMappingForMethod(Method method, Class<?>
handlerType) {
+ // not in use as we do not use class scanning but Camel platform-http
component
+ return null;
+ }
+
+ @Override
+ protected HandlerMethod getHandlerInternal(HttpServletRequest request)
throws Exception {
+ ServletRequestPathUtils.parseAndCache(request);
+ return super.getHandlerInternal(request);
+ }
+
+ @Override
+ public void registerHttpEndpoint(HttpEndpointModel model) {
+ RequestMappingInfo info = asRequestMappingInfo(model);
+ Method m =
ReflectionHelper.findMethod(SpringBootPlatformHttpConsumer.class, "service",
HttpServletRequest.class, HttpServletResponse.class);
+ registerMapping(info, model.getConsumer(), m);
+ }
+
+ @Override
+ public void unregisterHttpEndpoint(HttpEndpointModel model) {
+ // noop
+ }
+
+ private RequestMappingInfo asRequestMappingInfo(HttpEndpointModel model) {
+ // allowed methods from model or endpoint
+ List<RequestMethod> methods = new ArrayList<>();
+ String verbs = model.getVerbs();
+ if (verbs == null && model.getConsumer() != null) {
+ PlatformHttpEndpoint endpoint = (PlatformHttpEndpoint)
model.getConsumer().getEndpoint();
+ verbs = endpoint.getHttpMethodRestrict();
+ }
+ if (verbs != null) {
+ for (String v : model.getVerbs().split(",")) {
+ RequestMethod rm = RequestMethod.resolve(v);
+ methods.add(rm);
+ }
+ }
+
+ RequestMappingInfo info = RequestMappingInfo
+ .paths(model.getUri())
+ .methods(methods.toArray(new RequestMethod[0]))
+ .options(this.getBuilderConfiguration()).build();
+ return info;
+ }
+
+}
diff --git
a/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/PlatformHttpMessage.java
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/PlatformHttpMessage.java
new file mode 100644
index 00000000000..5818a70cad1
--- /dev/null
+++
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/PlatformHttpMessage.java
@@ -0,0 +1,107 @@
+/*
+ * 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.platform.http.springboot;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.apache.camel.Exchange;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.http.common.HttpBinding;
+import org.apache.camel.support.DefaultMessage;
+import org.apache.camel.util.ObjectHelper;
+
+import java.io.IOException;
+
+public class PlatformHttpMessage extends DefaultMessage {
+
+ private HttpServletRequest request;
+ private HttpServletResponse response;
+ private HttpBinding binding;
+ private boolean requestRead;
+
+ public PlatformHttpMessage(Exchange exchange, HttpBinding binding,
HttpServletRequest request, HttpServletResponse response) {
+ super(exchange);
+ this.init(exchange, binding, request, response);
+ }
+
+ private PlatformHttpMessage(HttpServletRequest request,
HttpServletResponse response, Exchange exchange, HttpBinding binding, boolean
requestRead) {
+ super(exchange);
+ this.request = request;
+ this.response = response;
+ this.binding = binding;
+ this.requestRead = requestRead;
+ }
+
+ public void init(Exchange exchange, HttpBinding binding,
HttpServletRequest request, HttpServletResponse response) {
+ this.setExchange(exchange);
+ this.requestRead = false;
+ this.binding = binding;
+ this.request = request;
+ this.response = response;
+ this.setHeader("CamelHttpServletRequest", request);
+ this.setHeader("CamelHttpServletResponse", response);
+ Boolean flag =
(Boolean)exchange.getProperty("CamelSkipWwwFormUrlEncoding", Boolean.class);
+ if (flag != null && flag) {
+ this.setHeader("CamelSkipWwwFormUrlEncoding", Boolean.TRUE);
+ }
+
+ binding.readRequest(request, this);
+ }
+
+ public void reset() {
+ super.reset();
+ this.request = null;
+ this.response = null;
+ this.binding = null;
+ this.requestRead = false;
+ }
+
+ public HttpServletRequest getRequest() {
+ return this.request;
+ }
+
+ public HttpServletResponse getResponse() {
+ return this.response;
+ }
+
+ protected Object createBody() {
+ if (this.requestRead) {
+ return null;
+ } else {
+ Object body;
+ try {
+ body = this.binding.parseBody(request, this);
+ } catch (IOException var5) {
+ throw new RuntimeCamelException(var5);
+ } finally {
+ this.requestRead = true;
+ }
+
+ return body;
+ }
+ }
+
+ public PlatformHttpMessage newInstance() {
+ return new PlatformHttpMessage(this.request, this.response,
this.getExchange(), this.binding, this.requestRead);
+ }
+
+ public String toString() {
+ return "PlatformHttpMessage@" + ObjectHelper.getIdentityHashCode(this);
+ }
+
+
+}
diff --git
a/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpEngine.java
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpEngine.java
deleted file mode 100644
index db53b753e6f..00000000000
---
a/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpEngine.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.platform.http.springboot;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
-import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
-import org.apache.camel.component.servlet.ServletComponent;
-import org.apache.camel.component.servlet.ServletConsumer;
-import org.apache.camel.component.servlet.ServletEndpoint;
-
-public class ServletPlatformHttpEngine implements PlatformHttpEngine {
-
- private final ServletComponent servletComponent;
-
- public ServletPlatformHttpEngine(ServletComponent servletComponent) {
- this.servletComponent = servletComponent;
- }
-
- @Override
- public Consumer createConsumer(PlatformHttpEndpoint
platformHttpEndpoint, Processor processor) {
- try {
- return new ServletConsumer((ServletEndpoint)
servletComponent.createEndpoint(platformHttpEndpoint.getEndpointUri()),
processor);
- } catch (Exception e) {
- throw new IllegalArgumentException("The following
endpoint uri " + platformHttpEndpoint.getEndpointUri() + " is not supported",
e);
- }
- }
-
- @Override
- public int getServerPort() {
- return PlatformHttpEngine.super.getServerPort();
- }
-}
diff --git
a/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpAutoConfiguration.java
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpAutoConfiguration.java
similarity index 57%
rename from
components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpAutoConfiguration.java
rename to
components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpAutoConfiguration.java
index 7d28d3ccd38..7db3c4b4525 100644
---
a/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpAutoConfiguration.java
+++
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpAutoConfiguration.java
@@ -17,34 +17,36 @@
package org.apache.camel.component.platform.http.springboot;
import org.apache.camel.CamelContext;
+import org.apache.camel.component.platform.http.PlatformHttpComponent;
import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
-import org.apache.camel.component.servlet.ServletComponent;
-
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
-import org.springframework.context.annotation.Lazy;
@Configuration(proxyBeanMethods = false)
@AutoConfigureAfter(name = {
-
"org.apache.camel.component.servlet.springboot.ServletComponentAutoConfiguration",
-
"org.apache.camel.component.servlet.springboot.ServletComponentConverter"})
-public class ServletPlatformHttpAutoConfiguration {
+
"org.apache.camel.component.servlet.springboot.PlatformHttpComponentAutoConfiguration",
+
"org.apache.camel.component.servlet.springboot.PlatformHttpComponentConverter"})
+public class SpringBootPlatformHttpAutoConfiguration {
+
+ @Autowired
+ CamelContext camelContext;
- private final CamelContext camelContext;
+ @Bean(name = "platform-http-engine")
+ @ConditionalOnMissingBean(PlatformHttpEngine.class)
+ public PlatformHttpEngine springBootPlatformHttpEngine() {
+ return new SpringBootPlatformHttpEngine();
+ }
- public ServletPlatformHttpAutoConfiguration(
- CamelContext camelContext) {
- this.camelContext = camelContext;
- }
+ @Bean
+ @DependsOn("configurePlatformHttpComponent")
+ public CamelRequestHandlerMapping
platformHttpEngineRequestMapping(PlatformHttpEngine engine) {
+ PlatformHttpComponent component =
camelContext.getComponent("platform-http", PlatformHttpComponent.class);
+ CamelRequestHandlerMapping answer = new
CamelRequestHandlerMapping(component, engine);
+ return answer;
+ }
- @Lazy
- @Bean(name = "platform-http-engine")
- @ConditionalOnMissingBean(PlatformHttpEngine.class)
- @DependsOn("configureServletComponent")
- public PlatformHttpEngine servletPlatformHttpEngine() {
- return new
ServletPlatformHttpEngine(camelContext.getComponent("servlet",
ServletComponent.class));
- }
}
diff --git
a/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpBinding.java
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpBinding.java
new file mode 100644
index 00000000000..4ff0fee0c58
--- /dev/null
+++
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpBinding.java
@@ -0,0 +1,50 @@
+/*
+ * 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.platform.http.springboot;
+
+import jakarta.servlet.http.HttpServletRequest;
+import org.apache.camel.Message;
+import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
+import org.apache.camel.http.base.HttpHelper;
+import org.apache.camel.http.common.DefaultHttpBinding;
+
+public class SpringBootPlatformHttpBinding extends DefaultHttpBinding {
+
+ protected void populateRequestParameters(HttpServletRequest request,
Message message) {
+ super.populateRequestParameters(request, message);
+ String path = request.getRequestURI();
+ // skip leading slash
+ if (path != null && path.startsWith("/")) {
+ path = path.substring(1);
+ }
+ if (path != null) {
+ PlatformHttpEndpoint endpoint = (PlatformHttpEndpoint)
message.getExchange().getFromEndpoint();
+ String consumerPath = endpoint.getPath();
+ if (consumerPath != null && consumerPath.startsWith("/")) {
+ consumerPath = consumerPath.substring(1);
+ }
+ if (useRestMatching(consumerPath)) {
+ HttpHelper.evalPlaceholders(message.getHeaders(), path,
consumerPath);
+ }
+ }
+ }
+
+ private boolean useRestMatching(String path) {
+ return path.indexOf('{') > -1;
+ }
+
+}
diff --git
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyCustomPlatformHttpEngine.java
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpConstants.java
similarity index 64%
copy from
components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyCustomPlatformHttpEngine.java
copy to
components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpConstants.java
index fcf83dec539..ec06d4e4975 100644
---
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyCustomPlatformHttpEngine.java
+++
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpConstants.java
@@ -16,16 +16,10 @@
*/
package org.apache.camel.component.platform.http.springboot;
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
-import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
+public final class SpringBootPlatformHttpConstants {
+ public static final String CONTEXT_PATH = "CamelPlatformHttpContextPath";
-public class JettyCustomPlatformHttpEngine implements PlatformHttpEngine {
-
- @Override
- public Consumer createConsumer(PlatformHttpEndpoint platformHttpEndpoint,
Processor processor) {
- return new JettyCustomPlatformHttpConsumer(platformHttpEndpoint,
processor);
+ private SpringBootPlatformHttpConstants() {
}
}
diff --git
a/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpConsumer.java
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpConsumer.java
new file mode 100644
index 00000000000..438a917b6ae
--- /dev/null
+++
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpConsumer.java
@@ -0,0 +1,143 @@
+/*
+ * 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.platform.http.springboot;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.Processor;
+import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
+import org.apache.camel.http.common.DefaultHttpBinding;
+import org.apache.camel.http.common.HttpHelper;
+import org.apache.camel.support.DefaultConsumer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+public class SpringBootPlatformHttpConsumer extends DefaultConsumer {
+
+ private static final Logger LOG =
LoggerFactory.getLogger(SpringBootPlatformHttpConsumer.class);
+
+ private final DefaultHttpBinding binding;
+
+ public SpringBootPlatformHttpConsumer(PlatformHttpEndpoint endpoint,
Processor processor) {
+ super(endpoint, processor);
+ this.binding = new SpringBootPlatformHttpBinding();
+
this.binding.setHeaderFilterStrategy(endpoint.getHeaderFilterStrategy());
+ this.binding.setMuteException(endpoint.isMuteException());
+
this.binding.setFileNameExtWhitelist(endpoint.getFileNameExtWhitelist());
+ }
+
+ @Override
+ public PlatformHttpEndpoint getEndpoint() {
+ return (PlatformHttpEndpoint) super.getEndpoint();
+ }
+
+
+ /**
+ * This method is invoked by Spring Boot when invoking Camel via
platform-http
+ */
+ public void service(HttpServletRequest request, HttpServletResponse
response) {
+ LOG.trace("Service: {}", request);
+ try {
+ handleService(request, response);
+ } catch (Exception e) {
+ // do not leak exception back to caller
+ LOG.warn("Error handling request due to: " + e.getMessage(), e);
+ try {
+ if (!response.isCommitted()) {
+
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+ } catch (Exception e1) {
+ // ignore
+ }
+ }
+ }
+
+ protected void handleService(HttpServletRequest request,
HttpServletResponse response) throws Exception {
+ if (isSuspended()) {
+ LOG.debug("Consumer suspended, cannot service request: {}",
request);
+ response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
+ return;
+ }
+
+ Exchange exchange = createExchange(true);
+ exchange.setPattern(ExchangePattern.InOut);
+ HttpHelper.setCharsetFromContentType(request.getContentType(),
exchange);
+ exchange.setIn(new PlatformHttpMessage(exchange, binding, request,
response));
+ String contextPath = getEndpoint().getPath();
+
exchange.getIn().setHeader(SpringBootPlatformHttpConstants.CONTEXT_PATH,
contextPath);
+ // set context path as header
+ String httpPath = (String)
exchange.getIn().getHeader(Exchange.HTTP_PATH);
+ // here we just remove the CamelServletContextPath part from the
HTTP_PATH
+ if (contextPath != null
+ && httpPath.startsWith(contextPath)) {
+ exchange.getIn().setHeader(Exchange.HTTP_PATH,
+ httpPath.substring(contextPath.length()));
+ }
+
+ // TODO: async with CompletionStage returned to spring boot?
+
+ // we want to handle the UoW
+ try {
+ createUoW(exchange);
+ } catch (Exception e) {
+ throw new ServletException(e);
+ }
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Processing request for exchangeId: {}",
exchange.getExchangeId());
+ }
+ try {
+ getProcessor().process(exchange);
+ } catch (Exception e) {
+ exchange.setException(e);
+ } finally {
+ afterProcess(response, exchange, true);
+ }
+ }
+
+ protected void afterProcess(HttpServletResponse response, Exchange
exchange, boolean rethrow) throws IOException, ServletException {
+ try {
+ // now lets output to the res
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Writing res for exchangeId: {}",
exchange.getExchangeId());
+ }
+ binding.writeResponse(exchange, response);
+ } catch (IOException e) {
+ LOG.error("Error processing request", e);
+ if (rethrow) {
+ throw e;
+ } else {
+ exchange.setException(e);
+ }
+ } catch (Exception e) {
+ LOG.error("Error processing request", e);
+ if (rethrow) {
+ throw new ServletException(e);
+ } else {
+ exchange.setException(e);
+ }
+ } finally {
+ doneUoW(exchange);
+ releaseExchange(exchange, false);
+ }
+ }
+
+}
diff --git
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyCustomPlatformHttpEngine.java
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpEngine.java
similarity index 80%
rename from
components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyCustomPlatformHttpEngine.java
rename to
components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpEngine.java
index fcf83dec539..5e589367509 100644
---
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyCustomPlatformHttpEngine.java
+++
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpEngine.java
@@ -21,11 +21,11 @@ import org.apache.camel.Processor;
import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
-
-public class JettyCustomPlatformHttpEngine implements PlatformHttpEngine {
+public class SpringBootPlatformHttpEngine implements PlatformHttpEngine {
@Override
- public Consumer createConsumer(PlatformHttpEndpoint platformHttpEndpoint,
Processor processor) {
- return new JettyCustomPlatformHttpConsumer(platformHttpEndpoint,
processor);
+ public Consumer createConsumer(PlatformHttpEndpoint endpoint, Processor
processor) {
+ return new SpringBootPlatformHttpConsumer(endpoint, processor);
}
+
}
diff --git
a/components-starter/camel-platform-http-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
b/components-starter/camel-platform-http-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index d4b90821e4f..aaf4d4e5306 100644
---
a/components-starter/camel-platform-http-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++
b/components-starter/camel-platform-http-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -17,4 +17,4 @@
org.apache.camel.component.platform.http.springboot.PlatformHttpComponentConverter
org.apache.camel.component.platform.http.springboot.PlatformHttpComponentAutoConfiguration
-org.apache.camel.component.platform.http.springboot.ServletPlatformHttpAutoConfiguration
\ No newline at end of file
+org.apache.camel.component.platform.http.springboot.SpringBootPlatformHttpAutoConfiguration
\ No newline at end of file
diff --git
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyCustomPlatformHttpConsumer.java
b/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyCustomPlatformHttpConsumer.java
deleted file mode 100644
index 1e03b932ae4..00000000000
---
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyCustomPlatformHttpConsumer.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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.platform.http.springboot;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.util.regex.Pattern;
-
-import jakarta.servlet.ServletException;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
-import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.support.DefaultConsumer;
-import org.apache.camel.support.DefaultMessage;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.eclipse.jetty.server.handler.ContextHandler;
-
-public class JettyCustomPlatformHttpConsumer extends DefaultConsumer {
- private static final Pattern PATH_PARAMETER_PATTERN =
Pattern.compile("\\{([^/}]+)\\}");
-
- public JettyCustomPlatformHttpConsumer(PlatformHttpEndpoint endpoint,
Processor processor) {
- super(endpoint, processor);
- }
-
- @Override
- protected void doStart() throws Exception {
- super.doStart();
- final PlatformHttpEndpoint endpoint = getEndpoint();
- final String path = configureEndpointPath(endpoint);
-
- JettyServerTest jettyServerTest = CamelContextHelper.mandatoryLookup(
- getEndpoint().getCamelContext(),
- JettyServerTest.JETTY_SERVER_NAME,
- JettyServerTest.class);
-
- ContextHandler contextHandler = createHandler(endpoint, path);
- // add handler after starting server.
- jettyServerTest.addHandler(contextHandler);
-
- }
-
- private ContextHandler createHandler(PlatformHttpEndpoint endpoint, String
path) {
- ContextHandler contextHandler = new ContextHandler();
- contextHandler.setContextPath(path);
- contextHandler.setResourceBase(".");
-
contextHandler.setClassLoader(Thread.currentThread().getContextClassLoader());
- contextHandler.setAllowNullPathInfo(true);
- contextHandler.setHandler(new AbstractHandler() {
- @Override
- public void handle(
- String s, Request request, HttpServletRequest
httpServletRequest, HttpServletResponse httpServletResponse)
- throws IOException, ServletException {
- Exchange exchg = null;
- try {
- BufferedReader reader = httpServletRequest.getReader();
- String bodyRequest = "";
- String strCurrentLine = "";
- while ((strCurrentLine = reader.readLine()) != null) {
- bodyRequest += strCurrentLine;
- }
- final Exchange exchange = exchg = toExchange(request,
bodyRequest);
- createUoW(exchange);
- getProcessor().process(
- exchange);
- httpServletResponse.setStatus(HttpServletResponse.SC_OK);
- request.setHandled(true);
-
httpServletResponse.getWriter().println(exchange.getMessage().getBody());
- } catch (Exception e) {
- getExceptionHandler().handleException("Failed handling
platform-http endpoint " + endpoint.getPath(), exchg,
- e);
- } finally {
- if (exchg != null) {
- doneUoW(exchg);
- }
- }
- }
- });
- return contextHandler;
- }
-
- private Exchange toExchange(Request request, String body) {
- final Exchange exchange = getEndpoint().createExchange();
- final Message message = new DefaultMessage(exchange);
-
- final String charset = request.getHeader("charset");
- if (charset != null) {
- exchange.setProperty(Exchange.CHARSET_NAME, charset);
- message.setHeader(Exchange.HTTP_CHARACTER_ENCODING, charset);
- }
-
- message.setBody(body.length() != 0 ? body : null);
- exchange.setMessage(message);
- return exchange;
- }
-
- @Override
- public PlatformHttpEndpoint getEndpoint() {
- return (PlatformHttpEndpoint) super.getEndpoint();
- }
-
- private String configureEndpointPath(PlatformHttpEndpoint endpoint) {
- String path = endpoint.getPath();
- if (endpoint.isMatchOnUriPrefix()) {
- path += "*";
- }
- // Transform from the Camel path param syntax /path/{key} to vert.x
web's /path/:key
- return PATH_PARAMETER_PATTERN.matcher(path).replaceAll(":$1");
- }
-
-}
diff --git
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyServerTest.java
b/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyServerTest.java
deleted file mode 100644
index 3b0c7ab1f0e..00000000000
---
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/JettyServerTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.platform.http.springboot;
-
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.ContextHandler;
-import org.eclipse.jetty.server.handler.HandlerCollection;
-
-public class JettyServerTest {
- public static final String JETTY_SERVER_NAME = "JettyServerTest";
-
- private Server server;
- private HandlerCollection contextHandlerCollection;
-
- public JettyServerTest(int port) {
- server = new Server(port);
- contextHandlerCollection = new HandlerCollection(true);
- server.setHandler(contextHandlerCollection);
- }
-
- public void start() throws Exception {
- server.start();
- }
-
- public void stop() throws Exception {
- server.stop();
- }
-
- /**
- * adds a context handler and starts it
- *
- * @param contextHandler
- * @throws Exception
- */
- public void addHandler(ContextHandler contextHandler) throws Exception {
- contextHandlerCollection.addHandler(contextHandler);
- contextHandler.start();
- }
-}
diff --git
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpBase.java
b/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/PlatformHttpBase.java
similarity index 86%
rename from
components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpBase.java
rename to
components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/PlatformHttpBase.java
index d9a01c865f2..37d4ade9f7f 100644
---
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpBase.java
+++
b/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/PlatformHttpBase.java
@@ -22,7 +22,7 @@ import org.assertj.core.api.Assertions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.web.client.TestRestTemplate;
-public class ServletPlatformHttpBase {
+public class PlatformHttpBase {
@Autowired
private TestRestTemplate restTemplate;
@@ -30,14 +30,14 @@ public class ServletPlatformHttpBase {
@Test
public void testGet() {
Assertions.assertThat(
-
restTemplate.getForEntity("/camel/get", String.class).getStatusCodeValue())
+
restTemplate.getForEntity("/myget", String.class).getStatusCodeValue())
.isEqualTo(200);
}
@Test
public void testPost() {
Assertions.assertThat(
-
restTemplate.postForEntity("/camel/post", "test", String.class).getBody())
+
restTemplate.postForEntity("/mypost", "test", String.class).getBody())
.isEqualTo("TEST");
}
}
diff --git
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/PlatformHttpTest.java
b/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/PlatformHttpTest.java
deleted file mode 100644
index 4a60d9e75b1..00000000000
---
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/PlatformHttpTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * 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.platform.http.springboot;
-
-
-import static io.restassured.RestAssured.given;
-
-import java.util.Iterator;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.platform.http.HttpEndpointModel;
-import org.apache.camel.component.platform.http.PlatformHttpComponent;
-import org.apache.camel.component.platform.http.PlatformHttpConstants;
-import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import org.apache.camel.spring.boot.CamelContextConfiguration;
-
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import io.restassured.RestAssured;
-import io.restassured.response.Response;
-import io.restassured.specification.RequestSpecification;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.test.annotation.DirtiesContext;
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
-
-
-@DirtiesContext
-@CamelSpringBootTest
-@SpringBootTest(
- classes = {
- CamelAutoConfiguration.class,
- PlatformHttpTest.class,
- PlatformHttpTest.TestConfiguration.class
- }
-)
-public class PlatformHttpTest {
-
- static int port = AvailablePortFinder.getNextAvailable();
-
- @Autowired
- private CamelContext context;
-
-
-
-
- @Bean
- CamelContextConfiguration contextConfiguration() {
- return new CamelContextConfiguration() {
- @Override
- public void beforeApplicationStart(CamelContext context) {
-
context.getRegistry().bind(PlatformHttpConstants.PLATFORM_HTTP_ENGINE_FACTORY,
new JettyCustomPlatformHttpEngine());
-
-
- JettyServerTest server = new JettyServerTest(port);
-
- context.getRegistry().bind(JettyServerTest.JETTY_SERVER_NAME,
server);
- try {
- server.start();
- } catch (Exception e) {
-
- e.printStackTrace();
- }
-
- }
- @Override
- public void afterApplicationStart(CamelContext camelContext) {
- //do nothing here
- }
-
- };
- }
-
- @Test
- public void testGet() throws Exception {
- given()
- .header("Accept", "application/json")
- .port(port)
- .expect()
- .statusCode(200)
- .when()
- .get("/get");
- }
-
- @Test
- public void testPost() {
- RequestSpecification request = RestAssured.given();
- request.port(port);
- request.body("test");
- Response response = request.get("/post");
-
- int statusCode = response.getStatusCode();
- assertEquals(200, statusCode);
- assertEquals("TEST", response.body().asString().trim());
-
- PlatformHttpComponent phc = context.getComponent("platform-http",
PlatformHttpComponent.class);
- assertEquals(2, phc.getHttpEndpoints().size());
- Iterator<HttpEndpointModel> it = phc.getHttpEndpoints().iterator();
- assertEquals("/get", it.next().getUri());
- assertEquals("/post", it.next().getUri());
- }
-
-
- // *************************************
- // Config
- // *************************************
-
- @Configuration
- public static class TestConfiguration {
-
- @Bean
- public RouteBuilder routeBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- from("platform-http:/get")
- .setBody().constant("get");
- from("platform-http:/post")
- .transform().body(String.class, b ->
b.toUpperCase());
- }
- };
- }
- }
-}
diff --git
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/RestPlatformHttpContextPathConfigurationTest.java
b/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/RestPlatformHttpContextPathConfigurationTest.java
deleted file mode 100644
index aa717a5d736..00000000000
---
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/RestPlatformHttpContextPathConfigurationTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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.platform.http.springboot;
-
-
-import static org.hamcrest.CoreMatchers.containsString;
-
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.platform.http.PlatformHttpConstants;
-import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import org.apache.camel.spring.boot.CamelContextConfiguration;
-
-import org.junit.jupiter.api.Test;
-
-
-import io.restassured.RestAssured;
-
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.test.annotation.DirtiesContext;
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
-
-
-@DirtiesContext
-@CamelSpringBootTest
-@SpringBootTest(
- classes = {
- CamelAutoConfiguration.class,
- RestPlatformHttpContextPathConfigurationTest.class,
- RestPlatformHttpContextPathConfigurationTest.TestConfiguration.class
- }
-)
-public class RestPlatformHttpContextPathConfigurationTest {
-
- static int port = AvailablePortFinder.getNextAvailable();
-
-
- @Bean
- CamelContextConfiguration contextConfiguration() {
- return new CamelContextConfiguration() {
- @Override
- public void beforeApplicationStart(CamelContext context) {
-
context.getRegistry().bind(PlatformHttpConstants.PLATFORM_HTTP_ENGINE_FACTORY,
new JettyCustomPlatformHttpEngine());
-
-
- JettyServerTest server = new JettyServerTest(port);
-
- context.getRegistry().bind(JettyServerTest.JETTY_SERVER_NAME,
server);
- try {
- server.start();
- } catch (Exception e) {
-
- e.printStackTrace();
- }
-
- }
- @Override
- public void afterApplicationStart(CamelContext camelContext) {
- //do nothing here
- }
-
- };
- }
-
- @Test
- public void contextPath() {
- RestAssured.given()
- .port(port)
- .get("/rest/get")
- .then()
- .body(containsString("GET: /get"));
-
- RestAssured.given()
- .port(port)
- .contentType("text/plain")
- .post("/rest/post")
- .then()
- .body(containsString("POST: /post"));
- }
-
-
-
- // *************************************
- // Config
- // *************************************
-
- @Configuration
- public static class TestConfiguration {
-
- @Bean
- public RouteBuilder routeBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- restConfiguration()
- .component("platform-http")
- .contextPath("/rest");
-
- rest()
- .get("/get").to("direct:get")
-
.post("/post").consumes("text/plain").produces("text/plain").to("direct:post");
-
- from("direct:get")
- .setBody(constant("GET: /get"));
- from("direct:post")
- .setBody(constant("POST: /post"));
-
- }
- };
- }
- }
-}
diff --git
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpRestDSLTest.java
b/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpRestDSLTest.java
similarity index 75%
rename from
components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpRestDSLTest.java
rename to
components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpRestDSLTest.java
index 95ee308ad17..2ac77b14542 100644
---
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpRestDSLTest.java
+++
b/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpRestDSLTest.java
@@ -17,8 +17,6 @@
package org.apache.camel.component.platform.http.springboot;
import org.apache.camel.builder.RouteBuilder;
-import
org.apache.camel.component.servlet.springboot.ServletComponentAutoConfiguration;
-import
org.apache.camel.component.servlet.springboot.ServletMappingAutoConfiguration;
import org.apache.camel.spring.boot.CamelAutoConfiguration;
import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
@@ -35,14 +33,13 @@ import org.springframework.test.annotation.DirtiesContext;
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
classes = {
CamelAutoConfiguration.class,
- ServletPlatformHttpRestDSLTest.class,
-
ServletPlatformHttpRestDSLTest.TestConfiguration.class,
- ServletPlatformHttpAutoConfiguration.class,
- ServletComponentAutoConfiguration.class,
- ServletMappingAutoConfiguration.class
+ SpringBootPlatformHttpRestDSLTest.class,
+
SpringBootPlatformHttpRestDSLTest.TestConfiguration.class,
+ PlatformHttpComponentAutoConfiguration.class,
+ SpringBootPlatformHttpAutoConfiguration.class,
}
)
-public class ServletPlatformHttpRestDSLTest extends ServletPlatformHttpBase {
+public class SpringBootPlatformHttpRestDSLTest extends PlatformHttpBase {
// *************************************
// Config
@@ -51,13 +48,13 @@ public class ServletPlatformHttpRestDSLTest extends
ServletPlatformHttpBase {
public static class TestConfiguration {
@Bean
- public RouteBuilder servletPlatformHttpRestDSLRouteBuilder() {
+ public RouteBuilder springBootPlatformHttpRestDSLRouteBuilder()
{
return new RouteBuilder() {
@Override
public void configure() throws Exception {
rest()
-
.get("get").to("direct:get")
-
.post("post").to("direct:post");
+
.get("myget").to("direct:get")
+
.post("mypost").to("direct:post");
from("direct:post").transform().body(String.class, b -> b.toUpperCase());
from("direct:get").setBody().constant("get");
diff --git
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpTest.java
b/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpTest.java
similarity index 78%
rename from
components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpTest.java
rename to
components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpTest.java
index 9af1c965eb7..f88438529c2 100644
---
a/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/ServletPlatformHttpTest.java
+++
b/components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpTest.java
@@ -17,8 +17,6 @@
package org.apache.camel.component.platform.http.springboot;
import org.apache.camel.builder.RouteBuilder;
-import
org.apache.camel.component.servlet.springboot.ServletComponentAutoConfiguration;
-import
org.apache.camel.component.servlet.springboot.ServletMappingAutoConfiguration;
import org.apache.camel.spring.boot.CamelAutoConfiguration;
import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
@@ -35,14 +33,13 @@ import org.springframework.test.annotation.DirtiesContext;
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
classes = {
CamelAutoConfiguration.class,
- ServletPlatformHttpTest.class,
- ServletPlatformHttpTest.TestConfiguration.class,
- ServletPlatformHttpAutoConfiguration.class,
- ServletComponentAutoConfiguration.class,
- ServletMappingAutoConfiguration.class
+ SpringBootPlatformHttpTest.class,
+
SpringBootPlatformHttpTest.TestConfiguration.class,
+ PlatformHttpComponentAutoConfiguration.class,
+ SpringBootPlatformHttpAutoConfiguration.class
}
)
-public class ServletPlatformHttpTest extends ServletPlatformHttpBase {
+public class SpringBootPlatformHttpTest extends PlatformHttpBase {
// *************************************
// Config
@@ -55,9 +52,9 @@ public class ServletPlatformHttpTest extends
ServletPlatformHttpBase {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("platform-http:/get")
+ from("platform-http:/myget")
.setBody().constant("get");
- from("platform-http:/post")
+ from("platform-http:/mypost")
.transform().body(String.class, b -> b.toUpperCase());
}
};