From a5f2810aa740f7e4e17bdaa9b3ee5e5a832cb987 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 26 Oct 2018 14:45:53 +0300 Subject: [PATCH] refactoring --- .../cluster/ClusterConnectionManager.java | 4 ++- .../redisson/command/CommandAsyncService.java | 26 +++++++++---------- .../ReplicatedConnectionManager.java | 4 ++- .../connection/SentinelConnectionManager.java | 4 ++- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java b/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java index 974b97cca..fb5dc9f40 100644 --- a/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java +++ b/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java @@ -795,7 +795,9 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager { @Override public void shutdown() { - monitorFuture.cancel(true); + if (monitorFuture != null) { + monitorFuture.cancel(true); + } closeNodeConnections(); super.shutdown(); diff --git a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java index c2769c221..449c342ca 100644 --- a/redisson/src/main/java/org/redisson/command/CommandAsyncService.java +++ b/redisson/src/main/java/org/redisson/command/CommandAsyncService.java @@ -946,14 +946,14 @@ public class CommandAsyncService implements CommandAsyncExecutor { private void handleReference(RPromise mainPromise, R res) { try { - mainPromise.trySuccess(tryHandleReference(res)); + mainPromise.trySuccess((R) tryHandleReference(res)); } catch (Exception e) { //fall back and let other part of the code handle the type conversion. mainPromise.trySuccess(res); } } - protected T tryHandleReference(T o) { + protected Object tryHandleReference(Object o) { boolean hasConversion = false; if (o instanceof List) { List r = (List) o; @@ -1001,7 +1001,7 @@ public class CommandAsyncService implements CommandAsyncExecutor { if (!hasConversion) { return o; } else if (useNewSet) { - return (T) set; + return set; } else if (!set.isEmpty()) { r.removeAll(set); } @@ -1031,12 +1031,12 @@ public class CommandAsyncService implements CommandAsyncExecutor { } else if (o instanceof MapScanResult) { MapScanResult scanResult = (MapScanResult) o; Map oldMap = ((MapScanResult) o).getMap(); - Map map = tryHandleReference(oldMap); + Map map = (Map) tryHandleReference(oldMap); if (map != oldMap) { MapScanResult newScanResult = new MapScanResult(scanResult.getPos(), map); newScanResult.setRedisClient(scanResult.getRedisClient()); - return (T) newScanResult; + return newScanResult; } else { return o; } @@ -1045,35 +1045,35 @@ public class CommandAsyncService implements CommandAsyncExecutor { } } - private T tryHandleReference0(T o) { + private Object tryHandleReference0(Object o) { if (o instanceof RedissonReference) { return fromReference(o); } else if (o instanceof ScoredEntry && ((ScoredEntry) o).getValue() instanceof RedissonReference) { ScoredEntry se = ((ScoredEntry) o); - return (T) new ScoredEntry(se.getScore(), fromReference(se.getValue())); + return new ScoredEntry(se.getScore(), fromReference(se.getValue())); } else if (o instanceof Map.Entry) { Map.Entry old = (Map.Entry) o; Object key = tryHandleReference0(old.getKey()); Object value = tryHandleReference0(old.getValue()); return value != old.getValue() || key != old.getKey() - ? (T) new AbstractMap.SimpleEntry(key, value) + ? new AbstractMap.SimpleEntry(key, value) : o; } else { return o; } } - private R fromReference(Object res) { + private Object fromReference(Object res) { try { if (redisson != null) { - return RedissonObjectFactory.fromReference(redisson, (RedissonReference) res); + return RedissonObjectFactory.fromReference(redisson, (RedissonReference) res); } if (redissonReactive != null) { - return RedissonObjectFactory.fromReference(redissonReactive, (RedissonReference) res); + return RedissonObjectFactory.fromReference(redissonReactive, (RedissonReference) res); } - return RedissonObjectFactory.fromReference(redissonRx, (RedissonReference) res); + return RedissonObjectFactory.fromReference(redissonRx, (RedissonReference) res); } catch (Exception exception) { - return (R) res; + return res; } } diff --git a/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java b/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java index 8e0db78b9..176630f14 100644 --- a/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java @@ -175,7 +175,9 @@ public class ReplicatedConnectionManager extends MasterSlaveConnectionManager { @Override public void shutdown() { - monitorFuture.cancel(true); + if (monitorFuture != null) { + monitorFuture.cancel(true); + } closeNodeConnections(); super.shutdown(); diff --git a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java index 7f2b20465..641cb15c1 100755 --- a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java @@ -543,7 +543,9 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { @Override public void shutdown() { - monitorFuture.cancel(true); + if (monitorFuture != null) { + monitorFuture.cancel(true); + } List> futures = new ArrayList>(); for (RedisClient sentinel : sentinels.values()) {