Skip to content

Commit b0e20d3

Browse files
nsdivchristophstrobl
authored andcommitted
DATAREDIS-438 - Add support for geo commands.
Original Pulll Request: #187 CLA: 169220160326121428 (Ninad Divadkar)
1 parent 83359a9 commit b0e20d3

32 files changed

+5839
-3092
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
REDIS_VERSION:=3.0.7
15+
REDIS_VERSION:=3.2.0-rc3
1616
SPRING_PROFILE?=ci
1717

1818
#######

src/main/java/org/springframework/data/redis/connection/DefaultStringRedisConnection.java

Lines changed: 193 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,8 @@
1515
*/
1616
package org.springframework.data.redis.connection;
1717

18-
import java.util.ArrayList;
19-
import java.util.Collection;
20-
import java.util.LinkedHashMap;
21-
import java.util.LinkedList;
22-
import java.util.List;
23-
import java.util.Map;
18+
import java.util.*;
2419
import java.util.Map.Entry;
25-
import java.util.Properties;
26-
import java.util.Queue;
27-
import java.util.Set;
2820

2921
import org.apache.commons.logging.Log;
3022
import org.apache.commons.logging.LogFactory;
@@ -33,9 +25,7 @@
3325
import org.springframework.data.redis.connection.convert.ListConverter;
3426
import org.springframework.data.redis.connection.convert.MapConverter;
3527
import org.springframework.data.redis.connection.convert.SetConverter;
36-
import org.springframework.data.redis.core.ConvertingCursor;
37-
import org.springframework.data.redis.core.Cursor;
38-
import org.springframework.data.redis.core.ScanOptions;
28+
import org.springframework.data.redis.core.*;
3929
import org.springframework.data.redis.core.types.Expiration;
4030
import org.springframework.data.redis.core.types.RedisClientInfo;
4131
import org.springframework.data.redis.serializer.RedisSerializer;
@@ -280,7 +270,7 @@ public void flushDb() {
280270
delegate.flushDb();
281271
}
282272

283-
public byte[] get(byte[] key) {
273+
public byte[] get(byte[] key) {
284274
byte[] result = delegate.get(key);
285275
if (isFutureConversion()) {
286276
addResultConverter(identityConverter);
@@ -2280,6 +2270,196 @@ public Long zUnionStore(String destKey, String... sets) {
22802270
return result;
22812271
}
22822272

2273+
@Override
2274+
public Long geoAdd(byte[] key, double longitude, double latitude, byte[] member){
2275+
Long result = delegate.geoAdd(key, longitude, latitude, member);
2276+
if (isFutureConversion()){
2277+
addResultConverter(identityConverter);
2278+
}
2279+
return result;
2280+
}
2281+
2282+
@Override
2283+
public Long geoAdd(String key, double longitude, double latitude, String member){
2284+
Long result = delegate.geoAdd(serialize(key), longitude, latitude, serialize(member));
2285+
if (isFutureConversion()){
2286+
addResultConverter(identityConverter);
2287+
}
2288+
return result;
2289+
}
2290+
2291+
@Override
2292+
public Long geoAdd(byte[] key, Map<byte[], GeoCoordinate> memberCoordinateMap) {
2293+
Long result = delegate.geoAdd(key, memberCoordinateMap);
2294+
if (isFutureConversion()){
2295+
addResultConverter(identityConverter);
2296+
}
2297+
return result;
2298+
}
2299+
2300+
@Override
2301+
public Long geoAdd(String key, Map<String, GeoCoordinate> memberCoordinateMap) {
2302+
Map<byte[], GeoCoordinate> byteMap = new HashMap<byte[], GeoCoordinate>();
2303+
for (String k : memberCoordinateMap.keySet()){
2304+
byteMap.put(serialize(k), memberCoordinateMap.get(k));
2305+
}
2306+
Long result = delegate.geoAdd(serialize(key), byteMap);
2307+
if (isFutureConversion()){
2308+
addResultConverter(identityConverter);
2309+
}
2310+
return result;
2311+
}
2312+
2313+
@Override
2314+
public Double geoDist(byte[] key, byte[] member1, byte[] member2) {
2315+
Double result = delegate.geoDist(key, member1, member2);
2316+
if (isFutureConversion()){
2317+
addResultConverter(identityConverter);
2318+
}
2319+
return result;
2320+
}
2321+
2322+
@Override
2323+
public Double geoDist(String key, String member1, String member2) {
2324+
return geoDist(key, member1, member2, GeoUnit.Meters);
2325+
}
2326+
2327+
@Override
2328+
public Double geoDist(byte[] key, byte[] member1, byte[] member2, GeoUnit unit) {
2329+
Double result = delegate.geoDist(key, member1, member2, unit);
2330+
if (isFutureConversion()){
2331+
addResultConverter(identityConverter);
2332+
}
2333+
return result;
2334+
}
2335+
2336+
@Override
2337+
public Double geoDist(String key, String member1, String member2, GeoUnit geoUnit) {
2338+
Double result = delegate.geoDist(serialize(key), serialize(member1), serialize(member2), geoUnit);
2339+
if (isFutureConversion()){
2340+
addResultConverter(identityConverter);
2341+
}
2342+
return result;
2343+
}
2344+
2345+
@Override
2346+
public List<byte[]> geoHash(byte[] key, byte[]... members) {
2347+
List<byte[]> result = delegate.geoHash(key, members);
2348+
if (isFutureConversion()){
2349+
addResultConverter(identityConverter);
2350+
}
2351+
return result;
2352+
}
2353+
2354+
@Override
2355+
public List<String> geoHash(String key, String... members) {
2356+
List<byte[]> result = delegate.geoHash(serialize(key), serializeMulti(members));
2357+
if (isFutureConversion()){
2358+
addResultConverter(byteListToStringList);
2359+
}
2360+
return byteListToStringList.convert(result);
2361+
}
2362+
2363+
@Override
2364+
public List<GeoCoordinate> geoPos(byte[] key, byte[]... members) {
2365+
List<GeoCoordinate> result = delegate.geoPos(key, members);
2366+
if (isFutureConversion()){
2367+
addResultConverter(identityConverter);
2368+
}
2369+
return result;
2370+
}
2371+
2372+
@Override
2373+
public List<GeoCoordinate> geoPos(String key, String... members) {
2374+
List<GeoCoordinate> result = delegate.geoPos(serialize(key), serializeMulti(members));
2375+
if (isFutureConversion()){
2376+
addResultConverter(identityConverter);
2377+
}
2378+
return result;
2379+
}
2380+
2381+
@Override
2382+
public List<GeoRadiusResponse> georadius(String key, double longitude, double latitude, double radius, GeoUnit unit) {
2383+
List<GeoRadiusResponse> result = delegate.georadius(serialize(key), longitude, latitude, radius, unit);
2384+
if (isFutureConversion()){
2385+
addResultConverter(identityConverter);
2386+
}
2387+
return result;
2388+
}
2389+
2390+
@Override
2391+
public List<GeoRadiusResponse> georadius(String key, double longitude, double latitude, double radius, GeoUnit unit, GeoRadiusParam param) {
2392+
List<GeoRadiusResponse> result = delegate.georadius(serialize(key), longitude, latitude, radius, unit, param);
2393+
if (isFutureConversion()){
2394+
addResultConverter(identityConverter);
2395+
}
2396+
return result;
2397+
}
2398+
2399+
@Override
2400+
public List<GeoRadiusResponse> georadiusByMember(String key, String member, double radius, GeoUnit unit) {
2401+
List<GeoRadiusResponse> result = delegate.georadiusByMember(serialize(key), serialize(member), radius, unit);
2402+
if (isFutureConversion()){
2403+
addResultConverter(identityConverter);
2404+
}
2405+
return result;
2406+
}
2407+
2408+
@Override
2409+
public List<GeoRadiusResponse> georadiusByMember(String key, String member, double radius, GeoUnit unit, GeoRadiusParam param) {
2410+
List<GeoRadiusResponse> result = delegate.georadiusByMember(serialize(key), serialize(member), radius, unit, param);
2411+
if (isFutureConversion()){
2412+
addResultConverter(identityConverter);
2413+
}
2414+
return result;
2415+
}
2416+
2417+
@Override
2418+
public List<GeoRadiusResponse> georadius(byte[] key, double longitude, double latitude, double radius, GeoUnit unit) {
2419+
List<GeoRadiusResponse> result = delegate.georadius(key, longitude, latitude, radius, unit);
2420+
if (isFutureConversion()){
2421+
addResultConverter(identityConverter);
2422+
}
2423+
return result;
2424+
}
2425+
2426+
@Override
2427+
public List<GeoRadiusResponse> georadius(byte[] key, double longitude, double latitude, double radius, GeoUnit unit, GeoRadiusParam param) {
2428+
List<GeoRadiusResponse> result = delegate.georadius(key, longitude, latitude, radius, unit, param);
2429+
if (isFutureConversion()){
2430+
addResultConverter(identityConverter);
2431+
}
2432+
return result;
2433+
}
2434+
2435+
@Override
2436+
public List<GeoRadiusResponse> georadiusByMember(byte[] key, byte[] member, double radius, GeoUnit unit) {
2437+
List<GeoRadiusResponse> result = delegate.georadiusByMember(key, member, radius, unit);
2438+
if (isFutureConversion()){
2439+
addResultConverter(identityConverter);
2440+
}
2441+
return result;
2442+
}
2443+
2444+
@Override
2445+
public List<GeoRadiusResponse> georadiusByMember(byte[] key, byte[] member, double radius, GeoUnit unit, GeoRadiusParam param) {
2446+
List<GeoRadiusResponse> result = delegate.georadiusByMember(key, member, radius, unit, param);
2447+
if (isFutureConversion()){
2448+
addResultConverter(identityConverter);
2449+
}
2450+
return result;
2451+
}
2452+
2453+
@Override
2454+
public Long geoRemove(byte[] key, byte[]... values) {
2455+
return zRem(key, values);
2456+
}
2457+
2458+
@Override
2459+
public Long geoRemove(String key, String... members) {
2460+
return zRem(key, members);
2461+
}
2462+
22832463
public List<Object> closePipeline() {
22842464
try {
22852465
return convertResults(delegate.closePipeline(), pipelineConverters);

src/main/java/org/springframework/data/redis/connection/RedisCommands.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
*/
2525
public interface RedisCommands extends RedisKeyCommands, RedisStringCommands, RedisListCommands, RedisSetCommands,
2626
RedisZSetCommands, RedisHashCommands, RedisTxCommands, RedisPubSubCommands, RedisConnectionCommands,
27-
RedisServerCommands, RedisScriptingCommands, HyperLogLogCommands {
27+
RedisServerCommands, RedisScriptingCommands, RedisGeoCommands, HyperLogLogCommands {
2828

2929
/**
3030
* 'Native' or 'raw' execution of the given command along-side the given arguments. The command is executed as is,

0 commit comments

Comments
 (0)