CAMEL-10721: Polished and allow to override options
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/388b787b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/388b787b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/388b787b Branch: refs/heads/master Commit: 388b787bb10806b60dbf8bae1cd54ac698d79be2 Parents: fe9d104 Author: Claus Ibsen <[email protected]> Authored: Thu Jan 19 13:08:54 2017 +0100 Committer: Claus Ibsen <[email protected]> Committed: Thu Jan 19 13:08:54 2017 +0100 ---------------------------------------------------------------------- .../apache/camel/maven/connector/ConnectorMojo.java | 9 +++++++++ .../src/main/resources/camel-connector.json | 4 ++-- .../main/java/org/beverage/BeverageEndpoint.java | 16 +++++++++++++++- .../main/java/org/beverage/BeverageProducer.java | 7 +++++-- .../src/main/java/org/foo/FooBarWineRoute.java | 10 +++++----- .../src/main/resources/camel-connector.json | 3 +++ 6 files changed, 39 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/388b787b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java ---------------------------------------------------------------------- diff --git a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java index 31123cc..2576f49 100644 --- a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java +++ b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java @@ -220,6 +220,7 @@ public class ConnectorMojo extends AbstractJarMojo { // find the endpoint options List options = (List) dto.get("endpointOptions"); Map values = (Map) dto.get("endpointValues"); + Map overrides = (Map) dto.get("endpointOverrides"); ObjectMapper mapper = new ObjectMapper(); @@ -244,6 +245,14 @@ public class ConnectorMojo extends AbstractJarMojo { } } + // is there any overrides for this row? + if (overrides != null && overrides.containsKey(key)) { + Map over = (Map) overrides.get(key); + if (over != null) { + row.putAll(over); + } + } + // we should build the json as one-line which is how Camel does it today // which makes its internal json parser support loading our generated schema file String line = mapper.writeValueAsString(row); http://git-wip-us.apache.org/repos/asf/camel/blob/388b787b/connectors/examples/bar-connector/src/main/resources/camel-connector.json ---------------------------------------------------------------------- diff --git a/connectors/examples/bar-connector/src/main/resources/camel-connector.json b/connectors/examples/bar-connector/src/main/resources/camel-connector.json index d3ebcac..50960df 100644 --- a/connectors/examples/bar-connector/src/main/resources/camel-connector.json +++ b/connectors/examples/bar-connector/src/main/resources/camel-connector.json @@ -10,10 +10,10 @@ "groupId" : "org.foo", "artifactId" : "wine-connector", "version" : "2.19.0-SNAPSHOT", - "description" : "To order two drinks from the bar", + "description" : "To order drinks from the bar", "labels" : [ "bar" ], "pattern" : "To", - "endpointOptions" : [ "drink", "amount" ], + "endpointOptions" : [ "drink", "amount", "celebrity" ], "endpointValues" : { "amount" : "2" } http://git-wip-us.apache.org/repos/asf/camel/blob/388b787b/connectors/examples/beverage-component/src/main/java/org/beverage/BeverageEndpoint.java ---------------------------------------------------------------------- diff --git a/connectors/examples/beverage-component/src/main/java/org/beverage/BeverageEndpoint.java b/connectors/examples/beverage-component/src/main/java/org/beverage/BeverageEndpoint.java index d333b59..1680a86 100644 --- a/connectors/examples/beverage-component/src/main/java/org/beverage/BeverageEndpoint.java +++ b/connectors/examples/beverage-component/src/main/java/org/beverage/BeverageEndpoint.java @@ -35,13 +35,16 @@ public class BeverageEndpoint extends DefaultEndpoint { @UriParam(defaultValue = "1") private int amount = 1; + @UriParam + private boolean celebrity; + public BeverageEndpoint(String endpointUri, Component component) { super(endpointUri, component); } @Override public Producer createProducer() throws Exception { - return new BeverageProducer(this, drink, amount); + return new BeverageProducer(this, drink, amount, celebrity); } @Override @@ -75,4 +78,15 @@ public class BeverageEndpoint extends DefaultEndpoint { public void setAmount(int amount) { this.amount = amount; } + + public boolean isCelebrity() { + return celebrity; + } + + /** + * Is this a famous person ordering + */ + public void setCelebrity(boolean celebrity) { + this.celebrity = celebrity; + } } http://git-wip-us.apache.org/repos/asf/camel/blob/388b787b/connectors/examples/beverage-component/src/main/java/org/beverage/BeverageProducer.java ---------------------------------------------------------------------- diff --git a/connectors/examples/beverage-component/src/main/java/org/beverage/BeverageProducer.java b/connectors/examples/beverage-component/src/main/java/org/beverage/BeverageProducer.java index c93e87c..3fb6cf5 100644 --- a/connectors/examples/beverage-component/src/main/java/org/beverage/BeverageProducer.java +++ b/connectors/examples/beverage-component/src/main/java/org/beverage/BeverageProducer.java @@ -24,19 +24,22 @@ public class BeverageProducer extends DefaultProducer { private final Beverages drink; private final int amount; + private final boolean celebrity; private transient int total; - public BeverageProducer(Endpoint endpoint, Beverages drink, int amount) { + public BeverageProducer(Endpoint endpoint, Beverages drink, int amount, boolean celebrity) { super(endpoint); this.drink = drink; this.amount = amount; + this.celebrity = celebrity; } @Override public void process(Exchange exchange) throws Exception { total += amount; - exchange.getIn().setBody("Total " + total + " of " + drink.name().toLowerCase() + " ordered"); + exchange.getIn().setBody("total " + total + " of " + drink.name().toLowerCase() + " ordered" + + (celebrity ? " from famous person" : "")); } } http://git-wip-us.apache.org/repos/asf/camel/blob/388b787b/connectors/examples/foo-bar-wine-example/src/main/java/org/foo/FooBarWineRoute.java ---------------------------------------------------------------------- diff --git a/connectors/examples/foo-bar-wine-example/src/main/java/org/foo/FooBarWineRoute.java b/connectors/examples/foo-bar-wine-example/src/main/java/org/foo/FooBarWineRoute.java index f2b8f15..62cd18a 100644 --- a/connectors/examples/foo-bar-wine-example/src/main/java/org/foo/FooBarWineRoute.java +++ b/connectors/examples/foo-bar-wine-example/src/main/java/org/foo/FooBarWineRoute.java @@ -25,12 +25,12 @@ public class FooBarWineRoute extends RouteBuilder { @Override public void configure() throws Exception { - from("foo:wine?period=2000") + from("foo:ThirstyBear?period=2000") .to("wine:Wine?amount=2") - .log("Wine ordered ${body}"); + .log("ThirstyBear ordered ${body}"); - from("foo:bar?period=5000") - .to("bar:GinTonic?amount=5") - .log("Bar ordered ${body}"); + from("foo:Moes?period=5000") + .to("bar:Beer?amount=5&celebrity=true") + .log("Moes ordered ${body}"); } } http://git-wip-us.apache.org/repos/asf/camel/blob/388b787b/connectors/examples/wine-connector/src/main/resources/camel-connector.json ---------------------------------------------------------------------- diff --git a/connectors/examples/wine-connector/src/main/resources/camel-connector.json b/connectors/examples/wine-connector/src/main/resources/camel-connector.json index def291c..c7c88e5 100644 --- a/connectors/examples/wine-connector/src/main/resources/camel-connector.json +++ b/connectors/examples/wine-connector/src/main/resources/camel-connector.json @@ -16,5 +16,8 @@ "endpointOptions" : [ "drink", "amount" ], "endpointValues" : { "drink" : "Wine" + }, + "endpointOverrides": { + "drink": { "enum": [ "Wine" ], "description": "You can only order wine" } } } \ No newline at end of file
