Skip to content

Commit 550fc71

Browse files
committed
feat: update to support the new Watcher interface
1 parent 14219ea commit 550fc71

File tree

5 files changed

+36
-2
lines changed

5 files changed

+36
-2
lines changed

pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,15 @@
2121
<artifactId>slf4j-api</artifactId>
2222
<version>${slf4j.version}</version>
2323
</dependency>
24+
<dependency>
25+
<groupId>org.slf4j</groupId>
26+
<artifactId>slf4j-simple</artifactId>
27+
<version>${slf4j.version}</version>
28+
</dependency>
2429
<dependency>
2530
<groupId>org.casbin</groupId>
2631
<artifactId>jcasbin</artifactId>
27-
<version>1.6.3</version>
32+
<version>1.13.3</version>
2833
</dependency>
2934

3035
<dependency>

src/main/java/org/casbin/watcher/RedisWatcher.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import redis.clients.jedis.JedisPoolConfig;
77

88
import java.util.UUID;
9+
import java.util.function.Consumer;
910

1011
public class RedisWatcher implements Watcher {
1112
private Runnable updateCallback;
@@ -27,6 +28,11 @@ public void setUpdateCallback(Runnable runnable) {
2728
subThread.setUpdateCallback(runnable);
2829
}
2930

31+
@Override
32+
public void setUpdateCallback(Consumer<String> consumer) {
33+
subThread.setUpdateCallback(consumer);
34+
}
35+
3036
@Override
3137
public void update() {
3238
try (Jedis jedis = jedisPool.getResource()) {

src/main/java/org/casbin/watcher/SubThread.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import redis.clients.jedis.Jedis;
44
import redis.clients.jedis.JedisPool;
55

6+
import java.util.function.Consumer;
7+
68
public class SubThread extends Thread{
79
private final JedisPool jedisPool;
810
private final Subscriber subscriber;
@@ -18,6 +20,10 @@ public void setUpdateCallback(Runnable runnable){
1820
subscriber.setUpdateCallback(runnable);
1921
}
2022

23+
public void setUpdateCallback(Consumer<String> consumer) {
24+
subscriber.setUpdateCallback(consumer);
25+
}
26+
2127
@Override
2228
public void run() {
2329
try (Jedis jedis = jedisPool.getResource()) {

src/main/java/org/casbin/watcher/Subscriber.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
import redis.clients.jedis.JedisPubSub;
44

5+
import java.util.function.Consumer;
6+
57
public class Subscriber extends JedisPubSub {
68
private Runnable runnable;
9+
private Consumer<String> consumer;
710

811
public Subscriber(Runnable updateCallback) {
912
this.runnable = updateCallback;
@@ -13,7 +16,13 @@ public void setUpdateCallback(Runnable runnable){
1316
this.runnable = runnable;
1417
}
1518

19+
public void setUpdateCallback(Consumer<String> consumer) {
20+
this.consumer = consumer;
21+
}
22+
1623
public void onMessage(String channel, String message) {
1724
runnable.run();
25+
if (consumer != null)
26+
consumer.accept("Channel: " + channel + " Message: " + message);
1827
}
1928
}

src/test/java/org/casbin/test/RedisWatcherTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ public class RedisWatcherTest {
1212
private RedisWatcher redisWatcher;
1313
private final String expect="update msg";
1414

15-
1615
@Before
1716
public void initWatcher(){
1817
String redisTopic = "jcasbin-topic";
@@ -30,4 +29,13 @@ public void testUpdate() throws InterruptedException {
3029
Thread.sleep(100);
3130
Assert.assertEquals(expect, expect);
3231
}
32+
33+
@Test
34+
public void testConsumerCallback() throws InterruptedException {
35+
redisWatcher.setUpdateCallback((s) -> {
36+
System.out.print(s);
37+
});
38+
redisWatcher.update();
39+
Thread.sleep(100);
40+
}
3341
}

0 commit comments

Comments
 (0)