Component docs
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/aff019f0 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/aff019f0 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/aff019f0 Branch: refs/heads/master Commit: aff019f0a7c8d708ecf856035f741b279257153e Parents: 7f28a1e Author: Claus Ibsen <davscl...@apache.org> Authored: Tue Apr 28 07:58:26 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue Apr 28 07:59:38 2015 +0200 ---------------------------------------------------------------------- .../apache/camel/component/redis/Command.java | 2 +- .../component/redis/CommandDispatcher.java | 12 +++--- .../component/redis/RedisConfiguration.java | 41 ++++++++++++++++---- .../camel/component/redis/RedisConsumer.java | 15 +++---- .../camel/component/redis/RedisEndpoint.java | 4 +- 5 files changed, 50 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/aff019f0/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/Command.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/Command.java b/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/Command.java index 71e4a53..5aa6d25 100755 --- a/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/Command.java +++ b/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/Command.java @@ -31,5 +31,5 @@ public enum Command { ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG, BRPOPLPUSH, SETBIT, - GETBIT, SETRANGE, GETRANGE, PEXPIRE, PEXPIREAT; + GETBIT, SETRANGE, GETRANGE, PEXPIRE, PEXPIREAT } http://git-wip-us.apache.org/repos/asf/camel/blob/aff019f0/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/CommandDispatcher.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/CommandDispatcher.java b/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/CommandDispatcher.java index ee3a22d..79daceb 100755 --- a/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/CommandDispatcher.java +++ b/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/CommandDispatcher.java @@ -34,10 +34,10 @@ public class CommandDispatcher { this.exchange = exchange; } - // TODO: This method is longer than maximally allowed 200 lines // CHECKSTYLE:OFF public void execute(final RedisClient redisClient) { - switch (determineCommand()) { + final Command command = determineCommand(); + switch (command) { case PING: setResult(redisClient.ping()); @@ -337,20 +337,20 @@ public class CommandDispatcher { setResult(redisClient.getrange(getKey(), getStart(), getEnd())); break; default: - throw new RuntimeExchangeException("Unsupported command", exchange); + throw new RuntimeExchangeException("Unsupported command: " + command, exchange); } } // CHECKSTYLE:ON private Command determineCommand() { - String command = exchange.getIn().getHeader(RedisConstants.COMMAND, String.class); + Command command = exchange.getIn().getHeader(RedisConstants.COMMAND, Command.class); if (command == null) { command = configuration.getCommand(); } if (command == null) { - return Command.SET; + command = Command.SET; } - return Command.valueOf(command); + return command; } private static <T> T getInHeaderValue(Exchange exchange, String key, Class<T> aClass) { http://git-wip-us.apache.org/repos/asf/camel/blob/aff019f0/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisConfiguration.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisConfiguration.java b/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisConfiguration.java index 0c48845..9369e33 100755 --- a/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisConfiguration.java +++ b/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisConfiguration.java @@ -29,12 +29,15 @@ import org.springframework.data.redis.serializer.RedisSerializer; @UriParams public class RedisConfiguration { + private boolean managedListenerContainer; + private boolean managedConnectionFactory; + @UriPath @Metadata(required = "true") private String host; @UriPath @Metadata(required = "true") private Integer port; - @UriParam - private String command; + @UriParam(defaultValue = "SET") + private Command command = Command.SET; @UriParam private String channels; @UriParam @@ -45,16 +48,17 @@ public class RedisConfiguration { private RedisConnectionFactory connectionFactory; @UriParam private RedisSerializer serializer; - @UriParam - private boolean managedListenerContainer; - @UriParam - private boolean managedConnectionFactory; - public String getCommand() { + public Command getCommand() { return command; } - public void setCommand(String command) { + /** + * Default command, which can be overridden by message header. + * <p/> + * Notice the consumer only supports the following commands: PSUBSCRIBE and SUBSCRIBE + */ + public void setCommand(Command command) { this.command = command; } @@ -62,6 +66,9 @@ public class RedisConfiguration { return port; } + /** + * Redis server port number + */ public void setPort(Integer port) { this.port = port; } @@ -70,6 +77,9 @@ public class RedisConfiguration { return host; } + /** + * The host where Redis server is running. + */ public void setHost(String host) { this.host = host; } @@ -78,6 +88,9 @@ public class RedisConfiguration { return redisTemplate != null ? redisTemplate : createDefaultTemplate(); } + /** + * Reference to a pre-configured RedisTemplate instance to use. + */ public void setRedisTemplate(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } @@ -86,6 +99,9 @@ public class RedisConfiguration { return listenerContainer != null ? listenerContainer : createDefaultListenerContainer(); } + /** + * Reference to a pre-configured RedisMessageListenerContainer instance to use. + */ public void setListenerContainer(RedisMessageListenerContainer listenerContainer) { this.listenerContainer = listenerContainer; } @@ -94,10 +110,16 @@ public class RedisConfiguration { return channels; } + /** + * List of topic names or name patterns to subscribe to. Multiple names can be separated by comma. + */ public void setChannels(String channels) { this.channels = channels; } + /** + * Reference to a pre-configured RedisConnectionFactory instance to use. + */ public void setConnectionFactory(RedisConnectionFactory connectionFactory) { this.connectionFactory = connectionFactory; } @@ -110,6 +132,9 @@ public class RedisConfiguration { return serializer != null ? serializer : createDefaultSerializer(); } + /** + * Reference to a pre-configured RedisSerializer instance to use. + */ public void setSerializer(RedisSerializer serializer) { this.serializer = serializer; } http://git-wip-us.apache.org/repos/asf/camel/blob/aff019f0/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisConsumer.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisConsumer.java b/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisConsumer.java index 4afdc5a..84d2338 100755 --- a/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisConsumer.java +++ b/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisConsumer.java @@ -23,14 +23,14 @@ import java.util.List; import org.apache.camel.Exchange; import org.apache.camel.Processor; -import org.apache.camel.component.direct.DirectConsumer; +import org.apache.camel.impl.DefaultConsumer; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.data.redis.listener.ChannelTopic; import org.springframework.data.redis.listener.PatternTopic; import org.springframework.data.redis.listener.Topic; -public class RedisConsumer extends DirectConsumer implements MessageListener { +public class RedisConsumer extends DefaultConsumer implements MessageListener { private final RedisConfiguration redisConfiguration; public RedisConsumer(RedisEndpoint redisEndpoint, Processor processor, @@ -50,12 +50,13 @@ public class RedisConsumer extends DirectConsumer implements MessageListener { String[] channelsArrays = channels.split(","); List<Topic> topics = new ArrayList<Topic>(); for (String channel : channelsArrays) { - if (Command.PSUBSCRIBE.toString().equals(redisConfiguration.getCommand())) { - topics.add(new PatternTopic(channel)); - } else if (Command.SUBSCRIBE.toString().equals(redisConfiguration.getCommand())) { - topics.add(new ChannelTopic(channel)); + String name = channel.trim(); + if (Command.PSUBSCRIBE.equals(redisConfiguration.getCommand())) { + topics.add(new PatternTopic(name)); + } else if (Command.SUBSCRIBE.equals(redisConfiguration.getCommand())) { + topics.add(new ChannelTopic(name)); } else { - throw new RuntimeException("Unsupported Command"); + throw new IllegalArgumentException("Unsupported Command " + redisConfiguration.getCommand()); } } return topics; http://git-wip-us.apache.org/repos/asf/camel/blob/aff019f0/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisEndpoint.java b/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisEndpoint.java index d790f7e..2952dd6 100755 --- a/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisEndpoint.java +++ b/components/camel-spring-redis/src/main/java/org/apache/camel/component/redis/RedisEndpoint.java @@ -19,7 +19,7 @@ package org.apache.camel.component.redis; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; -import org.apache.camel.component.direct.DirectEndpoint; +import org.apache.camel.impl.DefaultEndpoint; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -27,7 +27,7 @@ import org.apache.camel.spi.UriParam; * Represents a Redis endpoint. */ @UriEndpoint(scheme = "spring-redis", title = "Spring Redis", syntax = "spring-redist:host:port", consumerClass = RedisConsumer.class, label = "spring,nosql") -public class RedisEndpoint extends DirectEndpoint { +public class RedisEndpoint extends DefaultEndpoint { @UriParam private RedisConfiguration configuration;