Skip to content

Commit 55f088e

Browse files
committed
Update Redis.java
1 parent ba583cf commit 55f088e

1 file changed

Lines changed: 55 additions & 44 deletions

File tree

  • src/main/java/io/github/intisy/utils/custom/external

src/main/java/io/github/intisy/utils/custom/external/Redis.java

Lines changed: 55 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.intisy.utils.custom.external;
22

3-
import io.github.intisy.simple.logger.Log;
3+
import io.github.intisy.simple.logger.EmptyLogger;
4+
import io.github.intisy.simple.logger.SimpleLogger;
45
import redis.embedded.RedisServer;
56
import redis.clients.jedis.Jedis;
67
import redis.clients.jedis.JedisPool;
@@ -30,6 +31,7 @@ default void onDataSet(String key, String value) {}
3031
private final int port;
3132
private final boolean useEmbedded;
3233
private JedisPool jedisPool;
34+
private SimpleLogger logger;
3335
private boolean connected = false;
3436
private RedisServer embeddedServer;
3537
private boolean useMockFallback = false;
@@ -59,6 +61,15 @@ public Redis(String host, int port, boolean useEmbedded) {
5961
this.host = host;
6062
this.port = port;
6163
this.useEmbedded = useEmbedded;
64+
this.logger = new EmptyLogger();
65+
}
66+
67+
public void setLogger(SimpleLogger logger) {
68+
this.logger = logger;
69+
}
70+
71+
public SimpleLogger getLogger() {
72+
return logger;
6273
}
6374

6475
public boolean isPortAvailable(int port) {
@@ -83,7 +94,7 @@ public void connect() throws IOException {
8394
try {
8495
startEmbeddedServer();
8596
} catch (IOException e) {
86-
Log.warn("Failed to start embedded Redis server. Falling back to mock implementation.", e);
97+
logger.warn("Failed to start embedded Redis server. Falling back to mock implementation.", e);
8798
mockRedis = new MockRedis();
8899
mockRedis.startServer();
89100

@@ -93,7 +104,7 @@ public void connect() throws IOException {
93104

94105
useMockFallback = true;
95106
connected = true;
96-
Log.note("Using mock Redis implementation as fallback");
107+
logger.note("Using mock Redis implementation as fallback");
97108
return;
98109
}
99110
}
@@ -126,11 +137,11 @@ public void connect() throws IOException {
126137
try (Jedis jedis = jedisPool.getResource()) {
127138
jedis.ping();
128139
connected = true;
129-
Log.note("Connected to Redis server at " + connectHost + ":" + connectPort);
140+
logger.note("Connected to Redis server at " + connectHost + ":" + connectPort);
130141
}
131142
} catch (JedisConnectionException e) {
132143
connected = false;
133-
Log.error("Failed to connect to Redis server at " + host + ":" + port, e);
144+
logger.error("Failed to connect to Redis server at " + host + ":" + port, e);
134145
if (jedisPool != null) {
135146
jedisPool.close();
136147
jedisPool = null;
@@ -141,10 +152,10 @@ public void connect() throws IOException {
141152
try (Jedis jedis = jedisPool.getResource()) {
142153
jedis.ping();
143154
connected = true;
144-
Log.note("Already connected to Redis server at " + host + ":" + port);
155+
logger.note("Already connected to Redis server at " + host + ":" + port);
145156
} catch (JedisConnectionException e) {
146157
connected = false;
147-
Log.error("Connection to Redis server at " + host + ":" + port + " is broken", e);
158+
logger.error("Connection to Redis server at " + host + ":" + port + " is broken", e);
148159
jedisPool.close();
149160
jedisPool = null;
150161
throw new IOException("Connection to Redis server is broken: " + e.getMessage(), e);
@@ -157,13 +168,13 @@ private void startEmbeddedServer() throws IOException {
157168
int serverPort = port;
158169

159170
if (!isPortAvailable(serverPort)) {
160-
Log.warn("Port " + serverPort + " is not available for embedded Redis server. Trying to find a free port...");
171+
logger.warn("Port " + serverPort + " is not available for embedded Redis server. Trying to find a free port...");
161172
serverPort = findFreePort();
162173
if (serverPort == -1) {
163-
Log.error("Could not find a free port for embedded Redis server");
174+
logger.error("Could not find a free port for embedded Redis server");
164175
throw new IOException("Could not find a free port for embedded Redis server");
165176
}
166-
Log.note("Found free port for embedded Redis server: " + serverPort);
177+
logger.note("Found free port for embedded Redis server: " + serverPort);
167178
}
168179

169180
try {
@@ -175,33 +186,33 @@ private void startEmbeddedServer() throws IOException {
175186
.build();
176187

177188
embeddedServer.start();
178-
Log.note("Embedded Redis server started on port: " + serverPort);
189+
logger.note("Embedded Redis server started on port: " + serverPort);
179190
} catch (IOException e) {
180-
Log.error("Failed to start embedded Redis server on port " + serverPort + ": " + e.getMessage(), e);
191+
logger.error("Failed to start embedded Redis server on port " + serverPort + ": " + e.getMessage(), e);
181192
stopEmbeddedServer();
182193
throw e;
183194
} catch (Exception e) {
184-
Log.error("An unexpected error occurred while starting embedded Redis server on port " + serverPort + ": " + e.getMessage(), e);
195+
logger.error("An unexpected error occurred while starting embedded Redis server on port " + serverPort + ": " + e.getMessage(), e);
185196
stopEmbeddedServer();
186197
throw new IOException("Unexpected error starting Redis: " + e.getMessage(), e);
187198
}
188199
} else {
189-
Log.note("Embedded Redis server is already running on port: " + port);
200+
logger.note("Embedded Redis server is already running on port: " + port);
190201
}
191202
}
192203

193204
private void stopEmbeddedServer() {
194205
if (embeddedServer != null && embeddedServer.isActive()) {
195206
try {
196207
embeddedServer.stop();
197-
Log.note("Embedded Redis server stopped on port: " + port);
208+
logger.note("Embedded Redis server stopped on port: " + port);
198209
} catch (Exception e) {
199-
Log.error("Error while stopping embedded Redis server on port " + port, e);
210+
logger.error("Error while stopping embedded Redis server on port " + port, e);
200211
} finally {
201212
embeddedServer = null;
202213
}
203214
} else if (embeddedServer == null) {
204-
Log.note("Embedded Redis server was not running or already stopped.");
215+
logger.note("Embedded Redis server was not running or already stopped.");
205216
}
206217
if (embeddedServer != null && !embeddedServer.isActive()){
207218
embeddedServer = null;
@@ -225,15 +236,15 @@ public void disconnect() {
225236
if (jedisPool != null) {
226237
try {
227238
jedisPool.close();
228-
Log.note("Disconnected from Redis server at " + host + ":" + port);
239+
logger.note("Disconnected from Redis server at " + host + ":" + port);
229240
} catch (Exception e) {
230-
Log.error("Error while closing Jedis pool", e);
241+
logger.error("Error while closing Jedis pool", e);
231242
} finally {
232243
jedisPool = null;
233244
connected = false;
234245
}
235246
} else {
236-
Log.note("Not connected to any Redis server");
247+
logger.note("Not connected to any Redis server");
237248
}
238249
}
239250

@@ -273,19 +284,19 @@ public String setData(String key, String value) {
273284
}
274285

275286
if (!isConnected()) {
276-
Log.error("Not connected to Redis server. Cannot set data.");
287+
logger.error("Not connected to Redis server. Cannot set data.");
277288
return null;
278289
}
279290
try (Jedis jedis = jedisPool.getResource()) {
280291
String result = jedis.set(key, value);
281292
notifyDataSetListeners(key, value);
282293
return result;
283294
} catch (JedisConnectionException e) {
284-
Log.error("Jedis connection error during SET operation", e);
295+
logger.error("Jedis connection error during SET operation", e);
285296
connected = false;
286297
return null;
287298
} catch (Exception e) {
288-
Log.error("Error setting data in Redis", e);
299+
logger.error("Error setting data in Redis", e);
289300
return null;
290301
}
291302
}
@@ -296,19 +307,19 @@ public String getData(String key) {
296307
}
297308

298309
if (!isConnected()) {
299-
Log.error("Not connected to Redis server. Cannot get data.");
310+
logger.error("Not connected to Redis server. Cannot get data.");
300311
return null;
301312
}
302313
try (Jedis jedis = jedisPool.getResource()) {
303314
String value = jedis.get(key);
304315
notifyDataListeners(key, value);
305316
return value;
306317
} catch (JedisConnectionException e) {
307-
Log.error("Jedis connection error during GET operation", e);
318+
logger.error("Jedis connection error during GET operation", e);
308319
connected = false;
309320
return null;
310321
} catch (Exception e) {
311-
Log.error("Error getting data from Redis", e);
322+
logger.error("Error getting data from Redis", e);
312323
return null;
313324
}
314325
}
@@ -319,17 +330,17 @@ public Long deleteData(String key) {
319330
}
320331

321332
if (!isConnected()) {
322-
Log.error("Not connected to Redis server. Cannot delete data.");
333+
logger.error("Not connected to Redis server. Cannot delete data.");
323334
return null;
324335
}
325336
try (Jedis jedis = jedisPool.getResource()) {
326337
return jedis.del(key);
327338
} catch (JedisConnectionException e) {
328-
Log.error("Jedis connection error during DELETE operation", e);
339+
logger.error("Jedis connection error during DELETE operation", e);
329340
connected = false;
330341
return null;
331342
} catch (Exception e) {
332-
Log.error("Error deleting data from Redis", e);
343+
logger.error("Error deleting data from Redis", e);
333344
return null;
334345
}
335346
}
@@ -340,17 +351,17 @@ public boolean exists(String key) {
340351
}
341352

342353
if (!isConnected()) {
343-
Log.error("Not connected to Redis server. Cannot check if key exists.");
354+
logger.error("Not connected to Redis server. Cannot check if key exists.");
344355
return false;
345356
}
346357
try (Jedis jedis = jedisPool.getResource()) {
347358
return jedis.exists(key);
348359
} catch (JedisConnectionException e) {
349-
Log.error("Jedis connection error during EXISTS operation", e);
360+
logger.error("Jedis connection error during EXISTS operation", e);
350361
connected = false;
351362
return false;
352363
} catch (Exception e) {
353-
Log.error("Error checking if key exists in Redis", e);
364+
logger.error("Error checking if key exists in Redis", e);
354365
return false;
355366
}
356367
}
@@ -361,19 +372,19 @@ public String setDataWithExpiry(String key, String value, int seconds) {
361372
}
362373

363374
if (!isConnected()) {
364-
Log.error("Not connected to Redis server. Cannot set data with expiry.");
375+
logger.error("Not connected to Redis server. Cannot set data with expiry.");
365376
return null;
366377
}
367378
try (Jedis jedis = jedisPool.getResource()) {
368379
String result = jedis.setex(key, seconds, value);
369380
notifyDataSetListeners(key, value);
370381
return result;
371382
} catch (JedisConnectionException e) {
372-
Log.error("Jedis connection error during SETEX operation", e);
383+
logger.error("Jedis connection error during SETEX operation", e);
373384
connected = false;
374385
return null;
375386
} catch (Exception e) {
376-
Log.error("Error setting data with expiry in Redis", e);
387+
logger.error("Error setting data with expiry in Redis", e);
377388
return null;
378389
}
379390
}
@@ -383,7 +394,7 @@ protected void notifyDataListeners(String key, String value) {
383394
try {
384395
listener.onDataReceived(key, value);
385396
} catch (Exception e) {
386-
Log.error("Error notifying Redis data listener for data received", e);
397+
logger.error("Error notifying Redis data listener for data received", e);
387398
}
388399
}
389400
}
@@ -393,7 +404,7 @@ protected void notifyDataSetListeners(String key, String value) {
393404
try {
394405
listener.onDataSet(key, value);
395406
} catch (Exception e) {
396-
Log.error("Error notifying Redis data listener for data set", e);
407+
logger.error("Error notifying Redis data listener for data set", e);
397408
}
398409
}
399410
}
@@ -419,13 +430,13 @@ public MockRedis() {
419430

420431
public void startServer() {
421432
running = true;
422-
Log.note("Mock Redis server started");
433+
getLogger().note("Mock Redis server started");
423434
}
424435

425436
public void stopServer() {
426437
running = false;
427438
dataStore.clear();
428-
Log.note("Mock Redis server stopped");
439+
getLogger().note("Mock Redis server stopped");
429440
}
430441

431442
public boolean isRunning() {
@@ -435,7 +446,7 @@ public boolean isRunning() {
435446
@Override
436447
public String setData(String key, String value) {
437448
if (!isRunning()) {
438-
Log.error("Mock Redis server is not running. Cannot set data.");
449+
getLogger().error("Mock Redis server is not running. Cannot set data.");
439450
return null;
440451
}
441452
dataStore.put(key, value);
@@ -446,7 +457,7 @@ public String setData(String key, String value) {
446457
@Override
447458
public String getData(String key) {
448459
if (!isRunning()) {
449-
Log.error("Mock Redis server is not running. Cannot get data.");
460+
getLogger().error("Mock Redis server is not running. Cannot get data.");
450461
return null;
451462
}
452463
String value = dataStore.get(key);
@@ -457,7 +468,7 @@ public String getData(String key) {
457468
@Override
458469
public Long deleteData(String key) {
459470
if (!isRunning()) {
460-
Log.error("Mock Redis server is not running. Cannot delete data.");
471+
getLogger().error("Mock Redis server is not running. Cannot delete data.");
461472
return null;
462473
}
463474
if (dataStore.containsKey(key)) {
@@ -470,7 +481,7 @@ public Long deleteData(String key) {
470481
@Override
471482
public boolean exists(String key) {
472483
if (!isRunning()) {
473-
Log.error("Mock Redis server is not running. Cannot check if key exists.");
484+
getLogger().error("Mock Redis server is not running. Cannot check if key exists.");
474485
return false;
475486
}
476487
return dataStore.containsKey(key);
@@ -479,7 +490,7 @@ public boolean exists(String key) {
479490
@Override
480491
public String setDataWithExpiry(String key, String value, int seconds) {
481492
if (!isRunning()) {
482-
Log.error("Mock Redis server is not running. Cannot set data with expiry.");
493+
getLogger().error("Mock Redis server is not running. Cannot set data with expiry.");
483494
return null;
484495
}
485496
dataStore.put(key, value);

0 commit comments

Comments
 (0)