You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2017/03/17 12:39:34 UTC
[1/2] camel git commit: Add missing logging configuration for some
spring-boot startes test
Repository: camel
Updated Branches:
refs/heads/master 2f9773e24 -> 572a09eb7
Add missing logging configuration for some spring-boot startes test
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/572a09eb
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/572a09eb
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/572a09eb
Branch: refs/heads/master
Commit: 572a09eb70d473caf9d60b95a8010da63ef109db
Parents: 62e35c7
Author: lburgazzoli <lb...@gmail.com>
Authored: Fri Mar 17 13:38:12 2017 +0100
Committer: lburgazzoli <lb...@gmail.com>
Committed: Fri Mar 17 13:38:38 2017 +0100
----------------------------------------------------------------------
.../src/test/resources/logback.xml | 39 ++++++++++++++++++++
.../src/test/resources/logback.xml | 39 ++++++++++++++++++++
.../src/test/resources/logback.xml | 39 ++++++++++++++++++++
.../src/test/resources/logback.xml | 39 ++++++++++++++++++++
4 files changed, 156 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/572a09eb/platforms/spring-boot/components-starter/camel-netty-http-starter/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-netty-http-starter/src/test/resources/logback.xml b/platforms/spring-boot/components-starter/camel-netty-http-starter/src/test/resources/logback.xml
new file mode 100644
index 0000000..6b4c2e7
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-netty-http-starter/src/test/resources/logback.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+<configuration>
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <!-- encoders are assigned the type
+ ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%-15.15thread] %-5level %-30.30logger - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%-15.15thread] %-5level %-30.30logger - %msg%n</pattern>
+ </encoder>
+ <file>target/camel-netty-http-starter-test.log</file>
+ </appender>
+
+ <root level="INFO">
+ <appender-ref ref="FILE"/>
+ </root>
+
+</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/572a09eb/platforms/spring-boot/components-starter/camel-netty4-http-starter/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-netty4-http-starter/src/test/resources/logback.xml b/platforms/spring-boot/components-starter/camel-netty4-http-starter/src/test/resources/logback.xml
new file mode 100644
index 0000000..a04d679
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-netty4-http-starter/src/test/resources/logback.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+<configuration>
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <!-- encoders are assigned the type
+ ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%-15.15thread] %-5level %-30.30logger - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%-15.15thread] %-5level %-30.30logger - %msg%n</pattern>
+ </encoder>
+ <file>target/camel-netty4-http-starter-test.log</file>
+ </appender>
+
+ <root level="INFO">
+ <appender-ref ref="FILE"/>
+ </root>
+
+</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/572a09eb/platforms/spring-boot/components-starter/camel-servlet-starter/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-servlet-starter/src/test/resources/logback.xml b/platforms/spring-boot/components-starter/camel-servlet-starter/src/test/resources/logback.xml
new file mode 100644
index 0000000..b955eb1
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-servlet-starter/src/test/resources/logback.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+<configuration>
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <!-- encoders are assigned the type
+ ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%-15.15thread] %-5level %-30.30logger - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%-15.15thread] %-5level %-30.30logger - %msg%n</pattern>
+ </encoder>
+ <file>target/camel-servlet-starter-test.log</file>
+ </appender>
+
+ <root level="INFO">
+ <appender-ref ref="FILE"/>
+ </root>
+
+</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/572a09eb/platforms/spring-boot/components-starter/camel-sql-starter/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-sql-starter/src/test/resources/logback.xml b/platforms/spring-boot/components-starter/camel-sql-starter/src/test/resources/logback.xml
new file mode 100644
index 0000000..3250de5
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-sql-starter/src/test/resources/logback.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+<configuration>
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <!-- encoders are assigned the type
+ ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%-15.15thread] %-5level %-30.30logger - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%-15.15thread] %-5level %-30.30logger - %msg%n</pattern>
+ </encoder>
+ <file>target/camel-sql-starter-test.log</file>
+ </appender>
+
+ <root level="INFO">
+ <appender-ref ref="FILE"/>
+ </root>
+
+</configuration>
\ No newline at end of file
[2/2] camel git commit: CAMEL-10976: camel-spring-boot - Configure
rest configuration using auto configuration
Posted by lb...@apache.org.
CAMEL-10976: camel-spring-boot - Configure rest configuration using auto configuration
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/62e35c78
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/62e35c78
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/62e35c78
Branch: refs/heads/master
Commit: 62e35c78585c3b2da63ee4c304f9a0fd335b3190
Parents: 2f9773e
Author: lburgazzoli <lb...@gmail.com>
Authored: Thu Mar 16 18:42:46 2017 +0100
Committer: lburgazzoli <lb...@gmail.com>
Committed: Fri Mar 17 13:38:38 2017 +0100
----------------------------------------------------------------------
.../camel/component/rest/RestComponent.java | 80 ++++++-
.../apache/camel/model/rest/RestConstants.java | 24 ++
.../model/rest/RestPropertyDefinition.java | 8 +
.../apache/camel/util/IntrospectionSupport.java | 17 ++
.../camel/component/rest/FromRestGetTest.java | 4 +-
.../spring/boot/CamelRestAutoConfiguration.java | 60 +++++
.../boot/CamelRestConfigurationProperties.java | 233 +++++++++++++++++++
.../main/resources/META-INF/spring.factories | 1 +
.../camel/spring/boot/CamelAnnotationsTest.java | 34 +--
.../CamelAutoConfigurationPropertiesTest.java | 2 +
.../spring/boot/CamelAutoConfigurationTest.java | 62 ++---
.../boot/CamelConfigurationLocationsTest.java | 2 +
.../spring/boot/CamelEventNotifierTest.java | 2 +
.../boot/CamelNonInvasiveCamelContextTest.java | 2 +
.../apache/camel/spring/boot/CamelRestTest.java | 167 +++++++++++++
.../CamelSpringBootTemplateShutdownTest.java | 2 +
.../spring/boot/CustomShutdownStrategyTest.java | 2 +
.../boot/ExistingConversionServiceTest.java | 25 +-
.../camel/spring/boot/NoConvertersTest.java | 2 +
.../org/apache/camel/spring/boot/PlainTest.java | 2 +
.../boot/SpringConverterDelegationTest.java | 34 ++-
.../spring/boot/SpringTypeConverterTest.java | 2 +
22 files changed, 680 insertions(+), 87 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
index c49cee4..78518fc 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
@@ -16,19 +16,27 @@
*/
package org.apache.camel.component.rest;
+import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
+import java.util.function.Consumer;
+import java.util.function.Supplier;
+import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.model.rest.RestConstants;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.RestConfiguration;
+import org.apache.camel.util.CamelContextHelper;
import org.apache.camel.util.FileUtil;
+import org.apache.camel.util.IntrospectionSupport;
import org.apache.camel.util.ObjectHelper;
/**
* Rest component.
*/
-public class RestComponent extends UriEndpointComponent {
+public class RestComponent extends DefaultComponent {
@Metadata(label = "common")
private String componentName;
@@ -37,10 +45,6 @@ public class RestComponent extends UriEndpointComponent {
@Metadata(label = "producer")
private String host;
- public RestComponent() {
- super(RestEndpoint.class);
- }
-
@Override
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
String restConfigurationName = getAndRemoveParameter(parameters, "componentName", String.class, componentName);
@@ -49,7 +53,9 @@ public class RestComponent extends UriEndpointComponent {
answer.setComponentName(restConfigurationName);
answer.setApiDoc(apiDoc);
- RestConfiguration config = getCamelContext().getRestConfiguration(restConfigurationName, true);
+ RestConfiguration config = new RestConfiguration();
+ mergeConfigurations(config, findGlobalRestConfiguration());
+ mergeConfigurations(config, getCamelContext().getRestConfiguration(restConfigurationName, true));
// if no explicit host was given, then fallback and use default configured host
String h = resolveAndRemoveReferenceParameter(parameters, "host", String.class, host);
@@ -155,4 +161,64 @@ public class RestComponent extends UriEndpointComponent {
this.host = host;
}
+ // ****************************************
+ // Helpers
+ // ****************************************
+
+ private RestConfiguration findGlobalRestConfiguration() {
+ CamelContext context = getCamelContext();
+
+ RestConfiguration conf = CamelContextHelper.lookup(context, RestConstants.DEFAULT_REST_CONFIGURATION_ID, RestConfiguration.class);
+ if (conf == null) {
+ conf = CamelContextHelper.findByType(getCamelContext(), RestConfiguration.class);
+ }
+
+ return conf;
+ }
+
+ private RestConfiguration mergeConfigurations(RestConfiguration conf, RestConfiguration from) throws Exception {
+ if (from != null) {
+ Map<String, Object> map = IntrospectionSupport.getNonNullProperties(from);
+
+ // Remove properties as they need to be manually managed
+ Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<String, Object> entry = it.next();
+ if (entry.getValue() instanceof Map) {
+ it.remove();
+ }
+ }
+
+ // Copy common options, will override those in conf
+ IntrospectionSupport.setProperties(getCamelContext(), getCamelContext().getTypeConverter(), conf, map);
+
+ // Merge properties
+ mergeProperties(conf::getComponentProperties, from::getComponentProperties, conf::setComponentProperties);
+ mergeProperties(conf::getEndpointProperties, from::getEndpointProperties, conf::setEndpointProperties);
+ mergeProperties(conf::getConsumerProperties, from::getConsumerProperties, conf::setConsumerProperties);
+ mergeProperties(conf::getDataFormatProperties, from::getDataFormatProperties, conf::setDataFormatProperties);
+ mergeProperties(conf::getApiProperties, from::getApiProperties, conf::setApiProperties);
+ mergeProperties(conf::getCorsHeaders, from::getCorsHeaders, conf::setCorsHeaders);
+ }
+
+ return conf;
+ }
+
+ private <T> void mergeProperties(Supplier<Map<String, T>> base, Supplier<Map<String, T>> addons, Consumer<Map<String, T>> consumer) {
+ Map<String, T> baseMap = base.get();
+ Map<String, T> addonsMap = addons.get();
+
+ if (baseMap != null || addonsMap != null) {
+ HashMap<String, T> result = new HashMap<>();
+ if (baseMap != null) {
+ result.putAll(baseMap);
+ }
+ if (addonsMap != null) {
+ result.putAll(addonsMap);
+ }
+
+ consumer.accept(result);
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/camel-core/src/main/java/org/apache/camel/model/rest/RestConstants.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestConstants.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestConstants.java
new file mode 100644
index 0000000..17a9216
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestConstants.java
@@ -0,0 +1,24 @@
+/**
+ * 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.model.rest;
+
+public final class RestConstants {
+ public static final String DEFAULT_REST_CONFIGURATION_ID = "rest-configuration";
+
+ private RestConstants() {
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/camel-core/src/main/java/org/apache/camel/model/rest/RestPropertyDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestPropertyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestPropertyDefinition.java
index 95eb84c..c1e85d0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/RestPropertyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestPropertyDefinition.java
@@ -37,6 +37,14 @@ public class RestPropertyDefinition {
@XmlAttribute(required = true)
private String value;
+ public RestPropertyDefinition() {
+ }
+
+ public RestPropertyDefinition(String key, String value) {
+ this.key = key;
+ this.value = value;
+ }
+
/**
* Property key
*/
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java b/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java
index c3a7258..185ef3b 100755
--- a/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java
@@ -26,6 +26,7 @@ import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -204,6 +205,22 @@ public final class IntrospectionSupport {
return isSetter(method, false);
}
+ /**
+ * Will inspect the target for properties.
+ * <p/>
+ * Notice a property must have both a getter/setter method to be included.
+ * Notice all <tt>null</tt> values won't be included.
+ *
+ * @param target the target bean
+ * @return the map with found properties
+ */
+ public static Map<String, Object> getNonNullProperties(Object target) {
+ Map<String, Object> properties = new HashMap<>();
+
+ getProperties(target, properties, null, false);
+
+ return properties;
+ }
/**
* Will inspect the target for properties.
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetTest.java b/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetTest.java
index bfafb14..9fb6cbb 100644
--- a/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetTest.java
@@ -113,8 +113,8 @@ public class FromRestGetTest extends ContextTestSupport {
.get().consumes("application/json")
.param().type(RestParamType.header).description("header param description1").dataType("integer").allowableValues("1", "2", "3", "4")
.defaultValue("1").name("header_count").required(true)
- .endParam().
- param().type(RestParamType.query).description("header param description2").dataType("string").allowableValues("a", "b", "c", "d")
+ .endParam()
+ .param().type(RestParamType.query).description("header param description2").dataType("string").allowableValues("a", "b", "c", "d")
.defaultValue("b").collectionFormat(CollectionFormat.multi).name("header_letter").required(false)
.endParam()
.responseMessage().code(300).message("test msg").responseModel(Integer.class)
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelRestAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelRestAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelRestAutoConfiguration.java
new file mode 100644
index 0000000..ef58774
--- /dev/null
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelRestAutoConfiguration.java
@@ -0,0 +1,60 @@
+/**
+ * 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.spring.boot;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.model.rest.RestConstants;
+import org.apache.camel.spi.RestConfiguration;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ConditionalOnProperty(name = "camel.rest.enabled", matchIfMissing = true)
+@ConditionalOnBean(CamelAutoConfiguration.class)
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties(CamelRestConfigurationProperties.class)
+public class CamelRestAutoConfiguration {
+ @Autowired
+ private CamelContext camelContext;
+ @Autowired
+ private CamelRestConfigurationProperties config;
+
+ @Bean(name = RestConstants.DEFAULT_REST_CONFIGURATION_ID)
+ @ConditionalOnClass(CamelContext.class)
+ @ConditionalOnMissingBean
+ public RestConfiguration restConfiguration() throws Exception {
+ final RestConfiguration configuration = new RestConfiguration();
+
+ // Copy properties
+ IntrospectionSupport.setProperties(
+ camelContext,
+ camelContext.getTypeConverter(),
+ configuration,
+ IntrospectionSupport.getNonNullProperties(config)
+ );
+
+ return configuration;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelRestConfigurationProperties.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelRestConfigurationProperties.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelRestConfigurationProperties.java
new file mode 100644
index 0000000..cf1c855
--- /dev/null
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelRestConfigurationProperties.java
@@ -0,0 +1,233 @@
+/**
+ * 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.spring.boot;
+
+import java.util.Map;
+
+import org.apache.camel.spi.RestConfiguration;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@ConfigurationProperties(prefix = "camel.rest")
+public class CamelRestConfigurationProperties {
+ // Delegate it so we do not have the CamelRestConfigurationProperties
+ // registered available also as RestConfiguration
+ private final RestConfiguration delegate;
+
+ public CamelRestConfigurationProperties() {
+ this.delegate = new RestConfiguration();
+ }
+
+ public String getComponent() {
+ return delegate.getComponent();
+ }
+
+ public void setComponent(String componentName) {
+ delegate.setComponent(componentName);
+ }
+
+ public String getApiComponent() {
+ return delegate.getApiComponent();
+ }
+
+ public void setApiComponent(String apiComponent) {
+ delegate.setApiComponent(apiComponent);
+ }
+
+ public String getProducerComponent() {
+ return delegate.getProducerComponent();
+ }
+
+ public void setProducerComponent(String componentName) {
+ delegate.setProducerComponent(componentName);
+ }
+
+ public String getProducerApiDoc() {
+ return delegate.getProducerApiDoc();
+ }
+
+ public void setProducerApiDoc(String producerApiDoc) {
+ delegate.setProducerApiDoc(producerApiDoc);
+ }
+
+ public String getHost() {
+ return delegate.getHost();
+ }
+
+ public void setHost(String host) {
+ delegate.setHost(host);
+ }
+
+ public String getScheme() {
+ return delegate.getScheme();
+ }
+
+ public void setScheme(String scheme) {
+ delegate.setScheme(scheme);
+ }
+
+ public int getPort() {
+ return delegate.getPort();
+ }
+
+ public void setPort(int port) {
+ delegate.setPort(port);
+ }
+
+ public String getContextPath() {
+ return delegate.getContextPath();
+ }
+
+ public void setContextPath(String contextPath) {
+ delegate.setContextPath(contextPath);
+ }
+
+ public String getApiContextPath() {
+ return delegate.getApiContextPath();
+ }
+
+ public void setApiContextPath(String contextPath) {
+ delegate.setApiContextPath(contextPath);
+ }
+
+ public String getApiContextRouteId() {
+ return delegate.getApiContextRouteId();
+ }
+
+ public void setApiContextRouteId(String apiContextRouteId) {
+ delegate.setApiContextRouteId(apiContextRouteId);
+ }
+
+ public String getApiContextIdPattern() {
+ return delegate.getApiContextIdPattern();
+ }
+
+ public void setApiContextIdPattern(String apiContextIdPattern) {
+ delegate.setApiContextIdPattern(apiContextIdPattern);
+ }
+
+ public boolean isApiContextListing() {
+ return delegate.isApiContextListing();
+ }
+
+ public void setApiContextListing(boolean apiContextListing) {
+ delegate.setApiContextListing(apiContextListing);
+ }
+
+ public RestConfiguration.RestHostNameResolver getRestHostNameResolver() {
+ return delegate.getRestHostNameResolver();
+ }
+
+ public void setRestHostNameResolver(RestConfiguration.RestHostNameResolver restHostNameResolver) {
+ delegate.setRestHostNameResolver(restHostNameResolver);
+ }
+
+ public void setRestHostNameResolver(String restHostNameResolver) {
+ delegate.setRestHostNameResolver(restHostNameResolver);
+ }
+
+ public RestConfiguration.RestBindingMode getBindingMode() {
+ return delegate.getBindingMode();
+ }
+
+ public void setBindingMode(RestConfiguration.RestBindingMode bindingMode) {
+ delegate.setBindingMode(bindingMode);
+ }
+
+ public void setBindingMode(String bindingMode) {
+ delegate.setBindingMode(bindingMode);
+ }
+
+ public boolean isSkipBindingOnErrorCode() {
+ return delegate.isSkipBindingOnErrorCode();
+ }
+
+ public void setSkipBindingOnErrorCode(boolean skipBindingOnErrorCode) {
+ delegate.setSkipBindingOnErrorCode(skipBindingOnErrorCode);
+ }
+
+ public boolean isEnableCORS() {
+ return delegate.isEnableCORS();
+ }
+
+ public void setEnableCORS(boolean enableCORS) {
+ delegate.setEnableCORS(enableCORS);
+ }
+
+ public String getJsonDataFormat() {
+ return delegate.getJsonDataFormat();
+ }
+
+ public void setJsonDataFormat(String name) {
+ delegate.setJsonDataFormat(name);
+ }
+
+ public String getXmlDataFormat() {
+ return delegate.getXmlDataFormat();
+ }
+
+ public void setXmlDataFormat(String name) {
+ delegate.setXmlDataFormat(name);
+ }
+
+ public Map<String, Object> getComponentProperties() {
+ return delegate.getComponentProperties();
+ }
+
+ public void setComponentProperties(Map<String, Object> componentProperties) {
+ delegate.setComponentProperties(componentProperties);
+ }
+
+ public Map<String, Object> getEndpointProperties() {
+ return delegate.getEndpointProperties();
+ }
+
+ public void setEndpointProperties(Map<String, Object> endpointProperties) {
+ delegate.setEndpointProperties(endpointProperties);
+ }
+
+ public Map<String, Object> getConsumerProperties() {
+ return delegate.getConsumerProperties();
+ }
+
+ public void setConsumerProperties(Map<String, Object> consumerProperties) {
+ delegate.setConsumerProperties(consumerProperties);
+ }
+
+ public Map<String, Object> getDataFormatProperties() {
+ return delegate.getDataFormatProperties();
+ }
+
+ public void setDataFormatProperties(Map<String, Object> dataFormatProperties) {
+ delegate.setDataFormatProperties(dataFormatProperties);
+ }
+
+ public Map<String, Object> getApiProperties() {
+ return delegate.getApiProperties();
+ }
+
+ public void setApiProperties(Map<String, Object> apiProperties) {
+ delegate.setApiProperties(apiProperties);
+ }
+
+ public Map<String, String> getCorsHeaders() {
+ return delegate.getCorsHeaders();
+ }
+
+ public void setCorsHeaders(Map<String, String> corsHeaders) {
+ delegate.setCorsHeaders(corsHeaders);
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/resources/META-INF/spring.factories b/components/camel-spring-boot/src/main/resources/META-INF/spring.factories
index 05fc73e..361ef6b 100644
--- a/components/camel-spring-boot/src/main/resources/META-INF/spring.factories
+++ b/components/camel-spring-boot/src/main/resources/META-INF/spring.factories
@@ -17,4 +17,5 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.apache.camel.spring.boot.CamelAutoConfiguration,\
+org.apache.camel.spring.boot.CamelRestAutoConfiguration,\
org.apache.camel.spring.boot.health.CamelHealthAutoConfiguration
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAnnotationsTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAnnotationsTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAnnotationsTest.java
index 3909be3..585bad2 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAnnotationsTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAnnotationsTest.java
@@ -29,13 +29,19 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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.springframework.test.context.junit4.SpringRunner;
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
-@SpringBootTest(classes = {CamelAnnotationsTest.class, CamelAnnotationsTestConfig.class})
+@SpringBootTest(
+ classes = {
+ CamelAnnotationsTest.class,
+ CamelAnnotationsTest.TestConfig.class
+ }
+)
public class CamelAnnotationsTest extends Assert {
-
@Autowired
ProducerTemplate producerTemplate;
@@ -49,19 +55,17 @@ public class CamelAnnotationsTest extends Assert {
mockEndpoint.assertIsSatisfied();
}
-}
+ @Configuration
+ public static class TestConfig {
-@Configuration
-class CamelAnnotationsTestConfig {
-
- @Bean
- RoutesBuilder route() {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- from("direct:test").to("mock:test");
- }
- };
+ @Bean
+ RoutesBuilder route() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:test").to("mock:test");
+ }
+ };
+ }
}
-
}
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAutoConfigurationPropertiesTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAutoConfigurationPropertiesTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAutoConfigurationPropertiesTest.java
index 8726b88..4f15180 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAutoConfigurationPropertiesTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAutoConfigurationPropertiesTest.java
@@ -29,8 +29,10 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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.springframework.test.context.junit4.SpringRunner;
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootTest(classes = CamelAutoConfigurationPropertiesTest.class, properties = "camel.springboot.jmxEnabled=false")
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAutoConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAutoConfigurationTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAutoConfigurationTest.java
index c0260bc..fdbbecb 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAutoConfigurationTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelAutoConfigurationTest.java
@@ -32,20 +32,26 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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.springframework.test.context.junit4.SpringRunner;
-import static org.apache.camel.spring.boot.TestConfig.ROUTE_ID;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
-@SpringBootTest(classes = {TestConfig.class, CamelAutoConfigurationTest.class, RouteConfigWithCamelContextInjected.class},
-properties = {
+@SpringBootTest(
+ classes = {
+ CamelAutoConfigurationTest.TestConfig.class,
+ CamelAutoConfigurationTest.class,
+ RouteConfigWithCamelContextInjected.class },
+ properties = {
"camel.springboot.consumerTemplateCacheSize=100",
"camel.springboot.jmxEnabled=true",
"camel.springboot.name=customName",
- "camel.springboot.typeConversion=true"})
+ "camel.springboot.typeConversion=true"}
+)
public class CamelAutoConfigurationTest extends Assert {
// Collaborators fixtures
@@ -80,7 +86,7 @@ public class CamelAutoConfigurationTest extends Assert {
@Test
public void shouldDetectRoutes() {
// When
- Route route = camelContext.getRoute(ROUTE_ID);
+ Route route = camelContext.getRoute(TestConfig.ROUTE_ID);
// Then
assertNotNull(route);
@@ -164,31 +170,25 @@ public class CamelAutoConfigurationTest extends Assert {
xmlAutoLoadingMock.assertIsSatisfied();
}
-}
-
-@Configuration
-class TestConfig {
-
- // Constants
-
- static final String ROUTE_ID = "testRoute";
-
- // Test beans
-
- @Bean
- RouteBuilder routeBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- from("direct:test").routeId(ROUTE_ID).to("mock:test");
- }
- };
+ @Configuration
+ public static class TestConfig {
+ // Constants
+ static final String ROUTE_ID = "testRoute";
+
+ // Test bean
+ @Bean
+ RouteBuilder routeBuilder() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:test").routeId(ROUTE_ID).to("mock:test");
+ }
+ };
+ }
+
+ @Bean
+ CamelContextConfiguration camelContextConfiguration() {
+ return mock(CamelContextConfiguration.class);
+ }
}
-
-
- @Bean
- CamelContextConfiguration camelContextConfiguration() {
- return mock(CamelContextConfiguration.class);
- }
-
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelConfigurationLocationsTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelConfigurationLocationsTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelConfigurationLocationsTest.java
index 8dd0624..82f61bc 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelConfigurationLocationsTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelConfigurationLocationsTest.java
@@ -27,8 +27,10 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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.springframework.test.context.junit4.SpringRunner;
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootTest(classes = CamelConfigurationLocationsTest.class, properties = "camel.springboot.file-configurations=file:src/test/secret/*.properties")
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelEventNotifierTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelEventNotifierTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelEventNotifierTest.java
index 5f32aa8..397c989 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelEventNotifierTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelEventNotifierTest.java
@@ -33,8 +33,10 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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.springframework.test.context.junit4.SpringRunner;
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootTest(classes = CamelEventNotifierTest.class)
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelNonInvasiveCamelContextTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelNonInvasiveCamelContextTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelNonInvasiveCamelContextTest.java
index d6fd9e8..328ccec 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelNonInvasiveCamelContextTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelNonInvasiveCamelContextTest.java
@@ -28,11 +28,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.ImportResource;
+import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootTest(classes = { TestApplication.class, CamelNonInvasiveCamelContextTest.class })
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelRestTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelRestTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelRestTest.java
new file mode 100644
index 0000000..ab7fe56
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelRestTest.java
@@ -0,0 +1,167 @@
+/**
+ * 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.spring.boot;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.seda.SedaEndpoint;
+import org.apache.camel.impl.ActiveMQUuidGenerator;
+import org.apache.camel.spi.RestApiConsumerFactory;
+import org.apache.camel.spi.RestConfiguration;
+import org.apache.camel.spi.RestConsumerFactory;
+import org.apache.camel.util.CamelContextHelper;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+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.springframework.test.context.junit4.SpringRunner;
+
+
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@EnableAutoConfiguration
+@SpringBootTest(
+ classes = {
+ CamelRestTest.class,
+ CamelRestTest.TestConfiguration.class
+ },
+ properties = {
+ "debug=false",
+ "camel.springboot.xml-rests=false",
+ "camel.springboot.xml-routes=false",
+ "camel.rest.enabled=true",
+ "camel.rest.component=dummy-rest",
+ "camel.rest.host=localhost"
+ }
+)
+public class CamelRestTest {
+ @Autowired
+ private CamelContext context;
+
+ @Test
+ public void test() throws Exception {
+ ProducerTemplate template = context.createProducerTemplate();
+ String result = template.requestBody("seda:get-say-hello", "test", String.class);
+
+ Assert.assertEquals("Hello World", result);
+ }
+
+ // ***********************************
+ // Configuration
+ // ***********************************
+
+ @Configuration
+ public static class TestConfiguration {
+ @Bean(name = "dummy-rest")
+ public RestConsumerFactory dummyRestConsumerFactory() {
+ return new TestConsumerFactory();
+ }
+
+ @Bean
+ public RouteBuilder routeBuilder() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ rest("/say/hello")
+ .get().to("direct:hello");
+ from("direct:hello")
+ .transform().constant("Hello World");
+ }
+ };
+ }
+ }
+
+ // ***********************************
+ // Rest Helpers
+ // ***********************************
+
+ private static final class TestConsumerFactory implements RestConsumerFactory, RestApiConsumerFactory {
+ private Object dummy;
+
+ public Object getDummy() {
+ return dummy;
+ }
+
+ public void setDummy(Object dummy) {
+ this.dummy = dummy;
+ }
+
+ @Override
+ public Consumer createConsumer(
+ CamelContext camelContext,
+ Processor processor,
+ String verb,
+ String basePath,
+ String uriTemplate,
+ String consumes,
+ String produces,
+ RestConfiguration configuration,
+ Map<String, Object> parameters) throws Exception {
+
+ // just use a seda endpoint for testing purpose
+ String id;
+ if (uriTemplate != null) {
+ id = ActiveMQUuidGenerator.generateSanitizedId(basePath + uriTemplate);
+ } else {
+ id = ActiveMQUuidGenerator.generateSanitizedId(basePath);
+ }
+ // remove leading dash as we add that ourselves
+ if (id.startsWith("-")) {
+ id = id.substring(1);
+ }
+
+ if (configuration.getConsumerProperties() != null) {
+ String ref = (String) configuration.getConsumerProperties().get("dummy");
+ if (ref != null) {
+ dummy = CamelContextHelper.mandatoryLookup(camelContext, ref.substring(1));
+ }
+ }
+
+ SedaEndpoint seda = camelContext.getEndpoint("seda:" + verb + "-" + id, SedaEndpoint.class);
+ return seda.createConsumer(processor);
+ }
+
+ @Override
+ public Consumer createApiConsumer(
+ CamelContext camelContext,
+ Processor processor,
+ String contextPath,
+ RestConfiguration configuration,
+ Map<String, Object> parameters) throws Exception {
+
+ // just use a seda endpoint for testing purpose
+ String id = ActiveMQUuidGenerator.generateSanitizedId(contextPath);
+ // remove leading dash as we add that ourselves
+ if (id.startsWith("-")) {
+ id = id.substring(1);
+ }
+
+ SedaEndpoint seda = camelContext.getEndpoint("seda:api:" + "-" + id, SedaEndpoint.class);
+ return seda.createConsumer(processor);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelSpringBootTemplateShutdownTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelSpringBootTemplateShutdownTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelSpringBootTemplateShutdownTest.java
index 0b7b6e0..d1cacaf 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelSpringBootTemplateShutdownTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelSpringBootTemplateShutdownTest.java
@@ -24,10 +24,12 @@ import org.junit.Before;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.test.annotation.DirtiesContext;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+@DirtiesContext
public class CamelSpringBootTemplateShutdownTest {
CamelContext camelContext;
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CustomShutdownStrategyTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CustomShutdownStrategyTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CustomShutdownStrategyTest.java
index 0dd2f00..bdf8d80 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CustomShutdownStrategyTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CustomShutdownStrategyTest.java
@@ -32,8 +32,10 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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.springframework.test.context.junit4.SpringRunner;
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootTest(classes = CustomShutdownStrategyTest.class)
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/ExistingConversionServiceTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/ExistingConversionServiceTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/ExistingConversionServiceTest.java
index 17c4a55..4137954 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/ExistingConversionServiceTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/ExistingConversionServiceTest.java
@@ -27,13 +27,13 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.support.DefaultConversionService;
+import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
-import static org.apache.camel.spring.boot.ConversionServiceConfig.providedConversionService;
-
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
-@SpringBootTest(classes = ConversionServiceConfig.class)
+@SpringBootTest(classes = ExistingConversionServiceTest.TestConfig.class)
public class ExistingConversionServiceTest extends Assert {
@Autowired
@@ -42,20 +42,17 @@ public class ExistingConversionServiceTest extends Assert {
@Test
public void shouldUseProvidedConversionService() {
- assertSame(providedConversionService, conversionService);
+ assertSame(TestConfig.CONVERSION_SERVICE, conversionService);
}
-}
-
-@Configuration
-class ConversionServiceConfig {
+ @Configuration
+ public static class TestConfig {
+ static final ConversionService CONVERSION_SERVICE = new DefaultConversionService();
- static ConversionService providedConversionService = new DefaultConversionService();
-
- @Bean(name = "myService")
- ConversionService providedConversionService() {
- return providedConversionService;
+ @Bean(name = "myService")
+ ConversionService providedConversionService() {
+ return CONVERSION_SERVICE;
+ }
}
-
}
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/NoConvertersTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/NoConvertersTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/NoConvertersTest.java
index e12d4a6..06a7b53 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/NoConvertersTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/NoConvertersTest.java
@@ -25,8 +25,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
+import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootTest(classes = NoConvertersTest.class, properties = "camel.springboot.typeConversion=false")
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/PlainTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/PlainTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/PlainTest.java
index d138398..004c8a4 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/PlainTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/PlainTest.java
@@ -25,8 +25,10 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;
+import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
+@DirtiesContext
@RunWith(SpringRunner.class)
@SpringBootTest
public class PlainTest {
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/SpringConverterDelegationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/SpringConverterDelegationTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/SpringConverterDelegationTest.java
index 807bf10..83c3332 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/SpringConverterDelegationTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/SpringConverterDelegationTest.java
@@ -26,23 +26,15 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
+import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootTest(classes = SpringConverterDelegationTest.class, properties = "camel.springboot.typeConversion=true")
public class SpringConverterDelegationTest extends Assert {
- @Configuration
- static class Config {
-
- @Bean
- ConvertableConverter convertableConverter() {
- return new ConvertableConverter();
- }
-
- }
-
@Autowired
TypeConverter typeConverter;
@@ -52,16 +44,22 @@ public class SpringConverterDelegationTest extends Assert {
assertEquals("converted!", result);
}
-}
-
-class Convertable {
-}
+ @Configuration
+ public static class Config {
+ @Bean
+ ConvertableConverter convertableConverter() {
+ return new ConvertableConverter();
+ }
-class ConvertableConverter implements Converter<Convertable, String> {
+ }
- @Override
- public String convert(Convertable source) {
- return "converted!";
+ public static class Convertable {
}
+ public static class ConvertableConverter implements Converter<Convertable, String> {
+ @Override
+ public String convert(Convertable source) {
+ return "converted!";
+ }
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/62e35c78/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/SpringTypeConverterTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/SpringTypeConverterTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/SpringTypeConverterTest.java
index ac76c8a..5e14200 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/SpringTypeConverterTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/SpringTypeConverterTest.java
@@ -35,8 +35,10 @@ import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.ConverterNotFoundException;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.support.DefaultConversionService;
+import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
+@DirtiesContext
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootTest(classes = SpringTypeConverterTest.SpringTypeConversionConfiguration.class)