Skip to content

Commit 03f6446

Browse files
authored
Fix/selector params (#168)
* Fix ZGet example * fix(selector): fix selector "null" param When performing a query to "a/b/c", the queryable received a selector of "a/b/c?null=". Caused by a missing null check.
1 parent 0df5dc7 commit 03f6446

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

zenoh-java/src/commonMain/kotlin/io/zenoh/jni/JNISession.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ internal class JNISession {
276276
getViaJNI(
277277
selector.keyExpr.jniKeyExpr?.ptr ?: 0,
278278
selector.keyExpr.keyExpr,
279-
selector.parameters.toString(),
279+
selector.parameters?.toString(),
280280
sessionPtr.get(),
281281
getCallback,
282282
fun() {},
@@ -338,7 +338,7 @@ internal class JNISession {
338338
getViaJNI(
339339
selector.keyExpr.jniKeyExpr?.ptr ?: 0,
340340
selector.keyExpr.keyExpr,
341-
selector.parameters.toString(),
341+
selector.parameters?.toString(),
342342
sessionPtr.get(),
343343
getCallback,
344344
handler::onClose,

zenoh-java/src/jvmTest/java/io/zenoh/SelectorTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package io.zenoh;
1616

1717
import io.zenoh.exceptions.ZError;
18+
import io.zenoh.keyexpr.KeyExpr;
1819
import io.zenoh.query.Parameters;
1920
import io.zenoh.query.Selector;
2021
import org.junit.Test;
@@ -47,4 +48,35 @@ public void parametersTest() {
4748
var parameters = Parameters.from("a=1;b=2;c=1|2|3");
4849
assertEquals(List.of("1", "2", "3"), parameters.values("c"));
4950
}
51+
52+
/**
53+
* Check the queryable properly receives the query's selector with and without parameters.
54+
*/
55+
@Test
56+
public void selectorQueryTest() throws ZError, InterruptedException {
57+
var session = Zenoh.open(Config.loadDefault());
58+
var queryableKeyExpr = KeyExpr.tryFrom("a/b/**");
59+
60+
Selector[] receivedQuerySelector = new Selector[1];
61+
var queryable = session.declareQueryable(queryableKeyExpr, query -> {
62+
receivedQuerySelector[0] = query.getSelector();
63+
query.close();
64+
}
65+
);
66+
67+
var querySelector = Selector.tryFrom("a/b/c");
68+
session.get(querySelector, reply -> {
69+
});
70+
Thread.sleep(1000);
71+
assertEquals(querySelector, receivedQuerySelector[0]);
72+
73+
var querySelector2 = Selector.tryFrom("a/b/c?key=value");
74+
session.get(querySelector2, reply -> {
75+
});
76+
Thread.sleep(1000);
77+
assertEquals(querySelector2, receivedQuerySelector[0]);
78+
79+
queryable.close();
80+
session.close();
81+
}
5082
}

0 commit comments

Comments
 (0)