Repository: camel Updated Branches: refs/heads/master aa99c809d -> 2dd2d4147
[CAMEL-9388] Provide properties-based AMQP connection discovery. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2dd2d414 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2dd2d414 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2dd2d414 Branch: refs/heads/master Commit: 2dd2d4147de61fc309d66cc0ff5923e93a28951f Parents: aa99c80 Author: Henryk Konsek <hekon...@gmail.com> Authored: Thu Dec 3 16:04:36 2015 +0100 Committer: Henryk Konsek <hekon...@gmail.com> Committed: Thu Dec 3 16:04:36 2015 +0100 ---------------------------------------------------------------------- .../component/amqp/AMQPConnectionDetails.java | 38 ++++++++++++++++++++ .../camel/component/amqp/AMQPRouteTest.java | 8 ++++- 2 files changed, 45 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/2dd2d414/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPConnectionDetails.java ---------------------------------------------------------------------- diff --git a/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPConnectionDetails.java b/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPConnectionDetails.java index 545bd27..fa06b5b 100644 --- a/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPConnectionDetails.java +++ b/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPConnectionDetails.java @@ -16,8 +16,19 @@ */ package org.apache.camel.component.amqp; +import org.apache.camel.CamelContext; +import org.apache.camel.component.properties.PropertiesComponent; + public class AMQPConnectionDetails { + public static final String AMQP_HOST = "AMQP_SERVICE_HOST"; + + public static final String AMQP_PORT = "AMQP_SERVICE_PORT"; + + public static final String AMQP_USERNAME = "AMQP_SERVICE_USERNAME"; + + public static final String AMQP_PASSWORD = "AMQP_SERVICE_PASSWORD"; + private final String uri; private final String username; @@ -34,6 +45,21 @@ public class AMQPConnectionDetails { this(uri, null, null); } + public static AMQPConnectionDetails discoverAMQP(CamelContext camelContext) { + try { + PropertiesComponent propertiesComponent = camelContext.getComponent("properties", PropertiesComponent.class); + + String host = property(propertiesComponent, AMQP_HOST, "localhost"); + int port = Integer.parseInt(property(propertiesComponent, AMQP_PORT , "5672")); + String username = property(propertiesComponent, AMQP_USERNAME, null); + String password = property(propertiesComponent, AMQP_PASSWORD, null); + + return new AMQPConnectionDetails("amqp://" + host + ":" + port, username, password); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + public String uri() { return uri; } @@ -46,4 +72,16 @@ public class AMQPConnectionDetails { return password; } + // Helpers + + private static String property(PropertiesComponent propertiesComponent, String key, String defaultValue) { + try { + return propertiesComponent.parseUri(propertiesComponent.getPrefixToken() + key + propertiesComponent.getSuffixToken()); + } catch (IllegalArgumentException e) { + return defaultValue; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/2dd2d414/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPRouteTest.java ---------------------------------------------------------------------- diff --git a/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPRouteTest.java b/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPRouteTest.java index fa7319d..e7303fc 100644 --- a/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPRouteTest.java +++ b/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPRouteTest.java @@ -22,6 +22,7 @@ import org.apache.camel.EndpointInject; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.impl.JndiRegistry; +import org.apache.camel.impl.PropertyPlaceholderDelegateRegistry; import org.apache.camel.test.AvailablePortFinder; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.AfterClass; @@ -29,6 +30,8 @@ import org.junit.BeforeClass; import org.junit.Test; import static org.apache.camel.component.amqp.AMQPComponent.amqpComponent; +import static org.apache.camel.component.amqp.AMQPConnectionDetails.AMQP_PORT; +import static org.apache.camel.component.amqp.AMQPConnectionDetails.discoverAMQP; public class AMQPRouteTest extends CamelTestSupport { @@ -47,6 +50,8 @@ public class AMQPRouteTest extends CamelTestSupport { broker.setPersistent(false); broker.addConnector("amqp://0.0.0.0:" + amqpPort); broker.start(); + + System.setProperty(AMQP_PORT, amqpPort + ""); } @AfterClass @@ -97,12 +102,13 @@ public class AMQPRouteTest extends CamelTestSupport { @Override protected JndiRegistry createRegistry() throws Exception { JndiRegistry registry = super.createRegistry(); - registry.bind("amqpConnection", new AMQPConnectionDetails("amqp://localhost:" + amqpPort)); return registry; } protected CamelContext createCamelContext() throws Exception { CamelContext camelContext = super.createCamelContext(); + JndiRegistry registry = (JndiRegistry)((PropertyPlaceholderDelegateRegistry)camelContext.getRegistry()).getRegistry(); + registry.bind("amqpConnection", discoverAMQP(camelContext)); camelContext.addComponent("amqp-customized", amqpComponent("amqp://localhost:" + amqpPort)); return camelContext; }