DATAREDIS-200
- Convert return of closePipeline() to same types
returned from individual operations
- Change SRP execute to return Reply.data()
instead of Reply for consistency with pipeline
DATAREDIS-201
Inject LettucePool into LettuceConnectionFactory
to be used for a "dedicatedConnection". Dedicated
connections are used only for blocking and tx ops
when a shared connection is used. If shareNativeConnection
is set to false, the dedicated conn will be
used for all ops.
DATAREDIS-186
- Handle a few method signature changes to varargs
- Handle possibility of exec() throwing Exceptions
if ErrorReply received in Redis 2.6
- Add DefaultJredisPool to pool JRedis connections
- Prevent returning the same resource to the pool
multiple times on JredisConnection close
- Fixes DATAREDIS-154 previous JRedis pool left
broken connections in the pool
DATAREDIS-54, DATAREDIS-174, DATAREDIS-129
- Switch to original JRedis for 2.6 support
- Remove base64 encoding as new JRedis supports binary
keys
- Add JredisPool interface to replace removed
JRedisService and pool implementation
- Temporarily switch integration tests to use
non-pooled connections
- Throw more specific Exception on JRedis connection
failures
DATAREDIS-191
- Wrap native Exceptions in RedisConnectionFailureExceptions
- Support switching from shared to non-shared connection
by resetting shared connection in afterPropertiesSet
As a convenience when configuring with Java, added another constructor
call that allows setting the delegate and the default listener method
in one line of code.
```java
public MessageListenerAdapter(Object delegate, String defaultListenerMethod) {
this(delegate);
setDefaultListenerMethod(defaultListenerMethod);
}
```
This supports configuring a POJO-based listener with a single step:
```java
@Test
public void testCustomMethodWithAlternateConstructor() throws Exception {
MessageListenerAdapter adapter = new MessageListenerAdapter(target, "customMethod");
adapter.afterPropertiesSet();
adapter.onMessage(STRING_MSG, null);
verify(target).customMethod(PAYLOAD);
}
```
A pure Java configuration bean can now look like this:
```java
@Bean
MessageListenerAdapter listenerAdapter(Receiver receiver) {
return new new MessageListenerAdapter(receiver, "pojoMethod");
}
@Bean
Receiver receiver() {
return new Receiver();
}
```
No longer do we have to A) assign the adapter to a variable and B) call
setDefaultListenerMethod, slimming down pure POJO configuration with pure
Java.