CAMEL-9766: camel-itest-karaf to get working on karaf 4
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ff1fb0e3 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ff1fb0e3 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ff1fb0e3 Branch: refs/heads/master Commit: ff1fb0e39cb38f5251b75702b6e232b25f1b2267 Parents: 9e7714a Author: Claus Ibsen <[email protected]> Authored: Sun Mar 27 12:46:49 2016 +0200 Committer: Claus Ibsen <[email protected]> Committed: Sun Mar 27 12:46:49 2016 +0200 ---------------------------------------------------------------------- .../java/org/apache/camel/CamelContext.java | 17 +++++++++++++++++ .../apache/camel/impl/DefaultCamelContext.java | 20 ++++++++++++++++++-- .../camel/impl/DefaultCamelContextTest.java | 20 ++++++++++++++++++++ .../camel/itest/karaf/AbstractFeatureTest.java | 3 ++- .../camel/itest/karaf/CamelBindyTest.java | 4 +++- 5 files changed, 60 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/ff1fb0e3/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 727a2b7..c7d212f 100644 --- a/camel-core/src/main/java/org/apache/camel/CamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java @@ -304,6 +304,9 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration { /** * Gets a component from the context by name. + * <p/> + * Notice the returned component will be auto-started. If you do not intend to do that + * then use {@link #getComponent(String, boolean, boolean)}. * * @param componentName the name of the component * @return the component @@ -312,6 +315,9 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration { /** * Gets a component from the context by name. + * <p/> + * Notice the returned component will be auto-started. If you do not intend to do that + * then use {@link #getComponent(String, boolean, boolean)}. * * @param name the name of the component * @param autoCreateComponents whether or not the component should @@ -321,6 +327,17 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration { Component getComponent(String name, boolean autoCreateComponents); /** + * Gets a component from the context by name. + * + * @param name the name of the component + * @param autoCreateComponents whether or not the component should + * be lazily created if it does not already exist + * @param autoStart whether to auto start the component if {@link CamelContext} is already started. + * @return the component + */ + Component getComponent(String name, boolean autoCreateComponents, boolean autoStart); + + /** * Gets a component from the context by name and specifying the expected type of component. * * @param name the name to lookup http://git-wip-us.apache.org/repos/asf/camel/blob/ff1fb0e3/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 26ddea9..65deba6 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 @@ -383,10 +383,14 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon } public Component getComponent(String name) { - return getComponent(name, autoCreateComponents); + return getComponent(name, autoCreateComponents, true); } public Component getComponent(String name, boolean autoCreateComponents) { + return getComponent(name, autoCreateComponents, true); + } + + public Component getComponent(String name, boolean autoCreateComponents, boolean autoStart) { // synchronize the look up and auto create so that 2 threads can't // concurrently auto create the same component. synchronized (components) { @@ -399,7 +403,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon component = getComponentResolver().resolveComponent(name, this); if (component != null) { addComponent(name, component); - if (isStarted() || isStarting()) { + if (autoStart && (isStarted() || isStarting())) { // If the component is looked up after the context is started, lets start it up. if (component instanceof Service) { startService((Service)component); @@ -430,6 +434,18 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon } } + public Component resolveComponent(String name) { + Component answer = hasComponent(name); + if (answer == null) { + try { + answer = getComponentResolver().resolveComponent(name, this); + } catch (Exception e) { + throw new RuntimeCamelException("Cannot resolve component: " + name, e); + } + } + return answer; + } + public Component removeComponent(String componentName) { synchronized (components) { Component oldComponent = components.remove(componentName); http://git-wip-us.apache.org/repos/asf/camel/blob/ff1fb0e3/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 3403ae4..a8add11 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 @@ -58,6 +58,26 @@ public class DefaultCamelContextTest extends TestSupport { assertNull(component); } + public void testAutoStartComponentsOff() throws Exception { + DefaultCamelContext ctx = new DefaultCamelContext(); + ctx.disableJMX(); + ctx.start(); + + BeanComponent component = (BeanComponent) ctx.getComponent("bean", true, false); + // should be stopped + assertTrue(component.getStatus().isStopped()); + } + + public void testAutoStartComponentsOn() throws Exception { + DefaultCamelContext ctx = new DefaultCamelContext(); + ctx.disableJMX(); + ctx.start(); + + BeanComponent component = (BeanComponent) ctx.getComponent("bean", true, true); + // should be started + assertTrue(component.getStatus().isStarted()); + } + public void testCreateDefaultUuidGenerator() { DefaultCamelContext ctx = new DefaultCamelContext(); ctx.disableJMX(); http://git-wip-us.apache.org/repos/asf/camel/blob/ff1fb0e3/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/AbstractFeatureTest.java ---------------------------------------------------------------------- diff --git a/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/AbstractFeatureTest.java b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/AbstractFeatureTest.java index 609c479..adb4d00 100644 --- a/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/AbstractFeatureTest.java +++ b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/AbstractFeatureTest.java @@ -114,7 +114,8 @@ public abstract class AbstractFeatureTest { assertNotNull("Cannot find CamelContext with name myCamel", camelContext); LOG.info("Getting Camel component: {}", component); - Component comp = camelContext.getComponent(component); + // do not auto start the component as it may not have been configured properly and fail in its start method + Component comp = camelContext.getComponent(component, true, false); assertNotNull("Cannot get component with name: " + component, comp); LOG.info("Found Camel component: {} instance: {} with className: {}", component, comp, comp.getClass()); http://git-wip-us.apache.org/repos/asf/camel/blob/ff1fb0e3/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelBindyTest.java ---------------------------------------------------------------------- diff --git a/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelBindyTest.java b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelBindyTest.java index cb47be2..7e106a1 100644 --- a/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelBindyTest.java +++ b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelBindyTest.java @@ -27,7 +27,9 @@ public class CamelBindyTest extends AbstractFeatureTest { @Test public void test() throws Exception { - testDataFormat(COMPONENT); + testDataFormat(COMPONENT, "bindy-csv"); + testDataFormat(COMPONENT, "bindy-fixed"); + testDataFormat(COMPONENT, "bindy-kvp"); } } \ No newline at end of file
