Commit Graph

1309 Commits

Author SHA1 Message Date
Christoph Strobl
f5a506cb8d DATAREDIS-530 - Fix PartialUpdate removing existing indexes.
We now make sure to leave existing indexes untouched when using PartialUpdate.
We also fixed a glitch, where index values have not been removed correctly when saving entities with null values, along the way.

Original pull request: #207.
2016-07-06 14:34:29 +02:00
Christoph Strobl
0d24b5a573 DATAREDIS-524 - Polishing.
Some formatting changes.

Original Pull Request: #204
2016-07-06 14:16:18 +02:00
Mark Paluch
ea33cd40e6 DATAREDIS-524 - Use password to connect Redis nodes using Sentinel.
LettuceConnectionFactory and DefaultLettucePool now use the configured password to authenticate with Redis. Authentication is applied when connecting to nodes that were obtained from Redis Sentinel.

Original Pull Request: #204
2016-07-06 14:16:08 +02:00
Mark Paluch
74a5652ff0 DATAREDIS-505 - Polishing.
Extend date range in license header. Retrieve connection and config for possible reconfiguration only if keyspaceNotificationsConfigParameter has a value.

Original pull request: #202.
2016-06-17 13:07:31 +02:00
Christoph Strobl
65c7b2c23e DATAREDIS-505 - Allow configuration of Redis Keyspace events config value.
We now allow setting the desired notify-keyspace-events server configuration via @EnableRedisRepsoitories. Use `null` or an empty String for not touching the server’s config. The default is `Ex`.

Original pull request: #202.
2016-06-17 13:07:20 +02:00
Mark Paluch
64456ea134 DATAREDIS-500 - Polishing.
Apply formatting rules. Use differing serializers in test.

Original pull request: #190.
2016-06-17 09:35:57 +02:00
Anqing Shao
73c8ce2009 DATAREDIS-500 - Use Hash Key and Hash Value serializers in RedisTemplate executePipelined(…).
RedisTemplate executePipelined(RedisCallback) uses now the Hash Key and Hash Value serializers to deserialize the response.

Original pull request: #190.
CLA: 174020160421053943 (Anqing Shao).
2016-06-17 09:35:57 +02:00
Oliver Gierke
31d8ab296f DATAREDIS-488 - Updated changelog. 2016-06-15 14:31:49 +02:00
Christoph Strobl
67106bc75a DATAREDIS-510 - Fix caching of null values.
We now no longer add empty byte[] as cache value but return null instead.

Original pull request: #201.
2016-06-14 16:56:47 +02:00
Mark Paluch
28b5d61029 DATAREDIS-516 - Update required Spring framework version in reference documentation.
The documentation now uses a property to pull in the Spring framework version used at build time.
2016-06-07 08:29:00 +02:00
Christoph Strobl
7af8fdf946 DATAREDIS-513 - Fix RedisServerCommands.time() failure when in pipeline mode.
We fixed a glitch in Jedis/Lettuce RedisConneciton TIME command when used in pipeline or transaction mode.

Original pull request: #199.
2016-06-02 09:33:19 +02:00
Christoph Strobl
2b51966768 DATAREDIS-514 - Unify geoRadius capitalization.
Unify capitalization of geoRadius to match other geo prefixed operations.

Original pull request: #200.
2016-05-27 09:36:38 +02:00
Mark Paluch
d88d992f6d DATAREDIS-471 - Polishing.
Update reference documentation. Enhance JavaDoc. Remove destroy of managed bean. Refactor property update of writePartialUpdate into own method. Remove trailing whitespaces in JavaDoc.

Original pull request: #191.
2016-05-25 16:36:46 +02:00
Christoph Strobl
76229c10a4 DATAREDIS-471 - Add support for partial updates.
We now allow partial update of domain types via PartialUpdate. The according expiration times and secondary index structures are updated accordingly.

In some cases it is not necessary to load and rewrite the entire entity just to set a new value within it. A session timestamp for last active time might be such a scenario where you just want to alter one property.
`PartialUpdate` allows to define `set`, `delete` actions on existing objects while taking care of updating potential expiration times of the entity itself as well as index structures.

.Sample Partial Update
====
[source,java]
----
PartialUpdate<Person> update = new PartialUpdate<Person>("e2c7dcee", Person.class)
  .set("firstname", "mat")                                                           <1>
  .set("address.city", "emond's field")                                              <2>
  .del("age");                                                                       <3>

template.update(update);

update = new PartialUpdate<Person>("e2c7dcee", Person.class)
  .set("address", new Address("caemlyn", "andor"))                                   <4>
  .set("attributes", singletonMap("eye-color", "grey"));                             <5>

template.update(update);

update = new PartialUpdate<Person>("e2c7dcee", Person.class)
  .refreshTtl(true);                                                                 <6>
  .set("expiration", 1000);

template.update(update);
----
<1> Set the simple property _firstname_ to _mat_
<2> Set the simple property _address.city_ to _emond's field_ without having to pass in the entire object. This does not work when a custom conversion is registered.
<3> Remove the property _age_.
<4> Set complex property _address_.
<5> Set a map/collection of values removes the previously existing map/collection and replaces the values with the given ones.
<6> Automatically update the server expiration time when altering time to live.
====

NOTE: Updating complex objects as well as map/collection structures requires further interaction with Redis to determine existing values which means that it might turn out that rewriting the entire entity might be faster.

Original pull request: #191.
2016-05-25 16:36:46 +02:00
Mark Paluch
0e17c9b58d DATAREDIS-491 - Polishing.
Set EnableRedisRepositories.enableKeyspaceEvents default to OFF. Expiry notifications require to opt-in. Add JavaDoc. Add documentation for delayed/disabled event listener. Fix spelling. Use property value instead of attribute on RedisKeyValueAdapter bean definition. Remove trailing white spaces.

Original pull request: #193.
2016-05-25 16:36:35 +02:00
Christoph Strobl
62c704d58a DATAREDIS-491 - Add configuration option to tune KeyspaceEventMessageListener usage.
We now allow more fine grained setup for usage of Redis keyspace events. This can be done programmatically via the RedisKeyValueAdapter or using `@EnableRedisRepositories.enableKeyspaceEvents`.

Original pull request: #193.
2016-05-25 15:25:05 +02:00
Christoph Strobl
46f07d7056 DATAREDIS-512 - Skip repository index update checks on insert.
We now skip checking for existing index values on insert.

Related tickets: DATAREDIS-504.
Original pull request: #198.
2016-05-24 09:33:55 +02:00
Christoph Strobl
f732b5f6b9 DATAREDIS-438 - Polishing.
RedisGeoCommands now take and return Spring Data domain types like Distance and GeoResults.
Updated JavaDoc and Reference documentation.
Added and updated author and license headers.
Fixed minor formatting and code style issues.

Original Pulll Request: #187
2016-05-23 07:07:50 +02:00
Ninad Divadkar
b0e20d3da8 DATAREDIS-438 - Add support for geo commands.
Original Pulll Request: #187
CLA: 169220160326121428 (Ninad Divadkar)
2016-05-18 16:04:45 +02:00
Mark Paluch
83359a9c4f DATAREDIS-469 - Polishing.
Return zero (0) in getAndSet to prevent NullPointerExceptions. Remove trailing whitespace. Add tests for existing methods. Simplify tests.

Original pull request: #182.
2016-05-13 14:35:27 +02:00
Christoph Strobl
20cfd3e76c DATAREDIS-469 - Throw DataRetrievalFailureException for atomic numbers when key is removed.
We now throw DataRetrievalFailureException in case of get() when the underlying key storing the value of an AtomicInteger, AtomicLong or AtomicDouble is removed from Redis.

Original pull request: #182.
2016-05-13 14:34:55 +02:00
Mark Paluch
d097a64bc6 DATAREDIS-423 - Polishing.
Extend documentation. Reformat JavaDoc. Adjust test method names.

Original pull request: #197.
2016-05-13 12:50:49 +02:00
Christoph Strobl
568e41f8dd DATAREDIS-423 - Add support for Jackson2 based HashMapper.
Added FasterXML Jackson `ObjectMapper` based `HashMapper` implementation that allows flattening.

```java
class Person {
  String firstname;
  String lastname;
  Address address;
}

class Address {
  String city;
  String country;
}
```

```bash
firstname:Jon
lastname:Snow
address:{ city : Castle Black, country : The North }

firstname:Jon
lastname:Snow
address.city:Castle Black
address.country:The North
```

Original pull request: #197.
2016-05-13 12:49:46 +02:00
Mark Paluch
b1a3559db1 DATAREDIS-509 - Polishing.
Update license headers. Add test for index resolver using an indexed primitive array.

Original pull request: #196.
2016-05-09 15:13:32 +02:00
Christoph Strobl
16b692c899 DATAREDIS-509 - Fix handling of primitive arrays in MappingRedisConverter.
We now correctly convert arrays of primitive values.

Original pull request: #196.
2016-05-09 14:59:39 +02:00
Christoph Strobl
f2cee266e3 DATAREDIS-507 - Polishing.
Added missing author and issue reference.

Original Pull Request: #195
2016-05-04 08:37:16 +02:00
Mark Paluch
ebbcd95c6d DATAREDIS-507 - Do not destroy RedisConnectionFactory in RedisKeyValueAdapter.destroy.
Do not destroy RedisConnectionFactory which is likely managed outside of RedisKeyValueAdapter. 
This change makes sure to retain a working connection factory while shutting down message listeners as those try to unsubscribe on shutdown.

Original Pull Request: #195
2016-05-04 08:36:31 +02:00
Mark Paluch
c1476b701b DATAREDIS-503 - Polishing.
Rename ConvertingHashMapper to ObjectHashMapper. Add fromHash with type to avoid casting. Add JavaDoc documentation to HashMapper. Add hash mapping to reference documentation.

Original pull request: #194.
2016-05-02 09:07:10 +02:00
Christoph Strobl
359c3e4533 DATAREDIS-503 - Add HashMapper implementation based on MappingRedisConverter.
We now support mapping of simple and complex types to Redis HASH structures applying the same structure as the Repository support. This allows Object to hash Mapping and its direct usage via RedisTemplate without the need of explicitly having to use the repository abstraction.

Original pull request: #194.
2016-05-02 09:06:28 +02:00
Christoph Strobl
f5ecd3a9b1 DATAREDIS-501 - Use application context ClassLoader as default for JdkSerializationRedisSerializer in RedisTemplate.
We now pick up the ClassLoader from the ApplicationContext and use the latter as default in RedisTemplate for initializing the JdkSerializationRedisSerializer. We only do this in case the default serializer has not been set explicitly.

Original pull request: #192.
2016-04-26 15:12:11 +02:00
Christoph Strobl
652b1b8354 DATAREDIS-489 - Add type hints for Object types.
We now store the type hint for simple types when the declaring bean property does not match the actual value type.
2016-04-15 11:09:36 +02:00
Christoph Strobl
14e44880c7 DATAREDIS-492 - Polishing.
Added some more tests and fix read operation.

Original Pull Request: #189
2016-04-15 11:09:13 +02:00
Greg Turnquist
2492fbe332 DATAREDIS-492 - Handle serializing arrays and collections.
Original Pull Request: #189
2016-04-15 11:09:13 +02:00
Christoph Strobl
deec98efc6 DATAREDIS-498 - Favor Collections.sort over List.sort which requires Java 8. 2016-04-15 11:08:33 +02:00
Oliver Gierke
7da2e3b2f2 DATAREDIS-486 - Updated changelog. 2016-04-06 23:14:27 +02:00
Oliver Gierke
f11bc83e46 DATAREDIS-484 - After release cleanups. 2016-04-06 16:37:03 +02:00
Oliver Gierke
6e5df14794 DATAREDIS-484 - Prepare next development iteration. 2016-04-06 16:37:00 +02:00
Oliver Gierke
59b6b93abc DATAREDIS-484 - Release version 1.7 GA (Hopper). 2016-04-06 16:35:59 +02:00
Oliver Gierke
96358c430d DATAREDIS-484 - Prepare 1.7 GA (Hopper). 2016-04-06 16:34:46 +02:00
Oliver Gierke
8c6519896f DATAREDIS-484 - Updated changelog. 2016-04-06 16:34:41 +02:00
Mark Paluch
4dc61c3744 DATAREDIS-485 - Point to the appropriate Jira project. 2016-04-05 14:18:47 +02:00
Mark Paluch
a826c3eea9 DATAREDIS-485 - Add pull request template.
Original pull request: #188.
2016-04-05 09:19:53 +02:00
Mark Paluch
bef4fbe831 DATAREDIS-444 - Polishing.
Add author name. Update license header. Reformat code. Add JavaDoc to hash operations.

Original pull request: #184.
2016-03-29 10:30:55 +02:00
Ninad Divadkar
5f9d005cb3 DATAREDIS-444 - Return result of delete in DefaultHashOperation.
Delete in DefaultHashOperation returns now the result of the HDEL command.

Original pull request: #184.
CLA: 169220160326121428 (Ninad Divadkar)
2016-03-29 09:25:57 +02:00
Christoph Strobl
1b3fe81b61 DATAREDIS-482 - Provide meaningful exception messages in MappingRedisConverter.
Original pull request: #183.
2016-03-24 14:49:58 +01:00
Mark Paluch
b3243ff328 DATAREDIS-480 - Polishing.
Add missing author tag. Minor reformatting. Explicitly set default SSL options and add test to verify default SSL options. Enhance JavaDoc.

Original pull request: #180.
2016-03-22 11:06:10 +01:00
Balazs Nemeth
8edfb2b94e DATAREDIS-480 - Add support for all lettuce SSL options.
LettuceConnectionFactory now supports verifyPeer and startTls options for Redis Standalone usage.

Original pull request: #180.
CLA: 166820160311101157 (Balázs Németh)
2016-03-22 11:00:13 +01:00
Oliver Gierke
93bad424d1 DATAREDIS-475 - After release cleanups. 2016-03-18 11:16:08 +01:00
Oliver Gierke
41b6e8a171 DATAREDIS-475 - Prepare next development iteration. 2016-03-18 11:15:51 +01:00
Oliver Gierke
6e2d2683d1 DATAREDIS-475 - Release version 1.7 RC1 (Hopper). 2016-03-18 11:15:00 +01:00