This is an automated email from the ASF dual-hosted git repository. hanahmily pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb-java-client.git
The following commit(s) were added to refs/heads/main by this push: new bb8c43d Add multi-ID and multi-tag filters to property list operation (#39) bb8c43d is described below commit bb8c43d4b8a380e04f8a0543a64e35e3d251651e Author: Gao Hongtao <hanahm...@gmail.com> AuthorDate: Fri Mar 24 10:28:41 2023 +0800 Add multi-ID and multi-tag filters to property list operation (#39) 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);