11package 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 ;
45import redis .embedded .RedisServer ;
56import redis .clients .jedis .Jedis ;
67import 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