You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2017/04/12 09:11:57 UTC
camel git commit: HeaderSelectorProducer to support suppliers for
header key and default value
Repository: camel
Updated Branches:
refs/heads/master b7df95775 -> 5fa7a8a4b
HeaderSelectorProducer to support suppliers for header key and default value
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5fa7a8a4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5fa7a8a4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5fa7a8a4
Branch: refs/heads/master
Commit: 5fa7a8a4b23b51a9f7226adf83f322600103dc32
Parents: b7df957
Author: lburgazzoli <lb...@gmail.com>
Authored: Wed Apr 12 11:11:37 2017 +0200
Committer: lburgazzoli <lb...@gmail.com>
Committed: Wed Apr 12 11:11:45 2017 +0200
----------------------------------------------------------------------
.../camel/impl/HeaderSelectorProducer.java | 40 +++++++++++++++-----
1 file changed, 31 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/5fa7a8a4/camel-core/src/main/java/org/apache/camel/impl/HeaderSelectorProducer.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/HeaderSelectorProducer.java b/camel-core/src/main/java/org/apache/camel/impl/HeaderSelectorProducer.java
index 09d59c6..f91f032 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/HeaderSelectorProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/HeaderSelectorProducer.java
@@ -20,6 +20,7 @@ import java.lang.reflect.Method;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.function.Supplier;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
@@ -28,6 +29,7 @@ import org.apache.camel.InvokeOnHeaders;
import org.apache.camel.Message;
import org.apache.camel.NoSuchHeaderException;
import org.apache.camel.Processor;
+import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,28 +40,43 @@ import org.slf4j.LoggerFactory;
public class HeaderSelectorProducer extends BaseSelectorProducer {
private static final Logger LOGGER = LoggerFactory.getLogger(HeaderSelectorProducer.class);
- private final String header;
- private final String defaultHeaderValue;
+ private final Supplier<String> headerSupplier;
+ private final Supplier<String> defaultHeaderValueSupplier;
private final Object target;
private Map<String, Processor> handlers;
+ public HeaderSelectorProducer(Endpoint endpoint, Supplier<String> headerSupplier) {
+ this(endpoint, headerSupplier, () -> null, null);
+ }
public HeaderSelectorProducer(Endpoint endpoint, String header) {
- this(endpoint, header, null, null);
+ this(endpoint, () -> header, () -> null, null);
}
public HeaderSelectorProducer(Endpoint endpoint, String header, Object target) {
- this(endpoint, header, null, target);
+ this(endpoint, () -> header, () -> null, target);
+ }
+
+ public HeaderSelectorProducer(Endpoint endpoint, Supplier<String> headerSupplier, Object target) {
+ this(endpoint, headerSupplier, () -> null, target);
}
public HeaderSelectorProducer(Endpoint endpoint, String header, String defaultHeaderValue) {
- this(endpoint, header, defaultHeaderValue, null);
+ this(endpoint, () -> header, () -> defaultHeaderValue, null);
+ }
+
+ public HeaderSelectorProducer(Endpoint endpoint, Supplier<String> headerSupplier, Supplier<String> defaultHeaderValueSupplier) {
+ this(endpoint, headerSupplier, defaultHeaderValueSupplier, null);
}
public HeaderSelectorProducer(Endpoint endpoint, String header, String defaultHeaderValue, Object target) {
+ this(endpoint, () -> header, () -> defaultHeaderValue, target);
+ }
+
+ public HeaderSelectorProducer(Endpoint endpoint, Supplier<String> headerSupplier, Supplier<String> defaultHeaderValueSupplier, Object target) {
super(endpoint);
- this.header = header;
- this.defaultHeaderValue = defaultHeaderValue;
+ this.headerSupplier = ObjectHelper.notNull(headerSupplier, "headerSupplier");
+ this.defaultHeaderValueSupplier = ObjectHelper.notNull(defaultHeaderValueSupplier, "defaultHeaderValueSupplier");
this.target = target != null ? target : this;
this.handlers = new HashMap<>();
}
@@ -84,7 +101,12 @@ public class HeaderSelectorProducer extends BaseSelectorProducer {
@Override
protected Processor getProcessor(Exchange exchange) throws Exception {
- final String action = exchange.getIn().getHeader(header, defaultHeaderValue, String.class);
+ String header = headerSupplier.get();
+ String action = exchange.getIn().getHeader(headerSupplier.get(), String.class);
+
+ if (action == null) {
+ action = defaultHeaderValueSupplier.get();
+ }
if (action == null) {
throw new NoSuchHeaderException(exchange, header, String.class);
}
@@ -94,7 +116,7 @@ public class HeaderSelectorProducer extends BaseSelectorProducer {
protected void onMissingProcessor(Exchange exchange) throws Exception {
throw new IllegalStateException(
- "Unsupported operation " + exchange.getIn().getHeader(header)
+ "Unsupported operation " + exchange.getIn().getHeader(headerSupplier.get())
);
}