You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/04/07 09:40:00 UTC

[10/10] camel git commit: CAMEL-9789: Avoid starting services to soon during CamelContext startup, that can trigger circular dependencies issue with Spring and similar IoC frameworks.

CAMEL-9789: Avoid starting services to soon during CamelContext startup, that can trigger circular dependencies issue with Spring and similar IoC frameworks.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/171faa0e
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/171faa0e
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/171faa0e

Branch: refs/heads/master
Commit: 171faa0e9e3c40314c0a214484c9611697e31ab8
Parents: bd137a2
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Apr 6 19:31:52 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Apr 7 09:39:40 2016 +0200

----------------------------------------------------------------------
 .../ibatis/IBatisUnknownStatementTypeTest.java  |  8 +--
 .../component/jgroups/JGroupsComponentTest.java |  8 +--
 .../src/test/resources/log4j.properties         |  4 +-
 .../metrics/routepolicy/MetricsRoutePolicy.java |  8 +++
 .../component/mina/MinaSendToProcessorTest.java |  3 +-
 .../component/mina2/Mina2EncodingTest.java      |  6 ++-
 .../mina2/Mina2SendToProcessorTest.java         |  3 +-
 .../mongodb/MongoDbTailableCursorConsumer.java  |  2 +-
 .../mongodb/MongoDbTailingProcess.java          | 52 ++++++++++++--------
 .../mongodb/MongoDbOutputTypeTest.java          |  8 +--
 .../MyBatisUnknownStatementTypeTest.java        |  7 ++-
 .../xslt/SaxonInvalidXsltFileTest.java          | 10 ++--
 .../sjms/batch/SjmsBatchEndpointTest.java       |  5 +-
 .../component/snmp/UriConfigurationTest.java    |  6 +++
 .../spring/batch/SpringBatchEndpointTest.java   |  2 +-
 .../component/xmlrpc/XmlRpcEndpointTest.java    |  4 ++
 16 files changed, 79 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-ibatis/src/test/java/org/apache/camel/component/ibatis/IBatisUnknownStatementTypeTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ibatis/src/test/java/org/apache/camel/component/ibatis/IBatisUnknownStatementTypeTest.java b/components/camel-ibatis/src/test/java/org/apache/camel/component/ibatis/IBatisUnknownStatementTypeTest.java
index ff35335..f7dc044 100644
--- a/components/camel-ibatis/src/test/java/org/apache/camel/component/ibatis/IBatisUnknownStatementTypeTest.java
+++ b/components/camel-ibatis/src/test/java/org/apache/camel/component/ibatis/IBatisUnknownStatementTypeTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.component.ibatis;
 
-import org.apache.camel.FailedToCreateProducerException;
+import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
@@ -39,9 +39,9 @@ public class IBatisUnknownStatementTypeTest extends CamelTestSupport {
         try {
             context.start();
             fail("Should have thrown exception");
-        } catch (FailedToCreateProducerException e) {
-            assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
-            assertEquals("statementType must be specified on: Endpoint[ibatis://selectAllAccounts]", e.getCause().getMessage());
+        } catch (FailedToCreateRouteException e) {
+            assertIsInstanceOf(IllegalArgumentException.class, e.getCause().getCause());
+            assertEquals("statementType must be specified on: Endpoint[ibatis://selectAllAccounts]", e.getCause().getCause().getMessage());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentTest.java b/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentTest.java
index 8e423ec..c10008d 100644
--- a/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentTest.java
+++ b/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentTest.java
@@ -47,13 +47,13 @@ public class JGroupsComponentTest extends CamelTestSupport {
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
-        JGroupsComponent defaultComponent = new JGroupsComponent();
-        defaultComponent.setChannel(defaultComponentChannel);
-        context().addComponent("my-default-jgroups", defaultComponent);
-
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
+                JGroupsComponent defaultComponent = new JGroupsComponent();
+                defaultComponent.setChannel(defaultComponentChannel);
+                context().addComponent("my-default-jgroups", defaultComponent);
+
                 from("my-default-jgroups:" + CLUSTER_NAME).to("mock:default");
                 from(CONFIGURED_ENDPOINT_URI).to("mock:configured");
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-jgroups/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/test/resources/log4j.properties b/components/camel-jgroups/src/test/resources/log4j.properties
index 5109305..1a5fe15 100644
--- a/components/camel-jgroups/src/test/resources/log4j.properties
+++ b/components/camel-jgroups/src/test/resources/log4j.properties
@@ -20,7 +20,7 @@
 #
 log4j.rootLogger=INFO, file
 
-#log4j.logger.org.apache.camel.component.rcode=DEBUG
+#log4j.logger.org.apache.camel.component.jgroups=DEBUG
 
 # CONSOLE appender not used by default
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
@@ -31,5 +31,5 @@ log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} -
 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-rcode-test.log
+log4j.appender.file.file=target/camel-jgroups-test.log
 log4j.appender.file.append=true

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/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 bb6c1e9..f39b33d 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
@@ -26,6 +26,7 @@ import org.apache.camel.NonManagedService;
 import org.apache.camel.Route;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.ServiceHelper;
 
 /**
  * A {@link org.apache.camel.spi.RoutePolicy} which gathers statistics and reports them using {@link com.codahale.metrics.MetricRegistry}.
@@ -150,6 +151,13 @@ public class MetricsRoutePolicy extends RoutePolicySupport implements NonManaged
             throw ObjectHelper.wrapRuntimeCamelException(e);
         }
 
+        // ensure registry service is started
+        try {
+            ServiceHelper.startService(registryService);
+        } catch (Exception e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
+
         // create statistics holder
         // for know we record only all the timings of a complete exchange (responses)
         // we have in-flight / total statistics already from camel-core

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaSendToProcessorTest.java
----------------------------------------------------------------------
diff --git a/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaSendToProcessorTest.java b/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaSendToProcessorTest.java
index a0fdd74..0d248c4 100644
--- a/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaSendToProcessorTest.java
+++ b/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaSendToProcessorTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.mina;
 
-import org.apache.camel.FailedToCreateProducerException;
 import org.apache.camel.builder.RouteBuilder;
 import org.junit.Test;
 
@@ -34,7 +33,7 @@ public class MinaSendToProcessorTest extends BaseMinaTest {
         try {
             context.start();
             fail("Should have thrown an exception");
-        } catch (FailedToCreateProducerException e) {
+        } catch (Exception e) {
             // expected
         }
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2EncodingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2EncodingTest.java b/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2EncodingTest.java
index f6130c1..63328d5 100644
--- a/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2EncodingTest.java
+++ b/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2EncodingTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.mina2;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.builder.RouteBuilder;
@@ -194,8 +195,9 @@ public class Mina2EncodingTest extends BaseMina2Test {
                 }
             });
             fail("Should have thrown a ResolveEndpointFailedException due invalid encoding parameter");
-        } catch (IllegalArgumentException e) {
-            // We were suppose to get here.
+        } catch (FailedToCreateRouteException e) {
+            IllegalArgumentException iae = assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
+            assertEquals("The encoding: XXX is not supported", iae.getMessage());
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SendToProcessorTest.java
----------------------------------------------------------------------
diff --git a/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SendToProcessorTest.java b/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SendToProcessorTest.java
index 0ce99df..5dddd85 100644
--- a/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SendToProcessorTest.java
+++ b/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SendToProcessorTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.mina2;
 
-import org.apache.camel.FailedToCreateProducerException;
 import org.apache.camel.builder.RouteBuilder;
 import org.junit.Test;
 
@@ -35,7 +34,7 @@ public class Mina2SendToProcessorTest extends BaseMina2Test {
         try {
             context.start();
             fail("Should have thrown an exception");
-        } catch (FailedToCreateProducerException e) {
+        } catch (Exception e) {
             // expected
         }
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailableCursorConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailableCursorConsumer.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailableCursorConsumer.java
index ca72bfc..212a720 100644
--- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailableCursorConsumer.java
+++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailableCursorConsumer.java
@@ -41,7 +41,7 @@ public class MongoDbTailableCursorConsumer extends DefaultConsumer {
             tailingProcess.stop();
         }
         if (executor != null) {
-            executor.shutdown();
+            endpoint.getCamelContext().getExecutorServiceManager().shutdown(executor);
             executor = null;
         }
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java
----------------------------------------------------------------------
diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java
index 25f44d4..916f222 100644
--- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java
+++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java
@@ -17,6 +17,9 @@
 
 package org.apache.camel.component.mongodb;
 
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
 import com.mongodb.BasicDBObject;
 import com.mongodb.Bytes;
 import com.mongodb.DBCollection;
@@ -35,7 +38,7 @@ public class MongoDbTailingProcess implements Runnable {
     private static final String CAPPED_KEY = "capped";
 
     public volatile boolean keepRunning = true;
-    public volatile boolean stopped; // = false
+    private final CountDownLatch latch = new CountDownLatch(1);
     
     private final DBCollection dbCol;
     private final MongoDbEndpoint endpoint;
@@ -81,7 +84,7 @@ public class MongoDbTailingProcess implements Runnable {
             tailTracking.recoverFromStore();
             cursor = initializeCursor();
         } catch (Exception e) {
-            throw new CamelMongoDbException("Exception ocurred while initializing tailable cursor", e);
+            throw new CamelMongoDbException("Exception occurred while initializing tailable cursor", e);
         }
 
         if (cursor == null) {
@@ -95,28 +98,30 @@ public class MongoDbTailingProcess implements Runnable {
      */
     @Override
     public void run() {
-        while (keepRunning) {
-            doRun();
-            // if the previous call didn't return because we have stopped running, then regenerate the cursor
-            if (keepRunning) {
-                cursor.close();
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Regenerating cursor with lastVal: {}, waiting {}ms first", tailTracking.lastVal, cursorRegenerationDelay);
-                }
-                
-                if (cursorRegenerationDelayEnabled) {
-                    try {
-                        Thread.sleep(cursorRegenerationDelay);
-                    } catch (InterruptedException e) {
-                        LOG.error("Thread was interrupted", e);
+        try {
+            while (keepRunning) {
+                doRun();
+                // if the previous call didn't return because we have stopped running, then regenerate the cursor
+                if (keepRunning) {
+                    cursor.close();
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug("Regenerating cursor with lastVal: {}, waiting {}ms first", tailTracking.lastVal, cursorRegenerationDelay);
                     }
+
+                    if (cursorRegenerationDelayEnabled) {
+                        try {
+                            Thread.sleep(cursorRegenerationDelay);
+                        } catch (InterruptedException e) {
+                            // ignore
+                        }
+                    }
+
+                    cursor = initializeCursor();
                 }
-                    
-                cursor = initializeCursor();
             }
+        } finally {
+            latch.countDown();
         }
-        
-        stopped = true;
     }
 
     protected void stop() throws Exception {
@@ -129,10 +134,15 @@ public class MongoDbTailingProcess implements Runnable {
             cursor.close();
         }
         // wait until the main loop acknowledges the stop
-        while (!stopped) { }
+        // TODO: yikes this is not good with a endless while loop
+        // wait for stop latch
+        boolean zero = latch.await(30, TimeUnit.SECONDS);
         if (LOG.isInfoEnabled()) {
             LOG.info("Stopped MongoDB Tailable Cursor consumer, bound to collection: {}", "db: " + dbCol.getDB() + ", col: " + dbCol.getName());
         }
+        if (!zero) {
+            LOG.warn("Waited 30 seconds for MongoDB Tailable Cursor consumer to stop cleanly. Will now force stop.");
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOutputTypeTest.java
----------------------------------------------------------------------
diff --git a/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOutputTypeTest.java b/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOutputTypeTest.java
index 50c1eba..f7576bb 100644
--- a/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOutputTypeTest.java
+++ b/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOutputTypeTest.java
@@ -93,9 +93,7 @@ public class MongoDbOutputTypeTest extends AbstractMongoDbTest {
             template.getCamelContext().addRoutes(taillableRouteBuilder);
             fail("Endpoint should not be initialized with a non compatible outputType");
         } catch (Exception exception) {
-            log.debug("Exception raised during initialization", exception);
-            exception.printStackTrace();
-            assertTrue("Exception is not of type IllegalArgumentException", exception instanceof IllegalArgumentException);
+            assertTrue("Exception is not of type IllegalArgumentException", exception.getCause() instanceof IllegalArgumentException);
         }
     }
 
@@ -114,9 +112,7 @@ public class MongoDbOutputTypeTest extends AbstractMongoDbTest {
             template.getCamelContext().addRoutes(taillableRouteBuilder);
             fail("Endpoint should not be initialized with a non compatible outputType");
         } catch (Exception exception) {
-            log.debug("Exception raised during initialization", exception);
-            exception.printStackTrace();
-            assertTrue("Exception is not of type IllegalArgumentException", exception instanceof IllegalArgumentException);
+            assertTrue("Exception is not of type IllegalArgumentException", exception.getCause() instanceof IllegalArgumentException);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-mybatis/src/test/java/org/apache/camel/component/mybatis/MyBatisUnknownStatementTypeTest.java
----------------------------------------------------------------------
diff --git a/components/camel-mybatis/src/test/java/org/apache/camel/component/mybatis/MyBatisUnknownStatementTypeTest.java b/components/camel-mybatis/src/test/java/org/apache/camel/component/mybatis/MyBatisUnknownStatementTypeTest.java
index b70c22b..8af60c3 100644
--- a/components/camel-mybatis/src/test/java/org/apache/camel/component/mybatis/MyBatisUnknownStatementTypeTest.java
+++ b/components/camel-mybatis/src/test/java/org/apache/camel/component/mybatis/MyBatisUnknownStatementTypeTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.mybatis;
 
-import org.apache.camel.FailedToCreateProducerException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
@@ -39,9 +38,9 @@ public class MyBatisUnknownStatementTypeTest extends CamelTestSupport {
         try {
             context.start();
             fail("Should have thrown exception");
-        } catch (FailedToCreateProducerException e) {
-            assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
-            assertEquals("statementType must be specified on: Endpoint[mybatis://selectAllAccounts]", e.getCause().getMessage());
+        } catch (Exception e) {
+            assertIsInstanceOf(IllegalArgumentException.class, e.getCause().getCause());
+            assertEquals("statementType must be specified on: Endpoint[mybatis://selectAllAccounts]", e.getCause().getCause().getMessage());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-saxon/src/test/java/org/apache/camel/component/xslt/SaxonInvalidXsltFileTest.java
----------------------------------------------------------------------
diff --git a/components/camel-saxon/src/test/java/org/apache/camel/component/xslt/SaxonInvalidXsltFileTest.java b/components/camel-saxon/src/test/java/org/apache/camel/component/xslt/SaxonInvalidXsltFileTest.java
index e8d1dce..fe1b203 100644
--- a/components/camel-saxon/src/test/java/org/apache/camel/component/xslt/SaxonInvalidXsltFileTest.java
+++ b/components/camel-saxon/src/test/java/org/apache/camel/component/xslt/SaxonInvalidXsltFileTest.java
@@ -16,9 +16,9 @@
  */
 package org.apache.camel.component.xslt;
 
+import javax.xml.transform.TransformerException;
+
 import org.apache.camel.CamelContext;
-import org.apache.camel.FailedToCreateRouteException;
-import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.test.junit4.TestSupport;
@@ -35,16 +35,16 @@ public class SaxonInvalidXsltFileTest extends TestSupport {
             context.start();
 
             fail("Should have thrown an exception due XSL compilation error");
-        } catch (FailedToCreateRouteException e) {
+        } catch (Exception e) {
             // expected
-            assertIsInstanceOf(ResolveEndpointFailedException.class, e.getCause());
+            assertIsInstanceOf(TransformerException.class, e.getCause());
         }
     }
 
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
-                from("seda:a").to("xslt:org/apache/camel/component/xslt/invalid.xsl?transformerFactoryClass=net.sf.saxon.TransformerFactoryImpl");
+                from("seda:a").to("xslt:org/apache/camel/component/xslt/notfound.xsl?transformerFactoryClass=net.sf.saxon.TransformerFactoryImpl");
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/batch/SjmsBatchEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/batch/SjmsBatchEndpointTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/batch/SjmsBatchEndpointTest.java
index c20ba85..7a96012 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/batch/SjmsBatchEndpointTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/batch/SjmsBatchEndpointTest.java
@@ -18,7 +18,6 @@ package org.apache.camel.component.sjms.batch;
 
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.camel.CamelContext;
-import org.apache.camel.FailedToCreateProducerException;
 import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.sjms.SjmsComponent;
@@ -88,7 +87,7 @@ public class SjmsBatchEndpointTest extends CamelTestSupport {
         context.start();
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test(expected = FailedToCreateRouteException.class)
     public void testConsumerNegativePollDuration() throws Exception {
         context.addRoutes(new RouteBuilder() {
             @Override
@@ -100,7 +99,7 @@ public class SjmsBatchEndpointTest extends CamelTestSupport {
         context.start();
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test(expected = FailedToCreateRouteException.class)
     public void testConsumerNegativeConsumerCount() throws Exception {
         context.addRoutes(new RouteBuilder() {
             @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/UriConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/UriConfigurationTest.java b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/UriConfigurationTest.java
index e13893c..20ccfec 100644
--- a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/UriConfigurationTest.java
+++ b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/UriConfigurationTest.java
@@ -27,6 +27,8 @@ public class UriConfigurationTest extends Assert {
 
     @Test
     public void testTrapReceiverConfiguration() throws Exception {
+        context.start();
+
         Endpoint endpoint = context.getEndpoint("snmp:0.0.0.0:1662?protocol=udp&type=TRAP&oids=1.3.6.1.2.1.7.5.1");
         assertTrue("Endpoint not an SnmpEndpoint: " + endpoint, endpoint instanceof SnmpEndpoint);
         SnmpEndpoint snmpEndpoint = (SnmpEndpoint) endpoint;
@@ -38,6 +40,8 @@ public class UriConfigurationTest extends Assert {
 
     @Test
     public void testTrapReceiverWithoutPortConfiguration() throws Exception {
+        context.start();
+
         Endpoint endpoint = context.getEndpoint("snmp:0.0.0.0?protocol=udp&type=TRAP&oids=1.3.6.1.2.1.7.5.1");
         assertTrue("Endpoint not an SnmpEndpoint: " + endpoint, endpoint instanceof SnmpEndpoint);
         SnmpEndpoint snmpEndpoint = (SnmpEndpoint) endpoint;
@@ -49,6 +53,8 @@ public class UriConfigurationTest extends Assert {
 
     @Test
     public void testOidPollerConfiguration() throws Exception {
+        context.start();
+
         Endpoint endpoint = context.getEndpoint("snmp:127.0.0.1:1662?protocol=udp&type=POLL&oids=1.3.6.1.2.1.7.5.1");
         assertTrue("Endpoint not an SnmpEndpoint: " + endpoint, endpoint instanceof SnmpEndpoint);
         SnmpEndpoint snmpEndpoint = (SnmpEndpoint) endpoint;

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-spring-batch/src/test/java/org/apache/camel/component/spring/batch/SpringBatchEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-batch/src/test/java/org/apache/camel/component/spring/batch/SpringBatchEndpointTest.java b/components/camel-spring-batch/src/test/java/org/apache/camel/component/spring/batch/SpringBatchEndpointTest.java
index 54868ff..cb962ab 100644
--- a/components/camel-spring-batch/src/test/java/org/apache/camel/component/spring/batch/SpringBatchEndpointTest.java
+++ b/components/camel-spring-batch/src/test/java/org/apache/camel/component/spring/batch/SpringBatchEndpointTest.java
@@ -110,7 +110,7 @@ public class SpringBatchEndpointTest extends CamelTestSupport {
         mockEndpoint.expectedBodiesReceived(jobExecution);
     }
 
-    @Test(expected = UnsupportedOperationException.class)
+    @Test(expected = FailedToCreateRouteException.class)
     public void shouldThrowExceptionIfUsedAsConsumer() throws Exception {
         // When
         context().addRoutes(new RouteBuilder() {

http://git-wip-us.apache.org/repos/asf/camel/blob/171faa0e/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/XmlRpcEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/XmlRpcEndpointTest.java b/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/XmlRpcEndpointTest.java
index efee676..4eed832 100644
--- a/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/XmlRpcEndpointTest.java
+++ b/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/XmlRpcEndpointTest.java
@@ -39,6 +39,8 @@ public class XmlRpcEndpointTest extends Assert {
     // create the endpoint with parameters
     @Test
     public void testEndpointSetting() throws Exception {
+        camelContext.start();
+
         XmlRpcEndpoint endpoint = (XmlRpcEndpoint)camelContext.getEndpoint("xmlrpc:http://www.example.com?userAgent=myAgent&gzipCompressing=true&connectionTimeout=30&defaultMethodName=echo");
         XmlRpcClientConfigImpl clientConfig = endpoint.getClientConfig();
         assertEquals("Get a wrong userAgent", "myAgent", clientConfig.getUserAgent());
@@ -50,6 +52,8 @@ public class XmlRpcEndpointTest extends Assert {
     
     @Test
     public void testClientConfigurer() throws Exception {
+        camelContext.start();
+
         XmlRpcEndpoint endpoint = (XmlRpcEndpoint)camelContext.getEndpoint("xmlrpc:http://www.example.com?clientConfigurer=#myClientConfigurer");
         XmlRpcClient client = endpoint.createClient();
         assertEquals("Get a worng maxThreads", 10, client.getMaxThreads());