Browse Source

Refine code (#1407)

Signed-off-by: yhmo <yihua.mo@zilliz.com>
groot 1 week ago
parent
commit
709c2dfc60

+ 10 - 6
sdk-core/src/main/java/io/milvus/v2/service/collection/request/AddFieldReq.java

@@ -53,16 +53,20 @@ public class AddFieldReq {
     @Builder.ObtainVia(field = "hiddenField")
     private boolean enableDefaultValue = false; // a flag to pass the default value to server or not
     private Boolean enableAnalyzer; // for BM25 tokenizer
-    Map<String, Object> analyzerParams; // for BM25 tokenizer
+    private Map<String, Object> analyzerParams; // for BM25 tokenizer
     private Boolean enableMatch; // for BM25 keyword search
 
     // If a specific field, such as maxLength, has been specified, it will override the corresponding key's value in typeParams.
     private Map<String, String> typeParams;
-    Map<String, Object> multiAnalyzerParams; // for multi‑language analyzers
+    private Map<String, Object> multiAnalyzerParams; // for multi‑language analyzers
 
-    AddFieldReq setDefaultValue(Object obj) {
-        enableDefaultValue = true; // automatically set this flag
-        this.defaultValue = obj;
-        return this;
+    public static abstract class AddFieldReqBuilder<C extends AddFieldReq, B extends AddFieldReq.AddFieldReqBuilder<C, B>> {
+        public B defaultValue(Object value) {
+            this.defaultValue$value = value;
+            this.defaultValue$set = true;
+
+            this.enableDefaultValue = true; // automatically set this flag
+            return self();
+        }
     }
 }

+ 5 - 5
sdk-core/src/main/java/io/milvus/v2/service/collection/request/CreateCollectionReq.java

@@ -217,12 +217,12 @@ public class CreateCollectionReq {
         @Builder.Default
         private Object defaultValue = null; // only for scalar fields
         private Boolean enableAnalyzer; // for BM25 tokenizer
-        Map<String, Object> analyzerParams; // for BM25 tokenizer
+        private Map<String, Object> analyzerParams; // for BM25 tokenizer
         private Boolean enableMatch; // for BM25 keyword search
 
         // If a specific field, such as maxLength, has been specified, it will override the corresponding key's value in typeParams.
         private Map<String, String> typeParams;
-        Map<String, Object> multiAnalyzerParams; // for multi‑language analyzers
+        private Map<String, Object> multiAnalyzerParams; // for multi‑language analyzers
     }
 
     @Data
@@ -231,10 +231,10 @@ public class CreateCollectionReq {
         private String name;
         @Builder.Default
         private String description = "";
-        FunctionType functionType;
+        private FunctionType functionType;
         @Builder.Default
-        List<String> inputFieldNames = new ArrayList<>();
+        private List<String> inputFieldNames = new ArrayList<>();
         @Builder.Default
-        List<String> outputFieldNames = new ArrayList<>();
+        private List<String> outputFieldNames = new ArrayList<>();
     }
 }

+ 5 - 3
sdk-core/src/main/java/io/milvus/v2/service/collection/response/DescribeCollectionResp.java

@@ -25,6 +25,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.experimental.SuperBuilder;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -37,9 +38,10 @@ public class DescribeCollectionResp {
     private String databaseName;
     private String description;
     private Long numOfPartitions;
-
-    private List<String> fieldNames;
-    private List<String> vectorFieldNames;
+    @Builder.Default
+    private List<String> fieldNames = new ArrayList<>();
+    @Builder.Default
+    private List<String> vectorFieldNames = new ArrayList<>();
     private String primaryFieldName;
     private Boolean enableDynamicField;
     private Boolean autoID;

+ 4 - 1
sdk-core/src/main/java/io/milvus/v2/service/database/response/ListDatabasesResp.java

@@ -19,13 +19,16 @@
 
 package io.milvus.v2.service.database.response;
 
+import lombok.Builder;
 import lombok.Data;
 import lombok.experimental.SuperBuilder;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Data
 @SuperBuilder
 public class ListDatabasesResp {
-    private List<String> databaseNames;
+    @Builder.Default
+    private List<String> databaseNames = new ArrayList<>();
 }

+ 5 - 5
sdk-core/src/main/java/io/milvus/v2/service/index/response/DescribeIndexResp.java

@@ -35,7 +35,7 @@ import java.util.Map;
 @SuperBuilder
 public class DescribeIndexResp {
     @Builder.Default
-    List<IndexDesc> indexDescriptions = new ArrayList<>();
+    private List<IndexDesc> indexDescriptions = new ArrayList<>();
 
     public IndexDesc getIndexDescByFieldName(@NonNull String fieldName) {
         for (IndexDesc desc : indexDescriptions) {
@@ -68,15 +68,15 @@ public class DescribeIndexResp {
         @Builder.Default
         private Map<String, String> extraParams = new HashMap<>();
         @Builder.Default
-        long indexedRows = 0;
+        private long indexedRows = 0;
         @Builder.Default
-        long totalRows = 0;
+        private long totalRows = 0;
         @Builder.Default
-        long pendingIndexRows = 0;
+        private long pendingIndexRows = 0;
         @Builder.Default
         private IndexBuildState indexState = IndexBuildState.IndexStateNone;
         @Builder.Default
-        String indexFailedReason = "";
+        private String indexFailedReason = "";
 
         // In 2.4/2.5, properties only contains one item "mmap.enabled".
         // To keep consistence with other SDKs, we intend to remove this member from IndexDesc,

+ 4 - 1
sdk-core/src/main/java/io/milvus/v2/service/rbac/response/DescribeRoleResp.java

@@ -20,15 +20,18 @@
 package io.milvus.v2.service.rbac.response;
 
 import io.milvus.grpc.GrantEntity;
+import lombok.Builder;
 import lombok.Data;
 import lombok.experimental.SuperBuilder;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Data
 @SuperBuilder
 public class DescribeRoleResp {
-    List<GrantInfo> grantInfos;
+    @Builder.Default
+    private List<GrantInfo> grantInfos = new ArrayList<>();
 
     @Data
     @SuperBuilder

+ 4 - 1
sdk-core/src/main/java/io/milvus/v2/service/rbac/response/DescribeUserResp.java

@@ -19,13 +19,16 @@
 
 package io.milvus.v2.service.rbac.response;
 
+import lombok.Builder;
 import lombok.Data;
 import lombok.experimental.SuperBuilder;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Data
 @SuperBuilder
 public class DescribeUserResp {
-    private List<String> roles;
+    @Builder.Default
+    private List<String> roles = new ArrayList<>();
 }

+ 3 - 3
sdk-core/src/main/java/io/milvus/v2/service/resourcegroup/request/TransferNodeReq.java

@@ -6,7 +6,7 @@ import lombok.experimental.SuperBuilder;
 @Data
 @SuperBuilder
 public class TransferNodeReq {
-    String sourceGroupName;
-    String targetGroupName;
-    Integer numOfNodes;
+    private String sourceGroupName;
+    private String targetGroupName;
+    private Integer numOfNodes;
 }

+ 4 - 1
sdk-core/src/main/java/io/milvus/v2/service/vector/response/InsertResp.java

@@ -19,14 +19,17 @@
 
 package io.milvus.v2.service.vector.response;
 
+import lombok.Builder;
 import lombok.Data;
 import lombok.experimental.SuperBuilder;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Data
 @SuperBuilder
 public class InsertResp {
     private long InsertCnt;
-    private List<Object> primaryKeys;
+    @Builder.Default
+    private List<Object> primaryKeys = new ArrayList<>();
 }

+ 6 - 2
sdk-core/src/main/java/io/milvus/v2/service/vector/response/QueryResp.java

@@ -23,19 +23,23 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.experimental.SuperBuilder;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 @Data
 @SuperBuilder
 public class QueryResp {
-    private List<QueryResult> queryResults;
+    @Builder.Default
+    private List<QueryResult> queryResults = new ArrayList<>();
     @Builder.Default
     private long sessionTs = 1L; // default eventually ts
 
     @Data
     @SuperBuilder
     public static class QueryResult {
-        private Map<String, Object> entity;
+        @Builder.Default
+        private Map<String, Object> entity = new HashMap<>();
     }
 }

+ 2 - 2
sdk-core/src/main/java/io/milvus/v2/service/vector/response/RunAnalyzerResp.java

@@ -30,13 +30,13 @@ import java.util.List;
 @SuperBuilder
 public class RunAnalyzerResp {
     @Builder.Default
-    List<AnalyzerResult> results = new ArrayList<>();
+    private List<AnalyzerResult> results = new ArrayList<>();
 
     @Data
     @SuperBuilder
     public static final class AnalyzerResult {
         @Builder.Default
-        List<AnalyzerToken> tokens = new ArrayList<>();
+        private List<AnalyzerToken> tokens = new ArrayList<>();
     }
 
     @Data

+ 8 - 3
sdk-core/src/main/java/io/milvus/v2/service/vector/response/SearchResp.java

@@ -23,21 +23,26 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.experimental.SuperBuilder;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 @Data
 @SuperBuilder
 public class SearchResp {
-    private List<List<SearchResult>> searchResults;
+    @Builder.Default
+    private List<List<SearchResult>> searchResults = new ArrayList<>();
     @Builder.Default
     private long sessionTs = 1L; // default eventually ts
-    private List<Float> recalls;
+    @Builder.Default
+    private List<Float> recalls = new ArrayList<>();
 
     @Data
     @SuperBuilder
     public static class SearchResult {
-        private Map<String, Object> entity;
+        @Builder.Default
+        private Map<String, Object> entity = new HashMap<>();
         private Float score;
         private Object id;
     }

+ 13 - 1
sdk-core/src/test/java/io/milvus/v2/client/MilvusClientV2DockerTest.java

@@ -1936,6 +1936,7 @@ class MilvusClientV2DockerTest {
         collectionSchema.addField(AddFieldReq.builder()
                 .fieldName("flag")
                 .dataType(DataType.Int32)
+                .isNullable(true)
                 .defaultValue((int)10)
                 .build());
         collectionSchema.addField(AddFieldReq.builder()
@@ -1952,6 +1953,15 @@ class MilvusClientV2DockerTest {
                 .maxCapacity(100)
                 .build());
 
+        Assertions.assertThrows(MilvusClientException.class, () ->
+                collectionSchema.addField(AddFieldReq.builder()
+                        .fieldName("illegal")
+                        .dataType(DataType.Bool)
+                        .isNullable(false)
+                        .defaultValue(null)
+                        .build())
+        );
+
         List<IndexParam> indexParams = new ArrayList<>();
         indexParams.add(IndexParam.builder()
                 .fieldName("vector")
@@ -1977,7 +1987,9 @@ class MilvusClientV2DockerTest {
                 row.addProperty("flag", i);
                 row.add("desc", JsonNull.INSTANCE);
             } else {
-//                row.add("flag", JsonNull.INSTANCE);
+                if (i == 5) {
+                    row.add("flag", JsonNull.INSTANCE); // both null or unset will use the default value
+                }
                 row.addProperty("desc", "AAA");
 
                 List<Integer> arr = Arrays.asList(5, 6);