This is an automated email from the ASF dual-hosted git repository.

hanahmily pushed a commit to branch property
in repository 
https://gitbox.apache.org/repos/asf/skywalking-banyandb-java-client.git

commit 80d5a3bc0ff6c35c14a32c029416c0d45a58f8c4
Author: Gao Hongtao <hanahm...@gmail.com>
AuthorDate: Fri Mar 24 10:13:13 2023 +0800

    Add multi-ID and multi-tag filters to property list operation
    
    This update introduces two filters in the property client that enable
    property selection based on multiple IDs and multiple tags. These
    filters are fully supported by the server.
---
 .../banyandb/v1/client/BanyanDBClient.java         | 16 ++++++++++++-
 .../banyandb/v1/client/metadata/PropertyStore.java | 20 ++++++++++------
 .../v1/client/ITBanyanDBPropertyTests.java         | 28 ++++++++++++++++++++++
 .../v1/client/metadata/PropertyStoreTest.java      |  2 +-
 4 files changed, 57 insertions(+), 9 deletions(-)

diff --git 
a/src/main/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClient.java 
b/src/main/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClient.java
index 5c5e902..c6abc80 100644
--- a/src/main/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClient.java
+++ b/src/main/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClient.java
@@ -361,8 +361,22 @@ public class BanyanDBClient implements Closeable {
      * @return all properties belonging to the group and the name
      */
     public List<Property> findProperties(String group, String name) throws 
BanyanDBException {
+        return findProperties(group, name, null, null);
+
+    }
+
+    /**
+     * List Properties
+     *
+     * @param group group of the metadata
+     * @param name  name of the metadata
+     * @param ids   identities of the properties
+     * @param tags  tags to be returned
+     * @return all properties belonging to the group and the name
+     */
+    public List<Property> findProperties(String group, String name, 
List<String> ids, List<String> tags) throws BanyanDBException {
         PropertyStore store = new PropertyStore(checkNotNull(this.channel));
-        return store.list(group, name);
+        return store.list(group, name, ids, tags);
     }
 
     /**
diff --git 
a/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/PropertyStore.java
 
b/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/PropertyStore.java
index 8758746..c75ebf8 100644
--- 
a/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/PropertyStore.java
+++ 
b/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/PropertyStore.java
@@ -97,14 +97,20 @@ public class PropertyStore {
         return Property.fromProtobuf(resp.getProperty());
     }
 
-    public List<Property> list(String group, String name) throws 
BanyanDBException {
+    public List<Property> list(String group, String name, List<String> ids, 
List<String> tags) throws BanyanDBException {
+        BanyandbProperty.ListRequest.Builder builder = 
BanyandbProperty.ListRequest.newBuilder()
+                .setContainer(BanyandbCommon.Metadata.newBuilder()
+                .setGroup(group)
+                .setName(name)
+                .build());
+        if (ids != null && ids.size() > 0) {
+            builder.addAllIds(ids);
+        }
+        if (tags != null && tags.size() > 0) {
+            builder.addAllTags(tags);
+        }
         BanyandbProperty.ListResponse resp = 
HandleExceptionsWith.callAndTranslateApiException(() ->
-                this.stub.list(BanyandbProperty.ListRequest.newBuilder()
-                        .setContainer(BanyandbCommon.Metadata.newBuilder()
-                                .setGroup(group)
-                                .setName(name)
-                                .build())
-                        .build()));
+                this.stub.list(builder.build()));
 
         return 
resp.getPropertyList().stream().map(Property::fromProtobuf).collect(Collectors.toList());
     }
diff --git 
a/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBPropertyTests.java
 
b/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBPropertyTests.java
index b2eaf03..f3524d4 100644
--- 
a/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBPropertyTests.java
+++ 
b/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBPropertyTests.java
@@ -28,6 +28,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 import static org.awaitility.Awaitility.await;
@@ -100,4 +102,30 @@ public class ITBanyanDBPropertyTests extends 
BanyanDBClientTestCI {
             Assert.assertEquals(property2, gotProperty);
         });
     }
+
+    @Test
+    public void test_PropertyList() throws BanyanDBException {
+        Property property = Property.create("default", "sw", "id1")
+                .addTag(TagAndValue.newStringTag("name", "bar"))
+                .build();
+        Assert.assertTrue(this.client.apply(property).created());
+        property = Property.create("default", "sw", "id2")
+                .addTag(TagAndValue.newStringTag("name", "foo"))
+                .build();
+        Assert.assertTrue(this.client.apply(property).created());
+
+        await().atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
+            List<Property> gotProperties = client.findProperties("default", 
"sw");
+            Assert.assertEquals(2, gotProperties.size());
+        });
+        await().atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
+            List<Property> gotProperties = client.findProperties("default", 
"sw", Arrays.asList("id1", "id2"), null);
+            Assert.assertEquals(2, gotProperties.size());
+        });
+        await().atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
+            List<Property> gotProperties = client.findProperties("default", 
"sw", Arrays.asList("id2"), null);
+            Assert.assertEquals(1, gotProperties.size());
+        });
+    }
+
 }
diff --git 
a/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/PropertyStoreTest.java
 
b/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/PropertyStoreTest.java
index 8cceff0..ad31872 100644
--- 
a/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/PropertyStoreTest.java
+++ 
b/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/PropertyStoreTest.java
@@ -121,7 +121,7 @@ public class PropertyStoreTest extends 
AbstractBanyanDBClientTest {
                 .addTag(TagAndValue.newStringTag("name", "hello"))
                 .build();
         Assert.assertTrue(this.store.apply(property, 
PropertyStore.Strategy.REPLACE).created());
-        List<Property> listProperties = this.store.list("default", "sw");
+        List<Property> listProperties = this.store.list("default", "sw", null, 
null);
         Assert.assertNotNull(listProperties);
         Assert.assertEquals(1, listProperties.size());
         Assert.assertEquals(listProperties.get(0), property);

Reply via email to