git commit: CAMEL-7696: camel-metrics - Add a route policy to expose route stats as codehale metrics. Work in progress.
Repository: camel Updated Branches: refs/heads/master c672d44b4 -> 92b4365a1 CAMEL-7696: camel-metrics - Add a route policy to expose route stats as codehale metrics. Work in progress. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/92b4365a Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/92b4365a Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/92b4365a Branch: refs/heads/master Commit: 92b4365a11836ea24cd4699739e003accc607d3a Parents: c672d44 Author: Claus Ibsen Authored: Thu Aug 14 08:56:55 2014 +0200 Committer: Claus Ibsen Committed: Thu Aug 14 08:56:55 2014 +0200 -- .../camel/component/metrics/routepolicy/MetricsRoutePolicy.java| 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/92b4365a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java -- diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java index f194ccb..4d7334a 100644 --- a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java +++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java @@ -81,7 +81,7 @@ public class MetricsRoutePolicy extends RoutePolicySupport { this.route = route; try { -registry = route.getRouteContext().getCamelContext().hasServiceByType(MetricsRegistryService.class); +registry = route.getRouteContext().getCamelContext().hasService(MetricsRegistryService.class); if (registry == null) { registry = new MetricsRegistryService(); route.getRouteContext().getCamelContext().addService(registry);
[2/3] git commit: CAMEL-7695: CamelContext - Allow to check if a service by its type has been added
CAMEL-7695: CamelContext - Allow to check if a service by its type has been added Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fa7e2254 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fa7e2254 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fa7e2254 Branch: refs/heads/master Commit: fa7e2254f065f3e3e7bf28d73ca218c914676487 Parents: 76c39dc Author: Claus Ibsen Authored: Thu Aug 14 08:52:51 2014 +0200 Committer: Claus Ibsen Committed: Thu Aug 14 08:55:22 2014 +0200 -- .../src/main/java/org/apache/camel/CamelContext.java | 8 .../org/apache/camel/impl/DefaultCamelContext.java | 13 - .../org/apache/camel/impl/DefaultCamelContextTest.java | 13 + 3 files changed, 33 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/fa7e2254/camel-core/src/main/java/org/apache/camel/CamelContext.java -- diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java index 5b175a3..8a3c31b 100644 --- a/camel-core/src/main/java/org/apache/camel/CamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java @@ -230,6 +230,14 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration { boolean hasService(Object object); /** + * Has the given service type already been added to this context? + * + * @param type the class type + * @return the service instance or null if not already added. + */ +public T hasService(Class type); + +/** * Adds the given listener to be invoked when {@link CamelContext} have just been started. * * This allows listeners to do any custom work after the routes and other services have been started and are running. http://git-wip-us.apache.org/repos/asf/camel/blob/fa7e2254/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java -- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java index dab1eaa..72defeb 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java @@ -66,6 +66,7 @@ import org.apache.camel.ShutdownRunningTask; import org.apache.camel.StartupListener; import org.apache.camel.StatefulService; import org.apache.camel.SuspendableService; +import org.apache.camel.TypeConversionException; import org.apache.camel.TypeConverter; import org.apache.camel.VetoCamelContextStartException; import org.apache.camel.builder.ErrorHandlerBuilder; @@ -161,7 +162,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon private final List endpointStrategies = new ArrayList(); private final Map components = new HashMap(); private final Set routes = new LinkedHashSet(); -private final List servicesToClose = new ArrayList(); +private final List servicesToClose = new CopyOnWriteArrayList(); private final Set startupListeners = new LinkedHashSet(); private TypeConverter typeConverter; private TypeConverterRegistry typeConverterRegistry; @@ -1031,6 +1032,16 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon return false; } +@Override +public T hasService(Class type) { +for (Service service : servicesToClose) { +if (type.isInstance(service)) { +return type.cast(service); +} +} +return null; +} + public void addStartupListener(StartupListener listener) throws Exception { // either add to listener so we can invoke then later when CamelContext has been started // or invoke the callback right now http://git-wip-us.apache.org/repos/asf/camel/blob/fa7e2254/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java -- diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java index b7f51ae..3403ae4 100644 --- a/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java +++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java @@ -335,6 +335,19 @@ public class DefaultCamelContextTest extends TestSupport { assertEquals("Stopped", my.getStatus().name()); } +public void testAddServiceType() throws Exception { +MySe
[1/3] git commit: CAMEL-7696: camel-metrics - Add a route policy to expose route stats as codehale metrics. Work in progress.
Repository: camel Updated Branches: refs/heads/master b2c3b31bb -> c672d44b4 CAMEL-7696: camel-metrics - Add a route policy to expose route stats as codehale metrics. Work in progress. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c672d44b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c672d44b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c672d44b Branch: refs/heads/master Commit: c672d44b4f46a9a128216759059b134fc6f793ab Parents: fa7e225 Author: Claus Ibsen Authored: Thu Aug 14 08:55:11 2014 +0200 Committer: Claus Ibsen Committed: Thu Aug 14 08:55:22 2014 +0200 -- .../routepolicy/MetricsRegistryService.java | 64 ++ .../metrics/routepolicy/MetricsRoutePolicy.java | 124 +++ .../routepolicy/MetricsRoutePolicyTest.java | 65 ++ 3 files changed, 253 insertions(+) -- http://git-wip-us.apache.org/repos/asf/camel/blob/c672d44b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java -- diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java new file mode 100644 index 000..efa3663 --- /dev/null +++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java @@ -0,0 +1,64 @@ +/** + * 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.metrics.routepolicy; + +import javax.management.MBeanServer; + +import com.codahale.metrics.JmxReporter; +import com.codahale.metrics.MetricRegistry; +import org.apache.camel.CamelContext; +import org.apache.camel.CamelContextAware; +import org.apache.camel.support.ServiceSupport; + +public final class MetricsRegistryService extends ServiceSupport implements CamelContextAware { + +private CamelContext camelContext; +private MetricRegistry registry; +private JmxReporter reporter; + +public MetricRegistry getRegistry() { +return registry; +} + +public CamelContext getCamelContext() { +return camelContext; +} + +public void setCamelContext(CamelContext camelContext) { +this.camelContext = camelContext; +} + +@Override +protected void doStart() throws Exception { +registry = new MetricRegistry(); + +MBeanServer server = getCamelContext().getManagementStrategy().getManagementAgent().getMBeanServer(); +if (server != null) { +String domain = "org.apache.camel.metrics." + getCamelContext().getManagementName(); +reporter = JmxReporter.forRegistry(registry).registerWith(server).inDomain(domain).build(); +reporter.start(); +} +} + +@Override +protected void doStop() throws Exception { +if (reporter != null) { +reporter.stop(); +reporter = null; +} +} +} http://git-wip-us.apache.org/repos/asf/camel/blob/c672d44b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java -- diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java new file mode 100644 index 000..f194ccb --- /dev/null +++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java @@ -0,0 +1,124 @@ +/** + * 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 t
[3/3] git commit: Polished
Polished Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/76c39dcb Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/76c39dcb Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/76c39dcb Branch: refs/heads/master Commit: 76c39dcbe1226be9ed995f7a807702cb965e1208 Parents: b2c3b31 Author: Claus Ibsen Authored: Wed Aug 13 16:16:34 2014 +0200 Committer: Claus Ibsen Committed: Thu Aug 14 08:55:22 2014 +0200 -- .../apache/camel/processor/binding/RestBindingProcessor.java| 5 - 1 file changed, 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/76c39dcb/camel-core/src/main/java/org/apache/camel/processor/binding/RestBindingProcessor.java -- diff --git a/camel-core/src/main/java/org/apache/camel/processor/binding/RestBindingProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/binding/RestBindingProcessor.java index ec1af34..429c005 100644 --- a/camel-core/src/main/java/org/apache/camel/processor/binding/RestBindingProcessor.java +++ b/camel-core/src/main/java/org/apache/camel/processor/binding/RestBindingProcessor.java @@ -41,11 +41,6 @@ import org.apache.camel.util.ObjectHelper; */ public class RestBindingProcessor extends ServiceSupport implements AsyncProcessor { -// TODO: consumes/produces can be a list of media types, and prioritized 1st to last. (eg the q=weight option) -// TODO: use content-type from produces/consumes if possible to set as Content-Type if missing - -// text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 - private final AsyncProcessor jsonUnmarshal; private final AsyncProcessor xmlUnmarshal; private final AsyncProcessor jsonMarshal;
svn commit: r919290 - in /websites/production/camel/content: cache/main.pageCache http4.html
Author: buildbot Date: Thu Aug 14 02:17:49 2014 New Revision: 919290 Log: Production update by buildbot for camel Modified: websites/production/camel/content/cache/main.pageCache websites/production/camel/content/http4.html Modified: websites/production/camel/content/cache/main.pageCache == Binary files - no diff available. Modified: websites/production/camel/content/http4.html == --- websites/production/camel/content/http4.html (original) +++ websites/production/camel/content/http4.html Thu Aug 14 02:17:49 2014 @@ -110,7 +110,7 @@ You can only produce to endpoints generated by the HTTP4 component. Therefore it should never be used as input into your Camel Routes. To bind/expose an HTTP endpoint via a HTTP server as input to a Camel route, use the Jetty Component instead. -HttpComponent OptionsNameDefault ValueDescriptionmaxTotalConnections200The maximum number of connections.connectionsPerRoute20The maximum number of connections per route.cookieStorenullCamel 2.11.2/2.12.0: To use a custom org.apache.http.client.CookieStore. By default the org.apache.http.impl.client.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookies shouldn't be stored as we are just bridging (eg acting as a proxy).httpClientConfigurernullReference to a org.apache.camel.component.http.HttpClientConfigurer in the Registry.clientConnecti onManagernullTo use a custom org.apache.http.conn.ClientConnectionManager.httpBindingnullTo use a custom org.apache.camel.component.http.HttpBinding.httpContextnullCamel 2.9.2: To use a custom org.apache.http.protocol.HttpContext when executing requests.sslContextParametersnullCamel 2.8: To use a custom org.apache.camel.util.jsse.SSLContextParameters. See Using the JSSE Configuration Utility. Important: Only one instance of org.apache.camel.util.jsse.SSLContextParameters is supported per HttpComponent. If you need to use 2 or more different instances, you need to define a new HttpComponent per instance you need. See further below for more details.x509HostnameVerifierBrowserCompatHostnameVerifierCamel 2.7: You can refer to a different org.apache.http.conn.ssl.X509H ostnameVerifier instance in the Registry such as org.apache.http.conn.ssl.StrictHostnameVerifier or org.apache.http.conn.ssl.AllowAllHostnameVerifier.connectionTimeToLive-1Camel 2.11.0: The time for connection to live, the time unit is millisecond, the default value is always keep alive.authenticationPreemptivefalseCamel 2.11.3/2.12.2: If this option is true, camel-http4 sends preemptive basic authentication to the server.HttpEndpoint OptionsNameDefault ValueDescriptionthrowExceptionOnFailuretrueOption to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code.bridgeEndpointfalseIf true, HttpProducer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the throwExcpetionOnFailure to be false to let the HttpProducer send all fault responses back. Also if set to true HttpProducer and CamelServlet will skip the gzip processing if the content-encoding is "gzip".clearExpiredCookiestrueCamel 2.11.2/2.12.0: Whether to clear expired cookies before sending the HTTP request. This ensures the cookies store does not keep growing by adding new cookies which is newer removed when they are expired.cookieStorenull< /code>Camel 2.11.2/2.12.0: To use a custom org.apache.http.client.CookieStore. By default the org.apache.http.impl.client.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookies shouldn't be stored as we are just bridging (eg acting as a proxy).disableStreamCachefalseDefaultHttpBinding will copy the request input stream into a stream cache and put it into the message body if this option is false to support multiple reads, otherwise DefaultHttpBinding will set the request input stream directly in the message body.headerFilterStrategynullCamel 2.10.4: Reference to a instance of org.apache.camel.spi.HeaderFilterStrategy in the Registry. It will be used to apply the custom headerFilterStrategy on the new create HttpEndpoint.httpBindingRefnullDeprecated and will be removed in Camel 3.0: Reference to a org.apache.camel.component.http.HttpBinding in the Registry. Use the httpBinding option instead.httpBindingnullTo use a custom org.apache.camel.component.http.HttpBinding.httpClientConfigurerRefnullDeprecated and will be removed in Camel 3.0: Reference to a org.apache.camel.component.http.HttpClientConf
[1/2] git commit: Fix for CAMEL-7694 Eliminated race condition which caused intermittent test failures
Repository: camel Updated Branches: refs/heads/camel-2.12.x c0490006f -> c8c747429 refs/heads/camel-2.13.x a174e0d6e -> 7779ceeca Fix for CAMEL-7694 Eliminated race condition which caused intermittent test failures Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7779ceec Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7779ceec Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7779ceec Branch: refs/heads/camel-2.13.x Commit: 7779ceecae2ee2a4848c43bca7ead4e23421acf2 Parents: a174e0d Author: Kevin Earls Authored: Wed Aug 13 19:42:00 2014 +0200 Committer: Willem Jiang Committed: Thu Aug 14 10:14:46 2014 +0800 -- .../restlet/example/RestletGroovyIssueTest.java | 23 ++-- 1 file changed, 16 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/7779ceec/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java -- diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java index 2803ac9..68f68f4 100644 --- a/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java +++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java @@ -16,39 +16,48 @@ */ package org.apache.camel.itest.restlet.example; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.test.AvailablePortFinder; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @version */ public class RestletGroovyIssueTest extends CamelTestSupport { - +protected static final Logger LOG = LoggerFactory.getLogger(RestletGroovyIssueTest.class); private long port = AvailablePortFinder.getNextAvailable(16000); private ExecutorService executorService = Executors.newFixedThreadPool(5); @Test public void testRestletGroovy() throws Exception { -getMockEndpoint("mock:input").expectedMessageCount(10); -getMockEndpoint("mock:output").expectedBodiesReceivedInAnyOrder("0", "1", "2", "3", "4", "5", "6", "7", "8", "9"); - -for (int i = 0; i < 10; i++) { -final Integer num = i; +String[] bodies = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; +List expectedBodies = Arrays.asList(bodies); +final CountDownLatch responsesToReceive = new CountDownLatch(expectedBodies.size()); + getMockEndpoint("mock:input").expectedMessageCount(expectedBodies.size()); + getMockEndpoint("mock:output").expectedBodiesReceivedInAnyOrder(expectedBodies); + +for (final String s : expectedBodies) { executorService.submit(new Runnable() { @Override public void run() { -String s = "" + num; Object response = template.requestBody("restlet:http://localhost:"; + port + "/foo/" + s + "?restletMethod=GET", ""); assertEquals(s, response); +responsesToReceive.countDown(); }; }); } +responsesToReceive.await(5, TimeUnit.SECONDS); assertMockEndpointsSatisfied(); executorService.shutdownNow();
[2/2] git commit: Fix for CAMEL-7694 Eliminated race condition which caused intermittent test failures
Fix for CAMEL-7694 Eliminated race condition which caused intermittent test failures Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c8c74742 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c8c74742 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c8c74742 Branch: refs/heads/camel-2.12.x Commit: c8c7474291fa6265f804c37ed21e20ca64d19198 Parents: c049000 Author: Kevin Earls Authored: Wed Aug 13 19:42:00 2014 +0200 Committer: Willem Jiang Committed: Thu Aug 14 10:14:57 2014 +0800 -- .../restlet/example/RestletGroovyIssueTest.java | 23 ++-- 1 file changed, 16 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/c8c74742/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java -- diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java index 2803ac9..68f68f4 100644 --- a/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java +++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java @@ -16,39 +16,48 @@ */ package org.apache.camel.itest.restlet.example; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.test.AvailablePortFinder; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @version */ public class RestletGroovyIssueTest extends CamelTestSupport { - +protected static final Logger LOG = LoggerFactory.getLogger(RestletGroovyIssueTest.class); private long port = AvailablePortFinder.getNextAvailable(16000); private ExecutorService executorService = Executors.newFixedThreadPool(5); @Test public void testRestletGroovy() throws Exception { -getMockEndpoint("mock:input").expectedMessageCount(10); -getMockEndpoint("mock:output").expectedBodiesReceivedInAnyOrder("0", "1", "2", "3", "4", "5", "6", "7", "8", "9"); - -for (int i = 0; i < 10; i++) { -final Integer num = i; +String[] bodies = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; +List expectedBodies = Arrays.asList(bodies); +final CountDownLatch responsesToReceive = new CountDownLatch(expectedBodies.size()); + getMockEndpoint("mock:input").expectedMessageCount(expectedBodies.size()); + getMockEndpoint("mock:output").expectedBodiesReceivedInAnyOrder(expectedBodies); + +for (final String s : expectedBodies) { executorService.submit(new Runnable() { @Override public void run() { -String s = "" + num; Object response = template.requestBody("restlet:http://localhost:"; + port + "/foo/" + s + "?restletMethod=GET", ""); assertEquals(s, response); +responsesToReceive.countDown(); }; }); } +responsesToReceive.await(5, TimeUnit.SECONDS); assertMockEndpointsSatisfied(); executorService.shutdownNow();
git commit: Fix for CAMEL-7694 Eliminated race condition which caused intermittent test failures
Repository: camel Updated Branches: refs/heads/master 343dd7733 -> b2c3b31bb Fix for CAMEL-7694 Eliminated race condition which caused intermittent test failures Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b2c3b31b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b2c3b31b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b2c3b31b Branch: refs/heads/master Commit: b2c3b31bba3191aa193cbb672b5d353fd2818ed2 Parents: 343dd77 Author: Kevin Earls Authored: Wed Aug 13 19:42:00 2014 +0200 Committer: Kevin Earls Committed: Wed Aug 13 19:42:34 2014 +0200 -- .../restlet/example/RestletGroovyIssueTest.java | 23 ++-- 1 file changed, 16 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/b2c3b31b/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java -- diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java index 2803ac9..68f68f4 100644 --- a/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java +++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/restlet/example/RestletGroovyIssueTest.java @@ -16,39 +16,48 @@ */ package org.apache.camel.itest.restlet.example; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.test.AvailablePortFinder; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @version */ public class RestletGroovyIssueTest extends CamelTestSupport { - +protected static final Logger LOG = LoggerFactory.getLogger(RestletGroovyIssueTest.class); private long port = AvailablePortFinder.getNextAvailable(16000); private ExecutorService executorService = Executors.newFixedThreadPool(5); @Test public void testRestletGroovy() throws Exception { -getMockEndpoint("mock:input").expectedMessageCount(10); -getMockEndpoint("mock:output").expectedBodiesReceivedInAnyOrder("0", "1", "2", "3", "4", "5", "6", "7", "8", "9"); - -for (int i = 0; i < 10; i++) { -final Integer num = i; +String[] bodies = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; +List expectedBodies = Arrays.asList(bodies); +final CountDownLatch responsesToReceive = new CountDownLatch(expectedBodies.size()); + getMockEndpoint("mock:input").expectedMessageCount(expectedBodies.size()); + getMockEndpoint("mock:output").expectedBodiesReceivedInAnyOrder(expectedBodies); + +for (final String s : expectedBodies) { executorService.submit(new Runnable() { @Override public void run() { -String s = "" + num; Object response = template.requestBody("restlet:http://localhost:"; + port + "/foo/" + s + "?restletMethod=GET", ""); assertEquals(s, response); +responsesToReceive.countDown(); }; }); } +responsesToReceive.await(5, TimeUnit.SECONDS); assertMockEndpointsSatisfied(); executorService.shutdownNow();
[CONF] Apache Camel > HTTP4
willem jiang edited the page: HTTP4 ... Name Default Value Description maxTotalConnections 200 The maximum number of connections. connectionsPerRoute 20 The maximum number of connections per route. cookieStore null Camel 2.11.2/2.12.0: To use a custom org.apache.http.client.CookieStore. By default the org.apache.http.impl.client.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookies shouldn't be stored as we are just bridging (eg acting as a proxy). httpClientConfigurer null Reference to a org.apache.camel.component.http.HttpClientConfigurer in the Registry. clientConnectionManager null To use a custom org.apache.http.conn.ClientConnectionManager. httpBinding null To use a custom org.apache.camel.component.http.HttpBinding. httpContext null Camel 2.9.2: To use a custom org.apache.http.protocol.HttpContext when executing requests.
[1/2] git commit: Use jaxws21 frontend for code generation to make sure the generated code compiles fine for each of the variouis JDK versions
Repository: camel Updated Branches: refs/heads/master e8e2a511a -> 343dd7733 Use jaxws21 frontend for code generation to make sure the generated code compiles fine for each of the variouis JDK versions Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8e7d44f9 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8e7d44f9 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8e7d44f9 Branch: refs/heads/master Commit: 8e7d44f9a3af06fad050518c49fd3ca1baaf9628 Parents: e8e2a51 Author: Daniel Kulp Authored: Wed Aug 13 11:53:39 2014 -0400 Committer: Daniel Kulp Committed: Wed Aug 13 11:56:37 2014 -0400 -- tests/camel-itest/pom.xml | 6 ++ 1 file changed, 6 insertions(+) -- http://git-wip-us.apache.org/repos/asf/camel/blob/8e7d44f9/tests/camel-itest/pom.xml -- diff --git a/tests/camel-itest/pom.xml b/tests/camel-itest/pom.xml index c492a56..8ef809b 100644 --- a/tests/camel-itest/pom.xml +++ b/tests/camel-itest/pom.xml @@ -390,10 +390,16 @@ ${basedir}/target/generated/src/test/java + jaxws21 ${basedir}/src/test/resources/wsdl/CustomerService-1.0.0.wsdl +jaxws21 + ${basedir}/src/test/resources/wsdl/CustomerService_noSoapAction.wsdl + + ${basedir}/src/test/resources/wsdl/hello_world.wsdl + jaxws21 ${basedir}/src/test/resources/wsdl/binding.xml
[2/2] git commit: Update to new scala plugin builders/natures
Update to new scala plugin builders/natures Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/343dd773 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/343dd773 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/343dd773 Branch: refs/heads/master Commit: 343dd7733b9b15199ddd2c3de26742df089964ef Parents: 8e7d44f Author: Daniel Kulp Authored: Wed Aug 13 12:15:37 2014 -0400 Committer: Daniel Kulp Committed: Wed Aug 13 12:15:37 2014 -0400 -- components/camel-swagger/pom.xml | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/343dd773/components/camel-swagger/pom.xml -- diff --git a/components/camel-swagger/pom.xml b/components/camel-swagger/pom.xml index e55c542..9997f98 100644 --- a/components/camel-swagger/pom.xml +++ b/components/camel-swagger/pom.xml @@ -44,7 +44,9 @@ camel-core - + org.springframework spring-web @@ -140,14 +142,14 @@ maven-eclipse-plugin -ch.epfl.lamp.sdt.core.scalanature +org.scala-ide.sdt.core.scalanature org.eclipse.jdt.core.javanature -ch.epfl.lamp.sdt.core.scalabuilder +org.scala-ide.sdt.core.scalabuilder - ch.epfl.lamp.sdt.launching.SCALA_CONTAINER + org.scala-ide.sdt.launching.SCALA_CONTAINER org.eclipse.jdt.launching.JRE_CONTAINER
[2/3] git commit: Fix a bunch of checkstyle issues in camel-linkedin
Fix a bunch of checkstyle issues in camel-linkedin Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b144cffb Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b144cffb Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b144cffb Branch: refs/heads/master Commit: b144cffb2bc2f24d8a1379f6898c7f38e3fda998 Parents: 70334b8 Author: Daniel Kulp Authored: Wed Aug 13 11:41:50 2014 -0400 Committer: Daniel Kulp Committed: Wed Aug 13 11:41:50 2014 -0400 -- .../component/linkedin/api/DoubleAdapter.java | 3 +- .../component/linkedin/api/LongAdapter.java | 3 +- .../api/AbstractResourceIntegrationTest.java| 4 +- .../internal/LinkedInPropertiesHelper.java | 2 +- .../linkedin/AbstractLinkedInTestSupport.java | 16 .../CommentsResourceIntegrationTest.java| 27 -- .../CompaniesResourceIntegrationTest.java | 53 .../linkedin/GroupsResourceIntegrationTest.java | 25 +- .../linkedin/JobsResourceIntegrationTest.java | 30 +-- .../linkedin/PeopleResourceIntegrationTest.java | 87 .../linkedin/PostsResourceIntegrationTest.java | 34 ++-- .../linkedin/SearchResourceIntegrationTest.java | 27 -- 12 files changed, 221 insertions(+), 90 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/b144cffb/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/DoubleAdapter.java -- diff --git a/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/DoubleAdapter.java b/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/DoubleAdapter.java index 029681a..05a1a8e 100644 --- a/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/DoubleAdapter.java +++ b/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/DoubleAdapter.java @@ -18,8 +18,7 @@ package org.apache.camel.component.linkedin.api; import javax.xml.bind.annotation.adapters.XmlAdapter; -public class DoubleAdapter extends XmlAdapter -{ +public class DoubleAdapter extends XmlAdapter { public Double unmarshal(String value) { return javax.xml.bind.DatatypeConverter.parseDouble(value); http://git-wip-us.apache.org/repos/asf/camel/blob/b144cffb/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LongAdapter.java -- diff --git a/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LongAdapter.java b/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LongAdapter.java index 3fe63cc..9288108 100644 --- a/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LongAdapter.java +++ b/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LongAdapter.java @@ -18,8 +18,7 @@ package org.apache.camel.component.linkedin.api; import javax.xml.bind.annotation.adapters.XmlAdapter; -public class LongAdapter extends XmlAdapter -{ +public class LongAdapter extends XmlAdapter { public Long unmarshal(String value) { return new Long(value); http://git-wip-us.apache.org/repos/asf/camel/blob/b144cffb/components/camel-linkedin/camel-linkedin-api/src/test/java/org/apache/camel/component/linkedin/api/AbstractResourceIntegrationTest.java -- diff --git a/components/camel-linkedin/camel-linkedin-api/src/test/java/org/apache/camel/component/linkedin/api/AbstractResourceIntegrationTest.java b/components/camel-linkedin/camel-linkedin-api/src/test/java/org/apache/camel/component/linkedin/api/AbstractResourceIntegrationTest.java index 1d4c536..d8f474e 100644 --- a/components/camel-linkedin/camel-linkedin-api/src/test/java/org/apache/camel/component/linkedin/api/AbstractResourceIntegrationTest.java +++ b/components/camel-linkedin/camel-linkedin-api/src/test/java/org/apache/camel/component/linkedin/api/AbstractResourceIntegrationTest.java @@ -102,8 +102,8 @@ public class AbstractResourceIntegrationTest extends Assert { protected static T getResource(Class resourceClass) { if (requestFilter == null) { -throw new IllegalStateException(AbstractResourceIntegrationTest.class.getName() + -".beforeClass must be invoked before getResource"); +throw new IllegalStateException(AbstractResourceIntegrationTest.class.getName() +
[1/3] git commit: Add a profile to start working on full Jetty9 support
Repository: camel Updated Branches: refs/heads/master c631bc624 -> e8e2a511a Add a profile to start working on full Jetty9 support Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/70334b83 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/70334b83 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/70334b83 Branch: refs/heads/master Commit: 70334b832b075cb11624197bfa28c5d2793cab71 Parents: c631bc6 Author: Daniel Kulp Authored: Wed Aug 13 11:36:19 2014 -0400 Committer: Daniel Kulp Committed: Wed Aug 13 11:36:19 2014 -0400 -- parent/pom.xml | 14 +++--- 1 file changed, 11 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/70334b83/parent/pom.xml -- diff --git a/parent/pom.xml b/parent/pom.xml index 8f4f2e3..8066699 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -226,10 +226,11 @@ 1.1_4 1.1.3 2.1.0_1 -8.1.14.v20131031 6.1.26_4 6.1.26 -9.2.1.v20140609 +8.1.15.v20140411 +9.2.2.v20140723 +${jetty8-version} 1.3.5 2.4.2_4 2.4.2 @@ -475,7 +476,7 @@ org.apache.commons.httpclient.*;version="[3.1,4.0)", org.apache.velocity.*;version="[1.6.2,2)", org.apache.xmlbeans.*;version="[2.4,3)", - org.eclipse.jetty.*;version="[7.5,8.2)", + org.eclipse.jetty.*;version="[7.5,10)", com.thoughtworks.xstream.*;version="[1.3,2)", org.antlr.stringtemplate.*;version="[3.0,4)", org.jivesoftware.smack.*;version="[3.0,4)", @@ -2863,6 +2864,13 @@ +jetty9 + +${jetty9-version} + + + + jdk1.7 1.7
[3/3] git commit: Fix camel-linkedin-api to not reference stuff outside it's component so it can be pulled into eclipse
Fix camel-linkedin-api to not reference stuff outside it's component so it can be pulled into eclipse Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e8e2a511 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e8e2a511 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e8e2a511 Branch: refs/heads/master Commit: e8e2a511a18dde0d2102a9f87fe165c203890552 Parents: b144cff Author: Daniel Kulp Authored: Wed Aug 13 11:47:47 2014 -0400 Committer: Daniel Kulp Committed: Wed Aug 13 11:47:47 2014 -0400 -- .../camel-linkedin/camel-linkedin-api/pom.xml | 9 - .../src/test/resources/log4j.properties | 36 .../src/test/resources/test-options.properties | 28 +++ 3 files changed, 64 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/e8e2a511/components/camel-linkedin/camel-linkedin-api/pom.xml -- diff --git a/components/camel-linkedin/camel-linkedin-api/pom.xml b/components/camel-linkedin/camel-linkedin-api/pom.xml index 9ef96ad..381b40c 100644 --- a/components/camel-linkedin/camel-linkedin-api/pom.xml +++ b/components/camel-linkedin/camel-linkedin-api/pom.xml @@ -105,15 +105,6 @@ - - -${project.basedir}/src/test/resources - - - ${project.basedir}/../camel-linkedin-component/src/test/resources - - - http://git-wip-us.apache.org/repos/asf/camel/blob/e8e2a511/components/camel-linkedin/camel-linkedin-api/src/test/resources/log4j.properties -- diff --git a/components/camel-linkedin/camel-linkedin-api/src/test/resources/log4j.properties b/components/camel-linkedin/camel-linkedin-api/src/test/resources/log4j.properties new file mode 100644 index 000..fb1d365 --- /dev/null +++ b/components/camel-linkedin/camel-linkedin-api/src/test/resources/log4j.properties @@ -0,0 +1,36 @@ +# +# 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. +# + +# +# The logging properties used for testing. +# +log4j.rootLogger=INFO, file + +# uncomment the following line to turn on component debug messages +#log4j.logger.org.apache.camel.component.linkedin=DEBUG + +# CONSOLE appender not used by default +log4j.appender.out=org.apache.log4j.ConsoleAppender +log4j.appender.out.layout=org.apache.log4j.PatternLayout +#log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n +log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n + +# File appender +log4j.appender.file=org.apache.log4j.FileAppender +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n +log4j.appender.file.file=target/camel-linkedin-test.log http://git-wip-us.apache.org/repos/asf/camel/blob/e8e2a511/components/camel-linkedin/camel-linkedin-api/src/test/resources/test-options.properties -- diff --git a/components/camel-linkedin/camel-linkedin-api/src/test/resources/test-options.properties b/components/camel-linkedin/camel-linkedin-api/src/test/resources/test-options.properties new file mode 100644 index 000..4bb03f0 --- /dev/null +++ b/components/camel-linkedin/camel-linkedin-api/src/test/resources/test-options.properties @@ -0,0 +1,28 @@ +# +# 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"
git commit: Update to get the setup.eclipse target working again
Repository: camel Updated Branches: refs/heads/master 25740b0e4 -> c631bc624 Update to get the setup.eclipse target working again Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c631bc62 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c631bc62 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c631bc62 Branch: refs/heads/master Commit: c631bc6241a8e8a0757e69bc7ccdeda96565d90f Parents: 25740b0 Author: Daniel Kulp Authored: Wed Aug 13 11:19:24 2014 -0400 Committer: Daniel Kulp Committed: Wed Aug 13 11:27:14 2014 -0400 -- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/c631bc62/pom.xml -- diff --git a/pom.xml b/pom.xml index f9c757c..78fe4fd 100755 --- a/pom.xml +++ b/pom.xml @@ -245,9 +245,10 @@ files for modules --> ${basedir}/../workspace +true -process-test-sources +package
svn commit: r919246 [3/3] - in /websites/production/camel/content: ./ cache/
Modified: websites/production/camel/content/component-list.html == --- websites/production/camel/content/component-list.html (original) +++ websites/production/camel/content/component-list.html Wed Aug 13 14:18:28 2014 @@ -338,7 +338,9 @@ disruptor-vm:someName[?
svn commit: r919246 [2/3] - in /websites/production/camel/content: ./ cache/
Modified: websites/production/camel/content/component-list-grouped.html == --- websites/production/camel/content/component-list-grouped.html (original) +++ websites/production/camel/content/component-list-grouped.html Wed Aug 13 14:18:28 2014 @@ -84,967 +84,489 @@ -An informal grouping of Camel components. - -This list was refined from the main components page in support of establishing information for the following poster: - -The Apache Camel Components Poster (http://gliesian.com/camel/ApacheCamelComponents.pdf"; rel="nofollow">PDF, http://gliesian.com/camel/ApacheCamelComponentsCropMarksAndBleed.pdf"; rel="nofollow">PDF w/ crops and bleed, http://gliesian.com/camel/ApacheCamelComponents.jpg"; rel="nofollow">JPG image, http://fineartamerica.com/featured/apache-camel-components-poster-gliesian-llc.html"; rel="nofollow">Printed) by Gliesian LLC. (October, 2013) - - -Automating Tasks - - - Component / ArtifactId / URI Description Timer / camel-core - - - Used to generate message exchanges when a timer fires. Events can only be consumed from this endpoint. Quartz / camel-quartz - - - Provides a scheduled delivery of messages using the http://www.quartz-scheduler.org/"; rel="nofollow">Quartz 1.x scheduler. Quartz2 / camel-quartz2 - -An informal grouping of Camel components.
This list was refined from the main components page in support of establishing information for the following poster:
- The Apache Camel Components Poster (http://gliesian.com/camel/ApacheCamelComponents.pdf"; rel="nofollow">PDF, http://gliesian.com/camel/ApacheCamelComponentsCropMarksAndBleed.pdf"; rel="nofollow">PDF w/ crops and bleed, http://gliesian.com/camel/ApacheCamelComponents.jpg"; rel="nofollow">JPG image, http://fineartamerica.com/featured/apache-camel-components-poster-gliesian-llc.html"; rel="nofollow">Printed) by Gliesian LLC. (October, 2013)
Automating Tasks
colspan="1" rowspan="1" class="confluenceTh"> Component / ArtifactId / >URI
class="confluenceTh"> Description
rowspan="1" class="confluenceTd"> href="timer.html">Timer / camel-core
style="border-width: 1px;">+