Просмотр исходного кода

Second Step: Remove Lombok from io.milvus.v2 (#1547)

Signed-off-by: kun <kunyinglang@163.com>
kun 5 месяцев назад
Родитель
Сommit
7a4db8bd03
100 измененных файлов с 9212 добавлено и 1037 удалено
  1. 91 4
      sdk-core/src/main/java/io/milvus/common/resourcegroup/NodeInfo.java
  2. 81 11
      sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupConfig.java
  3. 45 7
      sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupLimit.java
  4. 72 15
      sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupNodeFilter.java
  5. 25 9
      sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupTransfer.java
  6. 28 6
      sdk-core/src/main/java/io/milvus/common/utils/URLParser.java
  7. 87 13
      sdk-core/src/main/java/io/milvus/param/ParamUtils.java
  8. 35 9
      sdk-core/src/main/java/io/milvus/param/alias/AlterAliasParam.java
  9. 35 9
      sdk-core/src/main/java/io/milvus/param/alias/CreateAliasParam.java
  10. 26 8
      sdk-core/src/main/java/io/milvus/param/alias/DropAliasParam.java
  11. 26 8
      sdk-core/src/main/java/io/milvus/param/alias/ListAliasesParam.java
  12. 49 10
      sdk-core/src/main/java/io/milvus/param/bulkinsert/BulkInsertParam.java
  13. 24 7
      sdk-core/src/main/java/io/milvus/param/bulkinsert/GetBulkInsertStateParam.java
  14. 35 8
      sdk-core/src/main/java/io/milvus/param/bulkinsert/ListBulkInsertTasksParam.java
  15. 40 10
      sdk-core/src/main/java/io/milvus/param/collection/AlterCollectionParam.java
  16. 38 14
      sdk-core/src/main/java/io/milvus/param/collection/AlterDatabaseParam.java
  17. 29 9
      sdk-core/src/main/java/io/milvus/param/collection/CollectionSchemaParam.java
  18. 36 11
      sdk-core/src/main/java/io/milvus/param/collection/CreateDatabaseParam.java
  19. 24 11
      sdk-core/src/main/java/io/milvus/param/collection/DescribeCollectionParam.java
  20. 67 56
      sdk-core/src/main/java/io/milvus/param/collection/DescribeDatabaseParam.java
  21. 31 15
      sdk-core/src/main/java/io/milvus/param/collection/DropCollectionParam.java
  22. 20 8
      sdk-core/src/main/java/io/milvus/param/collection/DropDatabaseParam.java
  23. 111 16
      sdk-core/src/main/java/io/milvus/param/collection/FieldType.java
  24. 55 12
      sdk-core/src/main/java/io/milvus/param/collection/FlushParam.java
  25. 30 9
      sdk-core/src/main/java/io/milvus/param/collection/GetCollectionStatisticsParam.java
  26. 37 9
      sdk-core/src/main/java/io/milvus/param/collection/GetLoadStateParam.java
  27. 37 9
      sdk-core/src/main/java/io/milvus/param/collection/GetLoadingProgressParam.java
  28. 24 8
      sdk-core/src/main/java/io/milvus/param/collection/HasCollectionParam.java
  29. 96 16
      sdk-core/src/main/java/io/milvus/param/collection/LoadCollectionParam.java
  30. 21 8
      sdk-core/src/main/java/io/milvus/param/collection/ReleaseCollectionParam.java
  31. 49 19
      sdk-core/src/main/java/io/milvus/param/collection/RenameCollectionParam.java
  32. 36 7
      sdk-core/src/main/java/io/milvus/param/control/GetCompactionPlansParam.java
  33. 35 8
      sdk-core/src/main/java/io/milvus/param/control/GetMetricsParam.java
  34. 35 7
      sdk-core/src/main/java/io/milvus/param/control/ManualCompactParam.java
  35. 80 11
      sdk-core/src/main/java/io/milvus/param/dml/InsertParam.java
  36. 182 28
      sdk-core/src/main/java/io/milvus/param/dml/SearchParam.java
  37. 60 7
      sdk-core/src/main/java/io/milvus/param/highlevel/dml/response/DeleteResponse.java
  38. 57 5
      sdk-core/src/main/java/io/milvus/param/highlevel/dml/response/SearchResponse.java
  39. 62 8
      sdk-core/src/main/java/io/milvus/param/index/DropIndexParam.java
  40. 243 25
      sdk-core/src/main/java/io/milvus/pool/PoolConfig.java
  41. 388 16
      sdk-core/src/main/java/io/milvus/v2/client/ConnectConfig.java
  42. 9 4
      sdk-core/src/main/java/io/milvus/v2/client/MilvusClientV2.java
  43. 151 11
      sdk-core/src/main/java/io/milvus/v2/client/RetryConfig.java
  44. 5 4
      sdk-core/src/main/java/io/milvus/v2/common/CompactionState.java
  45. 9 2
      sdk-core/src/main/java/io/milvus/v2/common/ConsistencyLevel.java
  46. 5 4
      sdk-core/src/main/java/io/milvus/v2/common/DataType.java
  47. 142 8
      sdk-core/src/main/java/io/milvus/v2/common/IndexParam.java
  48. 4 3
      sdk-core/src/main/java/io/milvus/v2/exception/ErrorCode.java
  49. 13 3
      sdk-core/src/main/java/io/milvus/v2/exception/MilvusClientException.java
  50. 165 15
      sdk-core/src/main/java/io/milvus/v2/service/collection/ReplicaInfo.java
  51. 110 9
      sdk-core/src/main/java/io/milvus/v2/service/collection/ShardReplica.java
  52. 196 5
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/AddCollectionFieldReq.java
  53. 372 29
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/AddFieldReq.java
  54. 108 13
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/AlterCollectionFieldReq.java
  55. 94 13
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/AlterCollectionPropertiesReq.java
  56. 88 13
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/AlterCollectionReq.java
  57. 963 73
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/CreateCollectionReq.java
  58. 75 4
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/DescribeCollectionReq.java
  59. 75 4
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/DescribeReplicasReq.java
  60. 111 6
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/DropCollectionFieldPropertiesReq.java
  61. 93 7
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/DropCollectionPropertiesReq.java
  62. 116 9
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/DropCollectionReq.java
  63. 57 4
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/GetCollectionStatsReq.java
  64. 75 4
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/GetLoadStateReq.java
  65. 57 4
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/HasCollectionReq.java
  66. 221 26
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/LoadCollectionReq.java
  67. 128 21
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/RefreshLoadReq.java
  68. 96 7
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/ReleaseCollectionReq.java
  69. 75 4
      sdk-core/src/main/java/io/milvus/v2/service/collection/request/RenameCollectionReq.java
  70. 314 12
      sdk-core/src/main/java/io/milvus/v2/service/collection/response/DescribeCollectionResp.java
  71. 58 7
      sdk-core/src/main/java/io/milvus/v2/service/collection/response/DescribeReplicasResp.java
  72. 58 4
      sdk-core/src/main/java/io/milvus/v2/service/collection/response/GetCollectionStatsResp.java
  73. 58 7
      sdk-core/src/main/java/io/milvus/v2/service/collection/response/ListCollectionsResp.java
  74. 78 14
      sdk-core/src/main/java/io/milvus/v2/service/database/request/AlterDatabasePropertiesReq.java
  75. 73 6
      sdk-core/src/main/java/io/milvus/v2/service/database/request/AlterDatabaseReq.java
  76. 74 7
      sdk-core/src/main/java/io/milvus/v2/service/database/request/CreateDatabaseReq.java
  77. 54 4
      sdk-core/src/main/java/io/milvus/v2/service/database/request/DescribeDatabaseReq.java
  78. 74 8
      sdk-core/src/main/java/io/milvus/v2/service/database/request/DropDatabasePropertiesReq.java
  79. 54 4
      sdk-core/src/main/java/io/milvus/v2/service/database/request/DropDatabaseReq.java
  80. 74 7
      sdk-core/src/main/java/io/milvus/v2/service/database/response/DescribeDatabaseResp.java
  81. 55 7
      sdk-core/src/main/java/io/milvus/v2/service/database/response/ListDatabasesResp.java
  82. 113 14
      sdk-core/src/main/java/io/milvus/v2/service/index/request/AlterIndexPropertiesReq.java
  83. 110 7
      sdk-core/src/main/java/io/milvus/v2/service/index/request/AlterIndexReq.java
  84. 136 9
      sdk-core/src/main/java/io/milvus/v2/service/index/request/CreateIndexReq.java
  85. 136 8
      sdk-core/src/main/java/io/milvus/v2/service/index/request/DescribeIndexReq.java
  86. 109 7
      sdk-core/src/main/java/io/milvus/v2/service/index/request/DropIndexPropertiesReq.java
  87. 100 6
      sdk-core/src/main/java/io/milvus/v2/service/index/request/DropIndexReq.java
  88. 82 6
      sdk-core/src/main/java/io/milvus/v2/service/index/request/ListIndexesReq.java
  89. 326 32
      sdk-core/src/main/java/io/milvus/v2/service/index/response/DescribeIndexResp.java
  90. 73 4
      sdk-core/src/main/java/io/milvus/v2/service/partition/request/CreatePartitionReq.java
  91. 73 4
      sdk-core/src/main/java/io/milvus/v2/service/partition/request/DropPartitionReq.java
  92. 73 4
      sdk-core/src/main/java/io/milvus/v2/service/partition/request/GetPartitionStatsReq.java
  93. 73 4
      sdk-core/src/main/java/io/milvus/v2/service/partition/request/HasPartitionReq.java
  94. 54 4
      sdk-core/src/main/java/io/milvus/v2/service/partition/request/ListPartitionsReq.java
  95. 207 21
      sdk-core/src/main/java/io/milvus/v2/service/partition/request/LoadPartitionsReq.java
  96. 73 4
      sdk-core/src/main/java/io/milvus/v2/service/partition/request/ReleasePartitionsReq.java
  97. 54 4
      sdk-core/src/main/java/io/milvus/v2/service/partition/response/GetPartitionStatsResp.java
  98. 74 7
      sdk-core/src/main/java/io/milvus/v2/service/rbac/PrivilegeGroup.java
  99. 73 6
      sdk-core/src/main/java/io/milvus/v2/service/rbac/request/AddPrivilegesToGroupReq.java
  100. 54 4
      sdk-core/src/main/java/io/milvus/v2/service/rbac/request/CreatePrivilegeGroupReq.java

+ 91 - 4
sdk-core/src/main/java/io/milvus/common/resourcegroup/NodeInfo.java

@@ -19,13 +19,100 @@
 
 package io.milvus.common.resourcegroup;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class NodeInfo {
     private Long nodeId;
     private String address;
     private String hostname;
+
+    private NodeInfo(Builder builder) {
+        this.nodeId = builder.nodeId;
+        this.address = builder.address;
+        this.hostname = builder.hostname;
+    }
+
+    public Long getNodeId() {
+        return nodeId;
+    }
+
+    public void setNodeId(Long nodeId) {
+        this.nodeId = nodeId;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getHostname() {
+        return hostname;
+    }
+
+    public void setHostname(String hostname) {
+        this.hostname = hostname;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        NodeInfo nodeInfo = (NodeInfo) obj;
+        return new EqualsBuilder()
+                .append(nodeId, nodeInfo.nodeId)
+                .append(address, nodeInfo.address)
+                .append(hostname, nodeInfo.hostname)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = nodeId != null ? nodeId.hashCode() : 0;
+        result = 31 * result + (address != null ? address.hashCode() : 0);
+        result = 31 * result + (hostname != null ? hostname.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "NodeInfo{" +
+                "nodeId=" + nodeId +
+                ", address='" + address + '\'' +
+                ", hostname='" + hostname + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private Long nodeId;
+        private String address;
+        private String hostname;
+
+        private Builder() {}
+
+        public Builder nodeId(Long nodeId) {
+            this.nodeId = nodeId;
+            return this;
+        }
+
+        public Builder address(String address) {
+            this.address = address;
+            return this;
+        }
+
+        public Builder hostname(String hostname) {
+            this.hostname = hostname;
+            return this;
+        }
+
+        public NodeInfo build() {
+            return new NodeInfo(this);
+        }
+    }
 }

+ 81 - 11
sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupConfig.java

@@ -22,10 +22,8 @@ package io.milvus.common.resourcegroup;
 import java.util.stream.Collectors;
 import java.util.List;
 import java.util.ArrayList;
-import lombok.NonNull;
-import lombok.Getter;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Getter
 public class ResourceGroupConfig {
     private final ResourceGroupLimit requests;
     private final ResourceGroupLimit limits;
@@ -71,7 +69,10 @@ public class ResourceGroupConfig {
          * @param requests requests node num in resource group, if node num is less than requests.nodeNum, it will be transfer from other resource group.
          * @return <code>Builder</code>
          */
-        public Builder withRequests(@NonNull ResourceGroupLimit requests) {
+        public Builder withRequests(ResourceGroupLimit requests) {
+            if (requests == null) {
+                throw new IllegalArgumentException("requests cannot be null");
+            }
             this.requests = requests;
             return this;
         }
@@ -82,7 +83,10 @@ public class ResourceGroupConfig {
          * @param limits limited node num in resource group, if node num is more than limits.nodeNum, it will be transfer to other resource group.
          * @return <code>Builder</code>
          */
-        public Builder withLimits(@NonNull ResourceGroupLimit limits) {
+        public Builder withLimits(ResourceGroupLimit limits) {
+            if (limits == null) {
+                throw new IllegalArgumentException("limits cannot be null");
+            }
             this.limits = limits;
             return this;
         }
@@ -93,7 +97,10 @@ public class ResourceGroupConfig {
          * @param from missing node should be transfer from given resource group at high priority in repeated list.
          * @return <code>Builder</code>
          */
-        public Builder withFrom(@NonNull List<ResourceGroupTransfer> from) {
+        public Builder withFrom(List<ResourceGroupTransfer> from) {
+            if (from == null) {
+                throw new IllegalArgumentException("from cannot be null");
+            }
             this.from = from;
             return this;
         }
@@ -104,7 +111,10 @@ public class ResourceGroupConfig {
          * @param to redundant node should be transfer to given resource group at high priority in repeated list.
          * @return <code>Builder</code>
          */
-        public Builder withTo(@NonNull List<ResourceGroupTransfer> to) {
+        public Builder withTo(List<ResourceGroupTransfer> to) {
+            if (to == null) {
+                throw new IllegalArgumentException("to cannot be null");
+            }
             this.to = to;
             return this;
         }
@@ -114,8 +124,10 @@ public class ResourceGroupConfig {
          * @param nodeFilter if node filter set, resource group will prefer to accept node which match node filter.
          * @return <code>Builder</code>
          */
-
-        public Builder withNodeFilter(@NonNull ResourceGroupNodeFilter nodeFilter) {
+        public Builder withNodeFilter(ResourceGroupNodeFilter nodeFilter) {
+            if (nodeFilter == null) {
+                throw new IllegalArgumentException("nodeFilter cannot be null");
+            }
             this.nodeFilter = nodeFilter;
             return this;
         }
@@ -125,7 +137,10 @@ public class ResourceGroupConfig {
         }
     }
 
-    public ResourceGroupConfig(@NonNull io.milvus.grpc.ResourceGroupConfig grpcConfig) {
+    public ResourceGroupConfig(io.milvus.grpc.ResourceGroupConfig grpcConfig) {
+        if (grpcConfig == null) {
+            throw new IllegalArgumentException("grpcConfig cannot be null");
+        }
         this.requests = new ResourceGroupLimit(grpcConfig.getRequests());
         this.limits = new ResourceGroupLimit(grpcConfig.getLimits());
         this.from = grpcConfig.getTransferFromList().stream()
@@ -137,7 +152,27 @@ public class ResourceGroupConfig {
         this.nodeFilter = new ResourceGroupNodeFilter(grpcConfig.getNodeFilter());
     }
 
-    public @NonNull io.milvus.grpc.ResourceGroupConfig toGRPC() {
+    public ResourceGroupLimit getRequests() {
+        return requests;
+    }
+
+    public ResourceGroupLimit getLimits() {
+        return limits;
+    }
+
+    public List<ResourceGroupTransfer> getFrom() {
+        return from;
+    }
+
+    public List<ResourceGroupTransfer> getTo() {
+        return to;
+    }
+
+    public ResourceGroupNodeFilter getNodeFilter() {
+        return nodeFilter;
+    }
+
+    public io.milvus.grpc.ResourceGroupConfig toGRPC() {
         io.milvus.grpc.ResourceGroupConfig.Builder builder = io.milvus.grpc.ResourceGroupConfig.newBuilder()
                 .setRequests(io.milvus.grpc.ResourceGroupLimit.newBuilder().setNodeNum(requests.getNodeNum()))
                 .setLimits(io.milvus.grpc.ResourceGroupLimit.newBuilder().setNodeNum(limits.getNodeNum()));
@@ -158,4 +193,39 @@ public class ResourceGroupConfig {
 
         return builder.build();
     }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        ResourceGroupConfig that = (ResourceGroupConfig) obj;
+        return new EqualsBuilder()
+                .append(requests, that.requests)
+                .append(limits, that.limits)
+                .append(from, that.from)
+                .append(to, that.to)
+                .append(nodeFilter, that.nodeFilter)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = requests != null ? requests.hashCode() : 0;
+        result = 31 * result + (limits != null ? limits.hashCode() : 0);
+        result = 31 * result + (from != null ? from.hashCode() : 0);
+        result = 31 * result + (to != null ? to.hashCode() : 0);
+        result = 31 * result + (nodeFilter != null ? nodeFilter.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "ResourceGroupConfig{" +
+                "requests=" + requests +
+                ", limits=" + limits +
+                ", from=" + from +
+                ", to=" + to +
+                ", nodeFilter=" + nodeFilter +
+                '}';
+    }
 }

+ 45 - 7
sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupLimit.java

@@ -19,10 +19,8 @@
 
 package io.milvus.common.resourcegroup;
 
-import lombok.Getter;
-import lombok.NonNull;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Getter
 public class ResourceGroupLimit {
     private Integer nodeNum;
 
@@ -31,7 +29,10 @@ public class ResourceGroupLimit {
      * 
      * @param nodeNum query node number in this group
      */
-    public ResourceGroupLimit(@NonNull Integer nodeNum) {
+    public ResourceGroupLimit(Integer nodeNum) {
+        if (nodeNum == null) {
+            throw new IllegalArgumentException("Node number cannot be null");
+        }
         this.nodeNum = nodeNum;
     }
 
@@ -40,7 +41,10 @@ public class ResourceGroupLimit {
      * 
      * @param grpcLimit grpc object to set limit of node number
      */
-    public ResourceGroupLimit(@NonNull io.milvus.grpc.ResourceGroupLimit grpcLimit) {
+    public ResourceGroupLimit(io.milvus.grpc.ResourceGroupLimit grpcLimit) {
+        if (grpcLimit == null) {
+            throw new IllegalArgumentException("GRPC limit cannot be null");
+        }
         this.nodeNum = grpcLimit.getNodeNum();
     }
 
@@ -49,7 +53,41 @@ public class ResourceGroupLimit {
      * 
      * @return <code>io.milvus.grpc.ResourceGroupLimit</code>
      */
-    public @NonNull io.milvus.grpc.ResourceGroupLimit toGRPC() {
-        return io.milvus.grpc.ResourceGroupLimit.newBuilder().setNodeNum(nodeNum).build();
+    public io.milvus.grpc.ResourceGroupLimit toGRPC() {
+        io.milvus.grpc.ResourceGroupLimit result = io.milvus.grpc.ResourceGroupLimit.newBuilder().setNodeNum(nodeNum).build();
+        if (result == null) {
+            throw new IllegalStateException("Failed to create GRPC ResourceGroupLimit");
+        }
+        return result;
+    }
+
+    public Integer getNodeNum() {
+        return nodeNum;
+    }
+
+    @Override
+    public String toString() {
+        return "ResourceGroupLimit{" +
+                "nodeNum=" + nodeNum +
+                '}';
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null || getClass() != obj.getClass()) {
+            return false;
+        }
+        ResourceGroupLimit that = (ResourceGroupLimit) obj;
+        return new EqualsBuilder()
+                .append(nodeNum, that.nodeNum)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return nodeNum != null ? nodeNum.hashCode() : 0;
     }
 }

+ 72 - 15
sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupNodeFilter.java

@@ -22,14 +22,13 @@ package io.milvus.common.resourcegroup;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 import io.milvus.grpc.KeyValuePair;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Getter
 public class ResourceGroupNodeFilter {
     private final Map<String, String> nodeLabels;
 
@@ -37,12 +36,38 @@ public class ResourceGroupNodeFilter {
         this.nodeLabels = builder.nodeLabels;
     }
 
+    /**
+     * Constructor from grpc
+     * @param filter grpc filter object
+     */
+    public ResourceGroupNodeFilter(io.milvus.grpc.ResourceGroupNodeFilter filter) {
+        if (filter == null) {
+            throw new IllegalArgumentException("filter cannot be null");
+        }
+        this.nodeLabels = filter.getNodeLabelsList().stream().collect(Collectors.toMap(KeyValuePair::getKey, KeyValuePair::getValue));
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
 
-    public static final class Builder {
+    /**
+     * Create ResourceGroupNodeFilter from grpc object
+     * @param filter grpc filter object
+     * @return ResourceGroupNodeFilter instance
+     */
+    public static ResourceGroupNodeFilter fromGRPC(io.milvus.grpc.ResourceGroupNodeFilter filter) {
+        return new ResourceGroupNodeFilter(filter);
+    }
+
+    // Getter method to replace @Getter annotation
+    public Map<String, String> getNodeLabels() {
+        return nodeLabels;
+    }
+
+    public static class Builder {
         private Map<String, String> nodeLabels = new HashMap<>();
+        
         private Builder() {
         }
 
@@ -52,7 +77,14 @@ public class ResourceGroupNodeFilter {
          * @param value label value
          * @return <code>Builder</code>
          */
-        public Builder withNodeLabel(@NonNull String key, @NonNull String value) {
+        public Builder withNodeLabel(String key, String value) {
+            // Replace @NonNull logic with explicit null checks
+            if (key == null) {
+                throw new IllegalArgumentException("key cannot be null");
+            }
+            if (value == null) {
+                throw new IllegalArgumentException("value cannot be null");
+            }
             this.nodeLabels.put(key, value);
             return this;
         }
@@ -66,19 +98,44 @@ public class ResourceGroupNodeFilter {
      * Transfer to grpc
      * @return io.milvus.grpc.ResourceGroupNodeFilter
      */
-    public @NonNull io.milvus.grpc.ResourceGroupNodeFilter toGRPC() {
+    public io.milvus.grpc.ResourceGroupNodeFilter toGRPC() {
         List<KeyValuePair> pair = ParamUtils.AssembleKvPair(nodeLabels);
-        return io.milvus.grpc.ResourceGroupNodeFilter.newBuilder()
+        io.milvus.grpc.ResourceGroupNodeFilter result = io.milvus.grpc.ResourceGroupNodeFilter.newBuilder()
                 .addAllNodeLabels(pair)
-               .build();
+                .build();
+        
+        // Replace @NonNull logic with explicit null check
+        if (result == null) {
+            throw new IllegalStateException("Failed to create GRPC ResourceGroupNodeFilter");
+        }
+        return result;
     }
 
-    /**
-     * Constructor from grpc
-     * @param filter grpc filter object
-     */
-    public ResourceGroupNodeFilter(io.milvus.grpc.ResourceGroupNodeFilter filter) {
-        this.nodeLabels = filter.getNodeLabelsList().stream().collect(Collectors.toMap(KeyValuePair::getKey, KeyValuePair::getValue));
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null || getClass() != obj.getClass()) {
+            return false;
+        }
+        ResourceGroupNodeFilter that = (ResourceGroupNodeFilter) obj;
+        return new EqualsBuilder()
+                .append(nodeLabels, that.nodeLabels)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(nodeLabels);
     }
 
-}
+    @Override
+    public String toString() {
+        return "ResourceGroupNodeFilter{" +
+                "nodeLabels=" + nodeLabels +
+                '}';
+    }
+
+
+}

+ 25 - 9
sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupTransfer.java

@@ -19,19 +19,18 @@
 
 package io.milvus.common.resourcegroup;
 
-import lombok.Getter;
-import lombok.NonNull;
-
-@Getter
 public class ResourceGroupTransfer {
-    private String resourceGroupName;
+    private final String resourceGroupName;
 
     /**
      * Constructor with resource group name.
      * 
      * @param resourceGroupName resource group name
      */
-    public ResourceGroupTransfer(@NonNull String resourceGroupName) {
+    public ResourceGroupTransfer(String resourceGroupName) {
+        if (resourceGroupName == null) {
+            throw new IllegalArgumentException("resourceGroupName cannot be null");
+        }
         this.resourceGroupName = resourceGroupName;
     }
 
@@ -40,18 +39,35 @@ public class ResourceGroupTransfer {
      * 
      * @param grpcTransfer grpc transfer object
      */
-    public ResourceGroupTransfer(@NonNull io.milvus.grpc.ResourceGroupTransfer grpcTransfer) {
+    public ResourceGroupTransfer(io.milvus.grpc.ResourceGroupTransfer grpcTransfer) {
+        if (grpcTransfer == null) {
+            throw new IllegalArgumentException("grpcTransfer cannot be null");
+        }
         this.resourceGroupName = grpcTransfer.getResourceGroup();
     }
 
+    /**
+     * Get resource group name
+     * 
+     * @return resource group name
+     */
+    public String getResourceGroupName() {
+        return resourceGroupName;
+    }
+
     /**
      * Transfer to grpc
      * 
      * @return io.milvus.grpc.ResourceGroupTransfer
      */
-    public @NonNull io.milvus.grpc.ResourceGroupTransfer toGRPC() {
-        return io.milvus.grpc.ResourceGroupTransfer.newBuilder()
+    public io.milvus.grpc.ResourceGroupTransfer toGRPC() {
+        io.milvus.grpc.ResourceGroupTransfer result = io.milvus.grpc.ResourceGroupTransfer.newBuilder()
                 .setResourceGroup(resourceGroupName)
                 .build();
+        
+        if (result == null) {
+            throw new IllegalStateException("Failed to create GRPC ResourceGroupTransfer");
+        }
+        return result;
     }
 }

+ 28 - 6
sdk-core/src/main/java/io/milvus/common/utils/URLParser.java

@@ -19,9 +19,6 @@
 
 package io.milvus.utils;
 
-import lombok.Getter;
-import lombok.ToString;
-
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Objects;
@@ -29,8 +26,6 @@ import java.util.Objects;
 /**
  * @author: wei.hu@zilliz.com
  */
-@Getter
-@ToString
 public class URLParser {
 
     private String hostname;
@@ -70,4 +65,31 @@ public class URLParser {
         }
     }
 
-}
+    // Getter methods to replace @Getter annotation
+    public String getHostname() {
+        return hostname;
+    }
+
+    public int getPort() {
+        return port;
+    }
+
+    public String getDatabase() {
+        return database;
+    }
+
+    public boolean isSecure() {
+        return secure;
+    }
+
+    // toString method to replace @ToString annotation
+    @Override
+    public String toString() {
+        return "URLParser{" +
+                "hostname='" + hostname + '\'' +
+                ", port=" + port +
+                ", database='" + database + '\'' +
+                ", secure=" + secure +
+                '}';
+    }
+}

+ 87 - 13
sdk-core/src/main/java/io/milvus/param/ParamUtils.java

@@ -33,9 +33,6 @@ import io.milvus.param.dml.ranker.BaseRanker;
 import io.milvus.response.DescCollResponseWrapper;
 import io.milvus.v2.exception.ErrorCode;
 import io.milvus.v2.exception.MilvusClientException;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NonNull;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -506,8 +503,11 @@ public class ParamUtils {
         private InsertRequest.Builder insertBuilder;
         private UpsertRequest.Builder upsertBuilder;
 
-        public InsertBuilderWrapper(@NonNull InsertParam requestParam,
+        public InsertBuilderWrapper(InsertParam requestParam,
                                     DescCollResponseWrapper wrapper) {
+            if (requestParam == null) {
+                throw new IllegalArgumentException("requestParam cannot be null");
+            }
             String collectionName = requestParam.getCollectionName();
 
             // generate insert request builder
@@ -522,8 +522,11 @@ public class ParamUtils {
             fillFieldsData(requestParam, wrapper);
         }
 
-        public InsertBuilderWrapper(@NonNull UpsertParam requestParam,
+        public InsertBuilderWrapper(UpsertParam requestParam,
                                     DescCollResponseWrapper wrapper) {
+            if (requestParam == null) {
+                throw new IllegalArgumentException("requestParam cannot be null");
+            }
             String collectionName = requestParam.getCollectionName();
 
             // generate upsert request builder
@@ -843,7 +846,10 @@ public class ParamUtils {
     }
 
     @SuppressWarnings("unchecked")
-    public static SearchRequest convertSearchParam(@NonNull SearchParam requestParam) throws ParamException {
+    public static SearchRequest convertSearchParam(SearchParam requestParam) throws ParamException {
+        if (requestParam == null) {
+            throw new IllegalArgumentException("requestParam cannot be null");
+        }
         String dbName = requestParam.getDatabaseName();
         String collectionName = requestParam.getCollectionName();
         SearchRequest.Builder builder = SearchRequest.newBuilder()
@@ -957,8 +963,11 @@ public class ParamUtils {
         return builder.build();
     }
 
-    public static SearchRequest convertAnnSearchParam(@NonNull AnnSearchParam annSearchParam,
+    public static SearchRequest convertAnnSearchParam(AnnSearchParam annSearchParam,
                                                       ConsistencyLevelEnum consistencyLevel) {
+        if (annSearchParam == null) {
+            throw new IllegalArgumentException("annSearchParam cannot be null");
+        }
         SearchRequest.Builder builder = SearchRequest.newBuilder();
         ByteString byteStr = convertPlaceholder(annSearchParam.getVectors(), annSearchParam.getPlType());
         builder.setPlaceholderGroup(byteStr);
@@ -1006,7 +1015,10 @@ public class ParamUtils {
         return builder.build();
     }
 
-    public static HybridSearchRequest convertHybridSearchParam(@NonNull HybridSearchParam requestParam) throws ParamException {
+    public static HybridSearchRequest convertHybridSearchParam(HybridSearchParam requestParam) throws ParamException {
+        if (requestParam == null) {
+            throw new IllegalArgumentException("requestParam cannot be null");
+        }
         String dbName = requestParam.getDatabaseName();
         String collectionName = requestParam.getCollectionName();
         HybridSearchRequest.Builder builder = HybridSearchRequest.newBuilder()
@@ -1074,7 +1086,10 @@ public class ParamUtils {
         return builder.build();
     }
 
-    public static QueryRequest convertQueryParam(@NonNull QueryParam requestParam) {
+    public static QueryRequest convertQueryParam(QueryParam requestParam) {
+        if (requestParam == null) {
+            throw new IllegalArgumentException("requestParam cannot be null");
+        }
         String dbName = requestParam.getDatabaseName();
         String collectionName = requestParam.getCollectionName();
         boolean useDefaultConsistency = (requestParam.getConsistencyLevel() == null);
@@ -1393,7 +1408,10 @@ public class ParamUtils {
      * @param field FieldSchema object
      * @return {@link FieldType} schema of the field
      */
-    public static FieldType ConvertField(@NonNull FieldSchema field) {
+    public static FieldType ConvertField(FieldSchema field) {
+        if (field == null) {
+            throw new IllegalArgumentException("field cannot be null");
+        }
         FieldType.Builder builder = FieldType.newBuilder()
                 .withName(field.getName())
                 .withDescription(field.getDescription())
@@ -1427,7 +1445,10 @@ public class ParamUtils {
      * @param field {@link FieldType} object
      * @return {@link FieldSchema} schema of the field
      */
-    public static FieldSchema ConvertField(@NonNull FieldType field) {
+    public static FieldSchema ConvertField(FieldType field) {
+        if (field == null) {
+            throw new IllegalArgumentException("field cannot be null");
+        }
         FieldSchema.Builder builder = FieldSchema.newBuilder()
                 .setName(field.getName())
                 .setDescription(field.getDescription())
@@ -1568,10 +1589,63 @@ public class ParamUtils {
         return result;
     }
 
-    @Builder
-    @Getter
     public static class InsertDataInfo {
         private final FieldType fieldType;
         private final LinkedList<Object> data;
+
+        private InsertDataInfo(Builder builder) {
+            this.fieldType = builder.fieldType;
+            this.data = builder.data;
+        }
+
+        public static Builder builder() {
+            return new Builder();
+        }
+
+        public FieldType getFieldType() {
+            return fieldType;
+        }
+
+        public LinkedList<Object> getData() {
+            return data;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null || getClass() != obj.getClass()) {
+                return false;
+            }
+            InsertDataInfo that = (InsertDataInfo) obj;
+            return Objects.equals(fieldType, that.fieldType) &&
+                    Objects.equals(data, that.data);
+        }
+
+        public static class Builder {
+            private FieldType fieldType;
+            private LinkedList<Object> data;
+
+            public Builder fieldType(FieldType fieldType) {
+                this.fieldType = fieldType;
+                return this;
+            }
+
+            public Builder data(LinkedList<Object> data) {
+                this.data = data;
+                return this;
+            }
+
+            public InsertDataInfo build() {
+                if (fieldType == null) {
+                    throw new IllegalArgumentException("fieldType cannot be null");
+                }
+                if (data == null) {
+                    throw new IllegalArgumentException("data cannot be null");
+                }
+                return new InsertDataInfo(this);
+            }
+        }
     }
 }

+ 35 - 9
sdk-core/src/main/java/io/milvus/param/alias/AlterAliasParam.java

@@ -22,26 +22,46 @@ package io.milvus.param.alias;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 /**
  * Parameters for <code>alterAlias</code> interface.
  */
-@Getter
-@ToString
 public class AlterAliasParam {
     private final String collectionName;
     private final String databaseName;
     private final String alias;
 
-    private AlterAliasParam(@NonNull AlterAliasParam.Builder builder) {
+    private AlterAliasParam(Builder builder) {
+        if (builder == null) {
+            throw new IllegalArgumentException("builder cannot be null");
+        }
         this.collectionName = builder.collectionName;
         this.databaseName = builder.databaseName;
         this.alias = builder.alias;
     }
 
+    // Getter methods to replace @Getter annotation
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public String getAlias() {
+        return alias;
+    }
+
+    // toString method to replace @ToString annotation
+    @Override
+    public String toString() {
+        return "AlterAliasParam{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", alias='" + alias + '\'' +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -63,7 +83,10 @@ public class AlterAliasParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -85,7 +108,10 @@ public class AlterAliasParam {
          * @param alias alias of the collection
          * @return <code>Builder</code>
          */
-        public Builder withAlias(@NonNull String alias) {
+        public Builder withAlias(String alias) {
+            if (alias == null) {
+                throw new IllegalArgumentException("alias cannot be null");
+            }
             this.alias = alias;
             return this;
         }

+ 35 - 9
sdk-core/src/main/java/io/milvus/param/alias/CreateAliasParam.java

@@ -22,26 +22,46 @@ package io.milvus.param.alias;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 /**
  * Parameters for <code>createAlias</code> interface.
  */
-@Getter
-@ToString
 public class CreateAliasParam {
     private final String collectionName;
     private final String databaseName;
     private final String alias;
 
-    private CreateAliasParam(@NonNull CreateAliasParam.Builder builder) {
+    private CreateAliasParam(CreateAliasParam.Builder builder) {
+        if (builder == null) {
+            throw new IllegalArgumentException("builder cannot be null");
+        }
         this.collectionName = builder.collectionName;
         this.databaseName = builder.databaseName;
         this.alias = builder.alias;
     }
 
+    // Getter methods to replace @Getter annotation
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public String getAlias() {
+        return alias;
+    }
+
+    // toString method to replace @ToString annotation
+    @Override
+    public String toString() {
+        return "CreateAliasParam{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", alias='" + alias + '\'' +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -63,7 +83,10 @@ public class CreateAliasParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -85,7 +108,10 @@ public class CreateAliasParam {
          * @param alias alias of the collection
          * @return <code>Builder</code>
          */
-        public Builder withAlias(@NonNull String alias) {
+        public Builder withAlias(String alias) {
+            if (alias == null) {
+                throw new IllegalArgumentException("alias cannot be null");
+            }
             this.alias = alias;
             return this;
         }

+ 26 - 8
sdk-core/src/main/java/io/milvus/param/alias/DropAliasParam.java

@@ -22,24 +22,39 @@ package io.milvus.param.alias;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 /**
  * Parameters for <code>dropAlias</code> interface.
  */
-@Getter
-@ToString
 public class DropAliasParam {
     private final String alias;
     private final String databaseName;
 
-    private DropAliasParam(@NonNull Builder builder) {
+    private DropAliasParam(Builder builder) {
+        if (builder == null) {
+            throw new IllegalArgumentException("builder cannot be null");
+        }
         this.alias = builder.alias;
         this.databaseName = builder.databaseName;
     }
 
+    // Getter methods to replace @Getter annotation
+    public String getAlias() {
+        return alias;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    // toString method to replace @ToString annotation
+    @Override
+    public String toString() {
+        return "DropAliasParam{" +
+                "alias='" + alias + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -60,7 +75,10 @@ public class DropAliasParam {
          * @param alias alias of the collection
          * @return <code>Builder</code>
          */
-        public Builder withAlias(@NonNull String alias) {
+        public Builder withAlias(String alias) {
+            if (alias == null) {
+                throw new IllegalArgumentException("alias cannot be null");
+            }
             this.alias = alias;
             return this;
         }

+ 26 - 8
sdk-core/src/main/java/io/milvus/param/alias/ListAliasesParam.java

@@ -22,21 +22,36 @@ package io.milvus.param.alias;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
-@Getter
-@ToString
 public class ListAliasesParam {
     private final String collectionName;
     private final String databaseName;
 
-    private ListAliasesParam(@NonNull Builder builder) {
+    private ListAliasesParam(Builder builder) {
+        if (builder == null) {
+            throw new IllegalArgumentException("builder cannot be null");
+        }
         this.collectionName = builder.collectionName;
         this.databaseName = builder.databaseName;
     }
 
+    // Getter methods to replace @Getter annotation
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    // toString method to replace @ToString annotation
+    @Override
+    public String toString() {
+        return "ListAliasesParam{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -57,7 +72,10 @@ public class ListAliasesParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }

+ 49 - 10
sdk-core/src/main/java/io/milvus/param/bulkinsert/BulkInsertParam.java

@@ -21,9 +21,6 @@ package io.milvus.param.bulkinsert;
 
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.ArrayList;
@@ -34,8 +31,6 @@ import java.util.Map;
 /**
  * Parameters for <code>bulkInsert</code> interface.
  */
-@Getter
-@ToString
 public class BulkInsertParam {
     private final String databaseName;
     private final String collectionName;
@@ -43,7 +38,10 @@ public class BulkInsertParam {
     private final List<String> files;
     private final Map<String, String> options;
 
-    private BulkInsertParam(@NonNull Builder builder) {
+    private BulkInsertParam(Builder builder) {
+        if (builder == null) {
+            throw new IllegalArgumentException("builder cannot be null");
+        }
         this.databaseName = builder.databaseName;
         this.collectionName = builder.collectionName;
         this.partitionName = builder.partitionName;
@@ -51,6 +49,39 @@ public class BulkInsertParam {
         this.options = builder.options;
     }
 
+    // Getter methods to replace @Getter annotation
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getPartitionName() {
+        return partitionName;
+    }
+
+    public List<String> getFiles() {
+        return files;
+    }
+
+    public Map<String, String> getOptions() {
+        return options;
+    }
+
+    // toString method to replace @ToString annotation
+    @Override
+    public String toString() {
+        return "BulkInsertParam{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", partitionName='" + partitionName + '\'' +
+                ", files=" + files +
+                ", options=" + options +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -84,7 +115,10 @@ public class BulkInsertParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -107,7 +141,10 @@ public class BulkInsertParam {
          * @param files a <code>List</code> of {@link String}
          * @return <code>Builder</code>
          */
-        public Builder withFiles(@NonNull List<String> files) {
+        public Builder withFiles(List<String> files) {
+            if (files == null) {
+                throw new IllegalArgumentException("files cannot be null");
+            }
             this.files.addAll(files);
             return this;
         }
@@ -119,7 +156,10 @@ public class BulkInsertParam {
          * @param file a {@link String}
          * @return <code>Builder</code>
          */
-        public Builder addFile(@NonNull String file) {
+        public Builder addFile(String file) {
+            if (file == null) {
+                throw new IllegalArgumentException("file cannot be null");
+            }
             this.files.add(file);
             return this;
         }
@@ -144,7 +184,6 @@ public class BulkInsertParam {
         public BulkInsertParam build() throws ParamException {
             ParamUtils.CheckNullEmptyString(collectionName, "Collection name");
 
-
             if (files.isEmpty()) {
                 throw new ParamException("File path is required");
             }

+ 24 - 7
sdk-core/src/main/java/io/milvus/param/bulkinsert/GetBulkInsertStateParam.java

@@ -20,22 +20,36 @@
 package io.milvus.param.bulkinsert;
 
 import io.milvus.exception.ParamException;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 
 /**
  * Parameters for <code>getBulkInsertState</code> interface.
  */
-@Getter
-@ToString
 public class GetBulkInsertStateParam {
     private final Long task;
 
-    private GetBulkInsertStateParam(@NonNull Builder builder) {
+    private GetBulkInsertStateParam(Builder builder) {
+        if (builder == null) {
+            throw new IllegalArgumentException("builder cannot be null");
+        }
+        if (builder.task == null) {
+            throw new IllegalArgumentException("task cannot be null");
+        }
         this.task = builder.task;
     }
 
+    // Getter method to replace @Getter annotation
+    public Long getTask() {
+        return task;
+    }
+
+    // toString method to replace @ToString annotation
+    @Override
+    public String toString() {
+        return "GetBulkInsertStateParam{" +
+                "task=" + task +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -55,7 +69,10 @@ public class GetBulkInsertStateParam {
          * @param task task id
          * @return <code>Builder</code>
          */
-        public Builder withTask(@NonNull Long task) {
+        public Builder withTask(Long task) {
+            if (task == null) {
+                throw new IllegalArgumentException("task cannot be null");
+            }
             this.task = task;
             return this;
         }

+ 35 - 8
sdk-core/src/main/java/io/milvus/param/bulkinsert/ListBulkInsertTasksParam.java

@@ -20,26 +20,47 @@
 package io.milvus.param.bulkinsert;
 
 import io.milvus.exception.ParamException;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 
 /**
  * Parameters for <code>listBulkInsertTasks</code> interface.
  */
-@Getter
-@ToString
 public class ListBulkInsertTasksParam {
     private final String databaseName;
     private final String collectionName;
     private final int limit;
 
-    private ListBulkInsertTasksParam(@NonNull Builder builder) {
+    private ListBulkInsertTasksParam(Builder builder) {
+        if (builder == null) {
+            throw new IllegalArgumentException("builder cannot be null");
+        }
         this.databaseName = builder.databaseName;
         this.collectionName = builder.collectionName;
         this.limit = builder.limit;
     }
 
+    // Getter methods to replace @Getter annotation
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public int getLimit() {
+        return limit;
+    }
+
+    // toString method to replace @ToString annotation
+    @Override
+    public String toString() {
+        return "ListBulkInsertTasksParam{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", limit=" + limit +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -76,7 +97,10 @@ public class ListBulkInsertTasksParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -88,7 +112,10 @@ public class ListBulkInsertTasksParam {
          * @param limit limit number
          * @return <code>Builder</code>
          */
-        public Builder withLimit(@NonNull Integer limit) {
+        public Builder withLimit(Integer limit) {
+            if (limit == null) {
+                throw new IllegalArgumentException("limit cannot be null");
+            }
             this.limit = limit;
             if (this.limit < 0) {
                 this.limit = 0;

+ 40 - 10
sdk-core/src/main/java/io/milvus/param/collection/AlterCollectionParam.java

@@ -22,9 +22,6 @@ package io.milvus.param.collection;
 import io.milvus.exception.ParamException;
 import io.milvus.param.Constant;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -32,19 +29,41 @@ import java.util.Map;
 /**
  * Parameters for <code>alterCollection</code> interface.
  */
-@Getter
-@ToString
 public class AlterCollectionParam {
     private final String collectionName;
     private final String databaseName;
     private final Map<String, String> properties = new HashMap<>();
 
-    private AlterCollectionParam(@NonNull Builder builder) {
+    private AlterCollectionParam(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("collectionName cannot be null");
+        }
         this.collectionName = builder.collectionName;
         this.databaseName = builder.databaseName;
         this.properties.putAll(builder.properties);
     }
 
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    @Override
+    public String toString() {
+        return "AlterCollectionParam{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -58,7 +77,6 @@ public class AlterCollectionParam {
 
         private final Map<String, String> properties = new HashMap<>();
 
-
         private Builder() {
         }
 
@@ -68,7 +86,10 @@ public class AlterCollectionParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -93,7 +114,10 @@ public class AlterCollectionParam {
          * @param ttlSeconds TTL seconds, value should be 0 or greater
          * @return <code>Builder</code>
          */
-        public Builder withTTL(@NonNull Integer ttlSeconds) {
+        public Builder withTTL(Integer ttlSeconds) {
+            if (ttlSeconds == null) {
+                throw new IllegalArgumentException("ttlSeconds cannot be null");
+            }
             if (ttlSeconds < 0) {
                 throw new ParamException("The ttlSeconds value should be 0 or greater");
             }
@@ -118,7 +142,13 @@ public class AlterCollectionParam {
          * @param value the value
          * @return <code>Builder</code>
          */
-        public Builder withProperty(@NonNull String key, @NonNull String value) {
+        public Builder withProperty(String key, String value) {
+            if (key == null) {
+                throw new IllegalArgumentException("key cannot be null");
+            }
+            if (value == null) {
+                throw new IllegalArgumentException("value cannot be null");
+            }
             this.properties.put(key, value);
             return this;
         }

+ 38 - 14
sdk-core/src/main/java/io/milvus/param/collection/AlterDatabaseParam.java

@@ -22,9 +22,6 @@ package io.milvus.param.collection;
 import io.milvus.exception.ParamException;
 import io.milvus.param.Constant;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 
 import java.util.HashMap;
 import java.util.List;
@@ -33,17 +30,34 @@ import java.util.Map;
 /**
  * Parameters for <code>alterDatabase</code> interface.
  */
-@Getter
-@ToString
 public class AlterDatabaseParam {
     private final String databaseName;
     private final Map<String, String> properties = new HashMap<>();
 
-    private AlterDatabaseParam(@NonNull Builder builder) {
+    private AlterDatabaseParam(Builder builder) {
+        if (builder.databaseName == null) {
+            throw new IllegalArgumentException("databaseName cannot be null");
+        }
         this.databaseName = builder.databaseName;
         this.properties.putAll(builder.properties);
     }
 
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    @Override
+    public String toString() {
+        return "AlterDatabaseParam{" +
+                "databaseName='" + databaseName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -56,23 +70,25 @@ public class AlterDatabaseParam {
 
         private final Map<String, String> properties = new HashMap<>();
 
-
         private Builder() {
         }
 
         /**
-         * Sets the database name. database name can be nil.
+         * Set the database name. Database name cannot be empty or null.
          *
          * @param databaseName database name
          * @return <code>Builder</code>
          */
-        public Builder withDatabaseName(@NonNull String databaseName) {
+        public Builder withDatabaseName(String databaseName) {
+            if (databaseName == null) {
+                throw new IllegalArgumentException("databaseName cannot be null");
+            }
             this.databaseName = databaseName;
             return this;
         }
 
         /**
-         * Sets the replica number in database level, then if load collection doesn't have replica number, it will use this replica number.
+         * Set the replica number in database level, then if load collection doesn't have replica number, it will use this replica number.
          * @param replicaNumber replica number
          * @return <code>Builder</code>
          */
@@ -81,13 +97,15 @@ public class AlterDatabaseParam {
         }
 
         /**
-         * Sets the resource groups in database level, then if load collection doesn't have resource groups, it will use this resource groups.
+         * Set the resource groups in database level, then if load collection doesn't have resource groups, it will use this resource groups.
          * @param resourceGroups resource group names
          * @return <code>Builder</code>
          */
-        public Builder WithResourceGroups(@NonNull List<String> resourceGroups) {
+        public Builder withResourceGroups(List<String> resourceGroups) {
+            if (resourceGroups == null) {
+                throw new IllegalArgumentException("resourceGroups cannot be null");
+            }
             return this.withProperty(Constant.DATABASE_RESOURCE_GROUPS, String.join(",", resourceGroups));
-            
         }
 
         /**
@@ -97,7 +115,13 @@ public class AlterDatabaseParam {
          * @param value the value
          * @return <code>Builder</code>
          */
-        public Builder withProperty(@NonNull String key, @NonNull String value) {
+        public Builder withProperty(String key, String value) {
+            if (key == null) {
+                throw new IllegalArgumentException("key cannot be null");
+            }
+            if (value == null) {
+                throw new IllegalArgumentException("value cannot be null");
+            }
             this.properties.put(key, value);
             return this;
         }

+ 29 - 9
sdk-core/src/main/java/io/milvus/param/collection/CollectionSchemaParam.java

@@ -20,9 +20,6 @@
 package io.milvus.param.collection;
 
 import io.milvus.exception.ParamException;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -30,17 +27,34 @@ import java.util.List;
 /**
  * Parameters for <code>createCollection</code> interface.
  */
-@Getter
-@ToString
 public class CollectionSchemaParam {
     private final List<FieldType> fieldTypes;
     private final boolean enableDynamicField;
 
-    private CollectionSchemaParam(@NonNull Builder builder) {
+    private CollectionSchemaParam(Builder builder) {
+        if (builder == null) {
+            throw new IllegalArgumentException("Builder cannot be null");
+        }
         this.fieldTypes = builder.fieldTypes;
         this.enableDynamicField = builder.enableDynamicField;
     }
 
+    public List<FieldType> getFieldTypes() {
+        return fieldTypes;
+    }
+
+    public boolean isEnableDynamicField() {
+        return enableDynamicField;
+    }
+
+    @Override
+    public String toString() {
+        return "CollectionSchemaParam{" +
+                "fieldTypes=" + fieldTypes +
+                ", enableDynamicField=" + enableDynamicField +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -51,10 +65,10 @@ public class CollectionSchemaParam {
     public static final class Builder {
         private final List<FieldType> fieldTypes = new ArrayList<>();
         private boolean enableDynamicField;
+
         private Builder() {
         }
 
-
         /**
          * Sets the collection if enableDynamicField.
          *
@@ -73,7 +87,10 @@ public class CollectionSchemaParam {
          * @param fieldTypes a <code>List</code> of {@link FieldType}
          * @return <code>Builder</code>
          */
-        public Builder withFieldTypes(@NonNull List<FieldType> fieldTypes) {
+        public Builder withFieldTypes(List<FieldType> fieldTypes) {
+            if (fieldTypes == null) {
+                throw new IllegalArgumentException("fieldTypes cannot be null");
+            }
             this.fieldTypes.addAll(fieldTypes);
             return this;
         }
@@ -85,7 +102,10 @@ public class CollectionSchemaParam {
          * @param fieldType a {@link FieldType} object
          * @return <code>Builder</code>
          */
-        public Builder addFieldType(@NonNull FieldType fieldType) {
+        public Builder addFieldType(FieldType fieldType) {
+            if (fieldType == null) {
+                throw new IllegalArgumentException("fieldType cannot be null");
+            }
             this.fieldTypes.add(fieldType);
             return this;
         }

+ 36 - 11
sdk-core/src/main/java/io/milvus/param/collection/CreateDatabaseParam.java

@@ -22,9 +22,6 @@ package io.milvus.param.collection;
 import io.milvus.exception.ParamException;
 import io.milvus.param.Constant;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 
 import java.util.HashMap;
 import java.util.List;
@@ -33,17 +30,34 @@ import java.util.Map;
 /**
  * Parameters for <code>createDatabase</code> interface.
  */
-@Getter
-@ToString
 public class CreateDatabaseParam {
     private final String databaseName;
     private final Map<String, String> properties = new HashMap<>();
 
-    private CreateDatabaseParam(@NonNull Builder builder) {
+    private CreateDatabaseParam(Builder builder) {
+        if (builder.databaseName == null) {
+            throw new IllegalArgumentException("databaseName cannot be null");
+        }
         this.databaseName = builder.databaseName;
         this.properties.putAll(builder.properties);
     }
 
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    @Override
+    public String toString() {
+        return "CreateDatabaseParam{" +
+                "databaseName='" + databaseName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -65,12 +79,15 @@ public class CreateDatabaseParam {
          * @param databaseName database name
          * @return <code>Builder</code>
          */
-        public Builder withDatabaseName(@NonNull String databaseName) {
+        public Builder withDatabaseName(String databaseName) {
+            if (databaseName == null) {
+                throw new IllegalArgumentException("databaseName cannot be null");
+            }
             this.databaseName = databaseName;
             return this;
         }
 
-         /**
+        /**
          * Sets the replica number in database level, then if load collection doesn't have replica number, it will use this replica number.
          * @param replicaNumber replica number
          * @return <code>Builder</code>
@@ -84,9 +101,11 @@ public class CreateDatabaseParam {
          * @param resourceGroups resource group names
          * @return <code>Builder</code>
          */
-        public Builder withResourceGroups(@NonNull List<String> resourceGroups) {
+        public Builder withResourceGroups(List<String> resourceGroups) {
+            if (resourceGroups == null) {
+                throw new IllegalArgumentException("resourceGroups cannot be null");
+            }
             return this.withProperty(Constant.DATABASE_RESOURCE_GROUPS, String.join(",", resourceGroups));
-
         }
 
         /**
@@ -96,7 +115,13 @@ public class CreateDatabaseParam {
          * @param value the value
          * @return <code>Builder</code>
          */
-        public Builder withProperty(@NonNull String key, @NonNull String value) {
+        public Builder withProperty(String key, String value) {
+            if (key == null) {
+                throw new IllegalArgumentException("key cannot be null");
+            }
+            if (value == null) {
+                throw new IllegalArgumentException("value cannot be null");
+            }
             this.properties.put(key, value);
             return this;
         }

+ 24 - 11
sdk-core/src/main/java/io/milvus/param/collection/DescribeCollectionParam.java

@@ -22,22 +22,32 @@ package io.milvus.param.collection;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 /**
  * Parameters for <code>describeCollection</code> interface.
  */
-@Getter
-@ToString
 public class DescribeCollectionParam {
-    private final String databaseName;
     private final String collectionName;
+    private final String databaseName;
 
-    private DescribeCollectionParam(@NonNull Builder builder) {
-        this.databaseName = builder.databaseName;
+    private DescribeCollectionParam(Builder builder) {
         this.collectionName = builder.collectionName;
+        this.databaseName = builder.databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    @Override
+    public String toString() {
+        return "DescribeCollectionParam{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                '}';
     }
 
     public static Builder newBuilder() {
@@ -48,8 +58,8 @@ public class DescribeCollectionParam {
      * Builder for {@link DescribeCollectionParam} class.
      */
     public static final class Builder {
-        private String databaseName;
         private String collectionName;
+        private String databaseName;
 
         private Builder() {
         }
@@ -71,7 +81,10 @@ public class DescribeCollectionParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }

+ 67 - 56
sdk-core/src/main/java/io/milvus/param/collection/DescribeDatabaseParam.java

@@ -17,61 +17,72 @@
  * under the License.
  */
 
- package io.milvus.param.collection;
+package io.milvus.param.collection;
 
- import io.milvus.exception.ParamException;
- import io.milvus.param.ParamUtils;
- 
- import lombok.Getter;
- import lombok.NonNull;
- import lombok.ToString;
- 
- /**
-  * Parameters for <code>describeDatabase</code> interface.
-  */
- @Getter
- @ToString
- public class DescribeDatabaseParam {
-     private final String databaseName;
- 
-     private DescribeDatabaseParam(@NonNull Builder builder) {
-         this.databaseName = builder.databaseName;
-     }
- 
-     public static Builder newBuilder() {
-         return new Builder();
-     }
- 
-     /**
-      * Builder for {@link DescribeDatabaseParam} class.
-      */
-     public static final class Builder {
-         private String databaseName;
- 
-         private Builder() {
-         }
- 
-         /**
-          * Sets the database name. database name can be nil.
-          *
-          * @param databaseName database name
-          * @return <code>Builder</code>
-          */
-         public Builder withDatabaseName(String databaseName) {
-             this.databaseName = databaseName;
-             return this;
-         }
- 
-         /**
-          * Verifies parameters and creates a new {@link DescribeDatabaseParam} instance.
-          *
-          * @return {@link DescribeDatabaseParam}
-          */
-         public DescribeDatabaseParam build() throws ParamException {
+import io.milvus.exception.ParamException;
+import io.milvus.param.ParamUtils;
+
+/**
+ * Parameters for <code>describeDatabase</code> interface.
+ */
+public class DescribeDatabaseParam {
+    private final String databaseName;
+
+    private DescribeDatabaseParam(Builder builder) {
+        if (builder.databaseName == null) {
+            throw new IllegalArgumentException("databaseName cannot be null");
+        }
+        this.databaseName = builder.databaseName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    @Override
+    public String toString() {
+        return "DescribeDatabaseParam{" +
+                "databaseName='" + databaseName + '\'' +
+                '}';
+    }
+
+    public static Builder newBuilder() {
+        return new Builder();
+    }
+
+    /**
+     * Builder for {@link DescribeDatabaseParam} class.
+     */
+    public static final class Builder {
+        private String databaseName;
+
+        private Builder() {
+        }
+
+        /**
+         * Set the database name. Database name cannot be empty or null.
+         *
+         * @param databaseName database name
+         * @return <code>Builder</code>
+         */
+        public Builder withDatabaseName(String databaseName) {
+            if (databaseName == null) {
+                throw new IllegalArgumentException("databaseName cannot be null");
+            }
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        /**
+         * Verifies parameters and creates a new {@link DescribeDatabaseParam} instance.
+         *
+         * @return {@link DescribeDatabaseParam}
+         */
+        public DescribeDatabaseParam build() throws ParamException {
             ParamUtils.CheckNullEmptyString(databaseName, "Database name");
- 
-             return new DescribeDatabaseParam(this);
-         }
-     }
- 
- }
+
+            return new DescribeDatabaseParam(this);
+        }
+    }
+
+}

+ 31 - 15
sdk-core/src/main/java/io/milvus/param/collection/DropCollectionParam.java

@@ -22,24 +22,37 @@ package io.milvus.param.collection;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 /**
  * Parameters for <code>dropCollection</code> interface.
  */
-@Getter
-@ToString
 public class DropCollectionParam {
     private final String collectionName;
     private final String databaseName;
 
-    private DropCollectionParam(@NonNull Builder builder) {
+    private DropCollectionParam(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("collectionName cannot be null");
+        }
         this.collectionName = builder.collectionName;
         this.databaseName = builder.databaseName;
     }
 
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    @Override
+    public String toString() {
+        return "DropCollectionParam{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -55,24 +68,27 @@ public class DropCollectionParam {
         }
 
         /**
-         * Sets the collection name. Database name can empty or null.
+         * Sets the collection name. Collection name cannot be empty or null.
          *
-         * @param databaseName database name
+         * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withDatabaseName(String databaseName) {
-            this.databaseName = databaseName;
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
+            this.collectionName = collectionName;
             return this;
         }
 
         /**
-         * Sets the collection name. Collection name cannot be empty or null.
+         * Sets the database name. Database name can be empty or null.
          *
-         * @param collectionName collection name
+         * @param databaseName database name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
-            this.collectionName = collectionName;
+        public Builder withDatabaseName(String databaseName) {
+            this.databaseName = databaseName;
             return this;
         }
 

+ 20 - 8
sdk-core/src/main/java/io/milvus/param/collection/DropDatabaseParam.java

@@ -21,22 +21,31 @@ package io.milvus.param.collection;
 
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 
 /**
  * Parameters for <code>dropDatabase</code> interface.
  */
-@Getter
-@ToString
 public class DropDatabaseParam {
     private final String databaseName;
 
-    private DropDatabaseParam(@NonNull Builder builder) {
+    private DropDatabaseParam(Builder builder) {
+        if (builder.databaseName == null) {
+            throw new IllegalArgumentException("databaseName cannot be null");
+        }
         this.databaseName = builder.databaseName;
     }
 
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    @Override
+    public String toString() {
+        return "DropDatabaseParam{" +
+                "databaseName='" + databaseName + '\'' +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -51,12 +60,15 @@ public class DropDatabaseParam {
         }
 
         /**
-         * Sets the databaseName name. Database name cannot be empty or null.
+         * Set the database name. Database name cannot be empty or null.
          *
          * @param databaseName database name
          * @return <code>Builder</code>
          */
-        public Builder withDatabaseName(@NonNull String databaseName) {
+        public Builder withDatabaseName(String databaseName) {
+            if (databaseName == null) {
+                throw new IllegalArgumentException("databaseName cannot be null");
+            }
             this.databaseName = databaseName;
             return this;
         }

+ 111 - 16
sdk-core/src/main/java/io/milvus/param/collection/FieldType.java

@@ -24,10 +24,6 @@ import io.milvus.grpc.DataType;
 import io.milvus.param.Constant;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 import java.util.HashMap;
 import java.util.Map;
 
@@ -35,8 +31,6 @@ import java.util.Map;
  * Parameters for a collection field.
  * @see CreateCollectionParam
  */
-@Getter
-@ToString
 public class FieldType {
     private final String name;
     private final boolean primaryKey;
@@ -51,7 +45,10 @@ public class FieldType {
     private final boolean nullable;
     private final Object defaultValue;
 
-    private FieldType(@NonNull Builder builder){
+    private FieldType(Builder builder){
+        if (builder == null) {
+            throw new IllegalArgumentException("builder cannot be null");
+        }
         this.name = builder.name;
         this.primaryKey = builder.primaryKey;
         this.description = builder.description;
@@ -66,6 +63,55 @@ public class FieldType {
         this.defaultValue = builder.defaultValue;
     }
 
+    // Getter methods to replace @Getter annotation
+    public String getName() {
+        return name;
+    }
+
+    public boolean isPrimaryKey() {
+        return primaryKey;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public DataType getDataType() {
+        return dataType;
+    }
+
+    public Map<String, String> getTypeParams() {
+        return typeParams;
+    }
+
+    public boolean isAutoID() {
+        return autoID;
+    }
+
+    public boolean isPartitionKey() {
+        return partitionKey;
+    }
+
+    public boolean isClusteringKey() {
+        return clusteringKey;
+    }
+
+    public boolean isDynamic() {
+        return isDynamic;
+    }
+
+    public DataType getElementType() {
+        return elementType;
+    }
+
+    public boolean isNullable() {
+        return nullable;
+    }
+
+    public Object getDefaultValue() {
+        return defaultValue;
+    }
+
     public int getDimension() {
         if (typeParams.containsKey(Constant.VECTOR_DIM)) {
             return Integer.parseInt(typeParams.get(Constant.VECTOR_DIM));
@@ -90,6 +136,25 @@ public class FieldType {
         return 0;
     }
 
+    // toString method to replace @ToString annotation
+    @Override
+    public String toString() {
+        return "FieldType{" +
+                "name='" + name + '\'' +
+                ", primaryKey=" + primaryKey +
+                ", description='" + description + '\'' +
+                ", dataType=" + dataType +
+                ", typeParams=" + typeParams +
+                ", autoID=" + autoID +
+                ", partitionKey=" + partitionKey +
+                ", clusteringKey=" + clusteringKey +
+                ", isDynamic=" + isDynamic +
+                ", elementType=" + elementType +
+                ", nullable=" + nullable +
+                ", defaultValue=" + defaultValue +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -115,7 +180,10 @@ public class FieldType {
         private Builder() {
         }
 
-        public Builder withName(@NonNull String name) {
+        public Builder withName(String name) {
+            if (name == null) {
+                throw new IllegalArgumentException("name cannot be null");
+            }
             this.name = name;
             return this;
         }
@@ -149,7 +217,10 @@ public class FieldType {
          * @param description description of the field
          * @return <code>Builder</code>
          */
-        public Builder withDescription(@NonNull String description) {
+        public Builder withDescription(String description) {
+            if (description == null) {
+                throw new IllegalArgumentException("description cannot be null");
+            }
             this.description = description;
             return this;
         }
@@ -160,7 +231,10 @@ public class FieldType {
          * @param dataType data type of the field
          * @return <code>Builder</code>
          */
-        public Builder withDataType(@NonNull DataType dataType) {
+        public Builder withDataType(DataType dataType) {
+            if (dataType == null) {
+                throw new IllegalArgumentException("dataType cannot be null");
+            }
             this.dataType = dataType;
             return this;
         }
@@ -171,7 +245,10 @@ public class FieldType {
          * @param elementType element type of the Array type field
          * @return <code>Builder</code>
          */
-        public Builder withElementType(@NonNull DataType elementType) {
+        public Builder withElementType(DataType elementType) {
+            if (elementType == null) {
+                throw new IllegalArgumentException("elementType cannot be null");
+            }
             this.elementType = elementType;
             return this;
         }
@@ -183,7 +260,13 @@ public class FieldType {
          * @param value parameter value
          * @return <code>Builder</code>
          */
-        public Builder addTypeParam(@NonNull String key, @NonNull String value) {
+        public Builder addTypeParam(String key, String value) {
+            if (key == null) {
+                throw new IllegalArgumentException("key cannot be null");
+            }
+            if (value == null) {
+                throw new IllegalArgumentException("value cannot be null");
+            }
             this.typeParams.put(key, value);
             return this;
         }
@@ -194,7 +277,10 @@ public class FieldType {
          * @param typeParams parameters of the field
          * @return <code>Builder</code>
          */
-        public Builder withTypeParams(@NonNull Map<String, String> typeParams) {
+        public Builder withTypeParams(Map<String, String> typeParams) {
+            if (typeParams == null) {
+                throw new IllegalArgumentException("typeParams cannot be null");
+            }
             typeParams.forEach(this.typeParams::put);
             return this;
         }
@@ -205,7 +291,10 @@ public class FieldType {
          * @param dimension dimension of the field
          * @return <code>Builder</code>
          */
-        public Builder withDimension(@NonNull Integer dimension) {
+        public Builder withDimension(Integer dimension) {
+            if (dimension == null) {
+                throw new IllegalArgumentException("dimension cannot be null");
+            }
             this.typeParams.put(Constant.VECTOR_DIM, dimension.toString());
             return this;
         }
@@ -216,7 +305,10 @@ public class FieldType {
          * @param maxLength max length of a varchar field
          * @return <code>Builder</code>
          */
-        public Builder withMaxLength(@NonNull Integer maxLength) {
+        public Builder withMaxLength(Integer maxLength) {
+            if (maxLength == null) {
+                throw new IllegalArgumentException("maxLength cannot be null");
+            }
             this.typeParams.put(Constant.VARCHAR_MAX_LENGTH, maxLength.toString());
             return this;
         }
@@ -228,7 +320,10 @@ public class FieldType {
          * @param maxCapacity max capacity of an array field
          * @return <code>Builder</code>
          */
-        public Builder withMaxCapacity(@NonNull Integer maxCapacity) {
+        public Builder withMaxCapacity(Integer maxCapacity) {
+            if (maxCapacity == null) {
+                throw new IllegalArgumentException("maxCapacity cannot be null");
+            }
             if (maxCapacity <= 0 || maxCapacity > 4096) {
                 throw new ParamException("Array field max capacity value must be within range [1, 4096]");
             }

+ 55 - 12
sdk-core/src/main/java/io/milvus/param/collection/FlushParam.java

@@ -23,10 +23,6 @@ import io.milvus.exception.ParamException;
 import io.milvus.param.Constant;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -35,8 +31,6 @@ import java.util.Objects;
  * Parameters for <code>flush</code> interface.
  * Note that the flush interface is not exposed currently.
  */
-@Getter
-@ToString
 public class FlushParam {
     private final String databaseName;
     private final List<String> collectionNames;
@@ -44,7 +38,10 @@ public class FlushParam {
     private final long syncFlushWaitingInterval;
     private final long syncFlushWaitingTimeout;
 
-    private FlushParam(@NonNull Builder builder) {
+    private FlushParam(Builder builder) {
+        if (builder.collectionNames == null) {
+            throw new IllegalArgumentException("collectionNames cannot be null");
+        }
         this.databaseName = builder.databaseName;
         this.collectionNames = builder.collectionNames;
         this.syncFlush = builder.syncFlush;
@@ -52,6 +49,37 @@ public class FlushParam {
         this.syncFlushWaitingTimeout = builder.syncFlushWaitingTimeout;
     }
 
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public List<String> getCollectionNames() {
+        return collectionNames;
+    }
+
+    public Boolean getSyncFlush() {
+        return syncFlush;
+    }
+
+    public long getSyncFlushWaitingInterval() {
+        return syncFlushWaitingInterval;
+    }
+
+    public long getSyncFlushWaitingTimeout() {
+        return syncFlushWaitingTimeout;
+    }
+
+    @Override
+    public String toString() {
+        return "FlushParam{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionNames=" + collectionNames +
+                ", syncFlush=" + syncFlush +
+                ", syncFlushWaitingInterval=" + syncFlushWaitingInterval +
+                ", syncFlushWaitingTimeout=" + syncFlushWaitingTimeout +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -97,7 +125,10 @@ public class FlushParam {
          * @param collectionNames a list of collections
          * @return <code>Builder</code>
          */
-        public Builder withCollectionNames(@NonNull List<String> collectionNames) {
+        public Builder withCollectionNames(List<String> collectionNames) {
+            if (collectionNames == null) {
+                throw new IllegalArgumentException("collectionNames cannot be null");
+            }
             this.collectionNames.addAll(collectionNames);
             return this;
         }
@@ -108,7 +139,10 @@ public class FlushParam {
          * @param collectionName name of the collections
          * @return <code>Builder</code>
          */
-        public Builder addCollectionName(@NonNull String collectionName) {
+        public Builder addCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionNames.add(collectionName);
             return this;
         }
@@ -122,7 +156,10 @@ public class FlushParam {
          * @param syncFlush <code>Boolean.TRUE</code> is sync mode, <code>Boolean.FALSE</code> is not
          * @return <code>Builder</code>
          */
-        public Builder withSyncFlush(@NonNull Boolean syncFlush) {
+        public Builder withSyncFlush(Boolean syncFlush) {
+            if (syncFlush == null) {
+                throw new IllegalArgumentException("syncFlush cannot be null");
+            }
             this.syncFlush = syncFlush;
             return this;
         }
@@ -135,7 +172,10 @@ public class FlushParam {
          * @param milliseconds interval
          * @return <code>Builder</code>
          */
-        public Builder withSyncFlushWaitingInterval(@NonNull Long milliseconds) {
+        public Builder withSyncFlushWaitingInterval(Long milliseconds) {
+            if (milliseconds == null) {
+                throw new IllegalArgumentException("milliseconds cannot be null");
+            }
             this.syncFlushWaitingInterval = milliseconds;
             return this;
         }
@@ -148,7 +188,10 @@ public class FlushParam {
          * @param seconds time out value for sync mode
          * @return <code>Builder</code>
          */
-        public Builder withSyncFlushWaitingTimeout(@NonNull Long seconds) {
+        public Builder withSyncFlushWaitingTimeout(Long seconds) {
+            if (seconds == null) {
+                throw new IllegalArgumentException("seconds cannot be null");
+            }
             this.syncFlushWaitingTimeout = seconds;
             return this;
         }

+ 30 - 9
sdk-core/src/main/java/io/milvus/param/collection/GetCollectionStatisticsParam.java

@@ -22,26 +22,41 @@ package io.milvus.param.collection;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 /**
  * Parameters for <code>getCollectionStatistics</code> interface.
  */
-@Getter
-@ToString
 public class GetCollectionStatisticsParam {
     private final String databaseName;
     private final String collectionName;
     private final boolean flushCollection;
 
-    private GetCollectionStatisticsParam(@NonNull Builder builder) {
+    private GetCollectionStatisticsParam(Builder builder) {
         this.databaseName = builder.databaseName;
         this.collectionName = builder.collectionName;
         this.flushCollection = builder.flushCollection;
     }
 
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public boolean isFlushCollection() {
+        return flushCollection;
+    }
+
+    @Override
+    public String toString() {
+        return "GetCollectionStatisticsParam{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", flushCollection=" + flushCollection +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -77,7 +92,10 @@ public class GetCollectionStatisticsParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -88,7 +106,10 @@ public class GetCollectionStatisticsParam {
          * @param flush <code>Boolean.TRUE</code> require a flush action
          * @return <code>Builder</code>
          */
-        public Builder withFlush(@NonNull Boolean flush) {
+        public Builder withFlush(Boolean flush) {
+            if (flush == null) {
+                throw new IllegalArgumentException("flush cannot be null");
+            }
             this.flushCollection = flush;
             return this;
         }

+ 37 - 9
sdk-core/src/main/java/io/milvus/param/collection/GetLoadStateParam.java

@@ -22,28 +22,47 @@ package io.milvus.param.collection;
 import com.google.common.collect.Lists;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 
 import java.util.List;
 
 /**
  * Parameters for <code>getLoadState</code> interface.
  */
-@Getter
-@ToString
 public class GetLoadStateParam {
     private final String databaseName;
     private final String collectionName;
     private final List<String> partitionNames;
 
-    public GetLoadStateParam(@NonNull Builder builder) {
+    public GetLoadStateParam(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("collectionName cannot be null");
+        }
         this.databaseName = builder.databaseName;
         this.collectionName = builder.collectionName;
         this.partitionNames = builder.partitionNames;
     }
 
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public List<String> getPartitionNames() {
+        return partitionNames;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    @Override
+    public String toString() {
+        return "GetLoadStateParam{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", partitionNames=" + partitionNames +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -77,7 +96,10 @@ public class GetLoadStateParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -88,7 +110,10 @@ public class GetLoadStateParam {
          * @param partitionNames partition names list
          * @return <code>Builder</code>
          */
-        public Builder withPartitionNames(@NonNull List<String> partitionNames) {
+        public Builder withPartitionNames(List<String> partitionNames) {
+            if (partitionNames == null) {
+                throw new IllegalArgumentException("partitionNames cannot be null");
+            }
             partitionNames.forEach(this::addPartitionName);
             return this;
         }
@@ -99,7 +124,10 @@ public class GetLoadStateParam {
          * @param partitionName partition name
          * @return <code>Builder</code>
          */
-        public Builder addPartitionName(@NonNull String partitionName) {
+        public Builder addPartitionName(String partitionName) {
+            if (partitionName == null) {
+                throw new IllegalArgumentException("partitionName cannot be null");
+            }
             if (!this.partitionNames.contains(partitionName)) {
                 this.partitionNames.add(partitionName);
             }

+ 37 - 9
sdk-core/src/main/java/io/milvus/param/collection/GetLoadingProgressParam.java

@@ -22,28 +22,47 @@ package io.milvus.param.collection;
 import com.google.common.collect.Lists;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 
 import java.util.List;
 
 /**
  * Parameters for <code>loadCollection</code> interface.
  */
-@Getter
-@ToString
 public class GetLoadingProgressParam {
     private final String databaseName;
     private final String collectionName;
     private final List<String> partitionNames;
 
-    public GetLoadingProgressParam(@NonNull Builder builder) {
+    private GetLoadingProgressParam(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("collectionName cannot be null");
+        }
         this.databaseName = builder.databaseName;
         this.collectionName = builder.collectionName;
         this.partitionNames = builder.partitionNames;
     }
 
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public List<String> getPartitionNames() {
+        return partitionNames;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    @Override
+    public String toString() {
+        return "GetLoadingProgressParam{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", partitionNames=" + partitionNames +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -77,7 +96,10 @@ public class GetLoadingProgressParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -88,7 +110,10 @@ public class GetLoadingProgressParam {
          * @param partitionNames partition names list
          * @return <code>Builder</code>
          */
-        public Builder withPartitionNames(@NonNull List<String> partitionNames) {
+        public Builder withPartitionNames(List<String> partitionNames) {
+            if (partitionNames == null) {
+                throw new IllegalArgumentException("partitionNames cannot be null");
+            }
             partitionNames.forEach(this::addPartitionName);
             return this;
         }
@@ -99,7 +124,10 @@ public class GetLoadingProgressParam {
          * @param partitionName partition name
          * @return <code>Builder</code>
          */
-        public Builder addPartitionName(@NonNull String partitionName) {
+        public Builder addPartitionName(String partitionName) {
+            if (partitionName == null) {
+                throw new IllegalArgumentException("partitionName cannot be null");
+            }
             if (!this.partitionNames.contains(partitionName)) {
                 this.partitionNames.add(partitionName);
             }

+ 24 - 8
sdk-core/src/main/java/io/milvus/param/collection/HasCollectionParam.java

@@ -22,24 +22,37 @@ package io.milvus.param.collection;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 /**
  * Parameters for <code>hasCollection</code> interface.
  */
-@Getter
-@ToString
 public class HasCollectionParam {
     private final String collectionName;
     private final String databaseName;
 
-    private HasCollectionParam(@NonNull Builder builder) {
+    private HasCollectionParam(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("collectionName cannot be null");
+        }
         this.collectionName = builder.collectionName;
         this.databaseName = builder.databaseName;
     }
 
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    @Override
+    public String toString() {
+        return "HasCollectionParam{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -71,7 +84,10 @@ public class HasCollectionParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }

+ 96 - 16
sdk-core/src/main/java/io/milvus/param/collection/LoadCollectionParam.java

@@ -23,10 +23,6 @@ import io.milvus.exception.ParamException;
 import io.milvus.param.Constant;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -34,8 +30,6 @@ import java.util.Objects;
 /**
  * Parameters for <code>loadCollection</code> interface.
  */
-@Getter
-@ToString
 public class LoadCollectionParam {
     private final String databaseName;
     private final String collectionName;
@@ -48,7 +42,10 @@ public class LoadCollectionParam {
     private final List<String> loadFields;
     private final boolean skipLoadDynamicField;
 
-    public LoadCollectionParam(@NonNull Builder builder) {
+    public LoadCollectionParam(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("collectionName cannot be null");
+        }
         this.databaseName = builder.databaseName;
         this.collectionName = builder.collectionName;
         this.syncLoad = builder.syncLoad;
@@ -61,6 +58,62 @@ public class LoadCollectionParam {
         this.skipLoadDynamicField = builder.skipLoadDynamicField;
     }
 
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public boolean isSyncLoad() {
+        return syncLoad;
+    }
+
+    public long getSyncLoadWaitingInterval() {
+        return syncLoadWaitingInterval;
+    }
+
+    public long getSyncLoadWaitingTimeout() {
+        return syncLoadWaitingTimeout;
+    }
+
+    public int getReplicaNumber() {
+        return replicaNumber;
+    }
+
+    public boolean isRefresh() {
+        return refresh;
+    }
+
+    public List<String> getResourceGroups() {
+        return resourceGroups;
+    }
+
+    public List<String> getLoadFields() {
+        return loadFields;
+    }
+
+    public boolean isSkipLoadDynamicField() {
+        return skipLoadDynamicField;
+    }
+
+    @Override
+    public String toString() {
+        return "LoadCollectionParam{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", syncLoad=" + syncLoad +
+                ", syncLoadWaitingInterval=" + syncLoadWaitingInterval +
+                ", syncLoadWaitingTimeout=" + syncLoadWaitingTimeout +
+                ", replicaNumber=" + replicaNumber +
+                ", refresh=" + refresh +
+                ", resourceGroups=" + resourceGroups +
+                ", loadFields=" + loadFields +
+                ", skipLoadDynamicField=" + skipLoadDynamicField +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -130,7 +183,10 @@ public class LoadCollectionParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -144,7 +200,10 @@ public class LoadCollectionParam {
          * @param syncLoad <code>Boolean.TRUE</code> is sync mode, Boolean.FALSE is not
          * @return <code>Builder</code>
          */
-        public Builder withSyncLoad(@NonNull Boolean syncLoad) {
+        public Builder withSyncLoad(Boolean syncLoad) {
+            if (syncLoad == null) {
+                throw new IllegalArgumentException("syncLoad cannot be null");
+            }
             this.syncLoad = syncLoad;
             return this;
         }
@@ -157,7 +216,10 @@ public class LoadCollectionParam {
          * @return <code>Builder</code>
          * @see Constant
          */
-        public Builder withSyncLoadWaitingInterval(@NonNull Long milliseconds) {
+        public Builder withSyncLoadWaitingInterval(Long milliseconds) {
+            if (milliseconds == null) {
+                throw new IllegalArgumentException("milliseconds cannot be null");
+            }
             this.syncLoadWaitingInterval = milliseconds;
             return this;
         }
@@ -170,7 +232,10 @@ public class LoadCollectionParam {
          * @return <code>Builder</code>
          * @see Constant
          */
-        public Builder withSyncLoadWaitingTimeout(@NonNull Long seconds) {
+        public Builder withSyncLoadWaitingTimeout(Long seconds) {
+            if (seconds == null) {
+                throw new IllegalArgumentException("seconds cannot be null");
+            }
             this.syncLoadWaitingTimeout = seconds;
             return this;
         }
@@ -181,7 +246,10 @@ public class LoadCollectionParam {
          * @param replicaNumber replica number
          * @return <code>Builder</code>
          */
-        public Builder withReplicaNumber(@NonNull Integer replicaNumber) {
+        public Builder withReplicaNumber(Integer replicaNumber) {
+            if (replicaNumber == null) {
+                throw new IllegalArgumentException("replicaNumber cannot be null");
+            }
             this.replicaNumber = replicaNumber;
             return this;
         }
@@ -196,7 +264,10 @@ public class LoadCollectionParam {
          * @param refresh <code>Boolean.TRUE</code> is refresh mode, <code>Boolean.FALSE</code> is not
          * @return <code>Builder</code>
          */
-        public Builder withRefresh(@NonNull Boolean refresh) {
+        public Builder withRefresh(Boolean refresh) {
+            if (refresh == null) {
+                throw new IllegalArgumentException("refresh cannot be null");
+            }
             this.refresh = refresh;
             return this;
         }
@@ -208,7 +279,10 @@ public class LoadCollectionParam {
          * @param resourceGroups a <code>List</code> of {@link String}
          * @return <code>Builder</code>
          */
-        public Builder withResourceGroups(@NonNull List<String> resourceGroups) {
+        public Builder withResourceGroups(List<String> resourceGroups) {
+            if (resourceGroups == null) {
+                throw new IllegalArgumentException("resourceGroups cannot be null");
+            }
             this.resourceGroups.addAll(resourceGroups);
             return this;
         }
@@ -220,7 +294,10 @@ public class LoadCollectionParam {
          * @param loadFields a <code>List</code> of {@link String}
          * @return <code>Builder</code>
          */
-        public Builder withLoadFields(@NonNull List<String> loadFields) {
+        public Builder withLoadFields(List<String> loadFields) {
+            if (loadFields == null) {
+                throw new IllegalArgumentException("loadFields cannot be null");
+            }
             loadFields.forEach((field)->{
                 if (!this.loadFields.contains(field)) {
                     this.loadFields.add(field);
@@ -236,7 +313,10 @@ public class LoadCollectionParam {
          * @param skip <code>Boolean.TRUE</code> skip dynamic field, <code>Boolean.FALSE</code> is not
          * @return <code>Builder</code>
          */
-        public Builder withSkipLoadDynamicField(@NonNull Boolean skip) {
+        public Builder withSkipLoadDynamicField(Boolean skip) {
+            if (skip == null) {
+                throw new IllegalArgumentException("skip cannot be null");
+            }
             this.skipLoadDynamicField = skip;
             return this;
         }

+ 21 - 8
sdk-core/src/main/java/io/milvus/param/collection/ReleaseCollectionParam.java

@@ -22,24 +22,34 @@ package io.milvus.param.collection;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
 /**
  * Parameters for <code>releaseCollection</code> interface.
  */
-@Getter
-@ToString
 public class ReleaseCollectionParam {
     private final String databaseName;
     private final String collectionName;
 
-    private ReleaseCollectionParam(@NonNull Builder builder) {
+    private ReleaseCollectionParam(Builder builder) {
         this.databaseName = builder.databaseName;
         this.collectionName = builder.collectionName;
     }
 
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    @Override
+    public String toString() {
+        return "ReleaseCollectionParam{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -71,7 +81,10 @@ public class ReleaseCollectionParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }

+ 49 - 19
sdk-core/src/main/java/io/milvus/param/collection/RenameCollectionParam.java

@@ -21,30 +21,55 @@ package io.milvus.param.collection;
 
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
-import java.util.Objects;
 
 /**
  * Parameters for <code>renameCollection</code> interface.
  */
-@Getter
-@ToString
 public class RenameCollectionParam {
     private final String oldDatabaseName;
     private final String newDatabaseName;
     private final String oldCollectionName;
     private final String newCollectionName;
 
-    public RenameCollectionParam(@NonNull Builder builder) {
+    public RenameCollectionParam(Builder builder) {
+        if (builder.oldCollectionName == null) {
+            throw new IllegalArgumentException("oldCollectionName cannot be null");
+        }
+        if (builder.newCollectionName == null) {
+            throw new IllegalArgumentException("newCollectionName cannot be null");
+        }
         this.oldDatabaseName = builder.oldDatabaseName;
         this.newDatabaseName = builder.newDatabaseName;
         this.oldCollectionName = builder.oldCollectionName;
         this.newCollectionName = builder.newCollectionName;
     }
 
+    public String getOldCollectionName() {
+        return oldCollectionName;
+    }
+
+    public String getNewCollectionName() {
+        return newCollectionName;
+    }
+
+    public String getOldDatabaseName() {
+        return oldDatabaseName;
+    }
+
+    public String getNewDatabaseName() {
+        return newDatabaseName;
+    }
+
+    @Override
+    public String toString() {
+        return "RenameCollectionParam{" +
+                "oldCollectionName='" + oldCollectionName + '\'' +
+                ", newCollectionName='" + newCollectionName + '\'' +
+                ", oldDatabaseName='" + oldDatabaseName + '\'' +
+                ", newDatabaseName='" + newDatabaseName + '\'' +
+                '}';
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -56,31 +81,30 @@ public class RenameCollectionParam {
         private String oldDatabaseName;
         private String newDatabaseName;
         private String oldCollectionName;
-
         private String newCollectionName;
 
         private Builder() {
         }
 
         /**
-         * Sets the old database name. database name can be nil.
+         * Sets the old database name. Database name can be nil.
          *
-         * @param databaseName database name
+         * @param oldDatabaseName database name
          * @return <code>Builder</code>
          */
-        public Builder withOldDatabaseName(String databaseName) {
-            this.oldDatabaseName = databaseName;
+        public Builder withOldDatabaseName(String oldDatabaseName) {
+            this.oldDatabaseName = oldDatabaseName;
             return this;
         }
 
         /**
-         * Sets the old database name. database name can be nil.
+         * Sets the new database name. Database name can be nil.
          *
-         * @param databaseName database name
+         * @param newDatabaseName database name
          * @return <code>Builder</code>
          */
-        public Builder withNewDatabaseName(String databaseName) {
-            this.newDatabaseName = databaseName;
+        public Builder withNewDatabaseName(String newDatabaseName) {
+            this.newDatabaseName = newDatabaseName;
             return this;
         }
 
@@ -90,7 +114,10 @@ public class RenameCollectionParam {
          * @param oldCollectionName old collection name
          * @return <code>Builder</code>
          */
-        public Builder withOldCollectionName(@NonNull String oldCollectionName) {
+        public Builder withOldCollectionName(String oldCollectionName) {
+            if (oldCollectionName == null) {
+                throw new IllegalArgumentException("oldCollectionName cannot be null");
+            }
             this.oldCollectionName = oldCollectionName;
             return this;
         }
@@ -101,7 +128,10 @@ public class RenameCollectionParam {
          * @param newCollectionName new collection name
          * @return <code>Builder</code>
          */
-        public Builder withNewCollectionName(@NonNull String newCollectionName) {
+        public Builder withNewCollectionName(String newCollectionName) {
+            if (newCollectionName == null) {
+                throw new IllegalArgumentException("newCollectionName cannot be null");
+            }
             this.newCollectionName = newCollectionName;
             return this;
         }

+ 36 - 7
sdk-core/src/main/java/io/milvus/param/control/GetCompactionPlansParam.java

@@ -20,21 +20,18 @@
 package io.milvus.param.control;
 
 import io.milvus.exception.ParamException;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 /**
  * Parameters for <code>getCompactionStateWithPlans</code> interface.
  *
  * @see <a href="https://wiki.lfaidata.foundation/display/MIL/MEP+16+--+Compaction">Compaction function design</a>
  */
-@Getter
-@ToString
 public class GetCompactionPlansParam {
     private final Long compactionID;
 
-    private GetCompactionPlansParam(@NonNull Builder builder) {
+    private GetCompactionPlansParam(Builder builder) {
         this.compactionID = builder.compactionID;
     }
 
@@ -42,6 +39,34 @@ public class GetCompactionPlansParam {
         return new Builder();
     }
 
+    public Long getCompactionID() {
+        return compactionID;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        GetCompactionPlansParam that = (GetCompactionPlansParam) obj;
+        return new EqualsBuilder()
+                .append(compactionID, that.compactionID)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(compactionID)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "GetCompactionPlansParam{" +
+                "compactionID=" + compactionID +
+                '}';
+    }
+
     /**
      * Builder for {@link GetCompactionPlansParam} class.
      */
@@ -57,7 +82,11 @@ public class GetCompactionPlansParam {
          * @param compactionID compaction action id
          * @return <code>Builder</code>
          */
-        public Builder withCompactionID(@NonNull Long compactionID) {
+        public Builder withCompactionID(Long compactionID) {
+            // Replace @NonNull logic with explicit null check
+            if (compactionID == null) {
+                throw new IllegalArgumentException("compactionID cannot be null");
+            }
             this.compactionID = compactionID;
             return this;
         }

+ 35 - 8
sdk-core/src/main/java/io/milvus/param/control/GetMetricsParam.java

@@ -21,20 +21,16 @@ package io.milvus.param.control;
 
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
-
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 /**
  * Parameters for <code>getMetric</code> interface.
  */
-@Getter
-@ToString
 public class GetMetricsParam {
     private final String request;
 
-    private GetMetricsParam(@NonNull Builder builder) {
+    private GetMetricsParam(Builder builder) {
         this.request = builder.request;
     }
 
@@ -42,6 +38,34 @@ public class GetMetricsParam {
         return new Builder();
     }
 
+    public String getRequest() {
+        return request;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        GetMetricsParam that = (GetMetricsParam) obj;
+        return new EqualsBuilder()
+                .append(request, that.request)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(request)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "GetMetricsParam{" +
+                "request='" + request + '\'' +
+                '}';
+    }
+
     /**
      * Builder for {@link GetMetricsParam} class.
      */
@@ -58,7 +82,10 @@ public class GetMetricsParam {
          * @param request request string in json format
          * @return <code>Builder</code>
          */
-        public Builder withRequest(@NonNull String request) {
+        public Builder withRequest(String request) {
+            if (request == null) {
+                throw new IllegalArgumentException("request cannot be null");
+            }
             this.request = request;
             return this;
         }

+ 35 - 7
sdk-core/src/main/java/io/milvus/param/control/ManualCompactParam.java

@@ -21,21 +21,18 @@ package io.milvus.param.control;
 
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 /**
  * Parameters for <code>manualCompact</code> interface.
  *
  * @see <a href="https://wiki.lfaidata.foundation/display/MIL/MEP+16+--+Compaction">Compaction function design</a>
  */
-@Getter
-@ToString
 public class ManualCompactParam {
     private final String collectionName;
 
-    private ManualCompactParam(@NonNull Builder builder) {
+    private ManualCompactParam(Builder builder) {
         this.collectionName = builder.collectionName;
     }
 
@@ -43,6 +40,34 @@ public class ManualCompactParam {
         return new Builder();
     }
 
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        ManualCompactParam that = (ManualCompactParam) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "ManualCompactParam{" +
+                "collectionName='" + collectionName + '\'' +
+                '}';
+    }
+
     /**
      * Builder for {@link ManualCompactParam} class.
      */
@@ -58,7 +83,10 @@ public class ManualCompactParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }

+ 80 - 11
sdk-core/src/main/java/io/milvus/param/dml/InsertParam.java

@@ -23,9 +23,6 @@ import com.google.gson.JsonObject;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 import org.apache.commons.collections4.CollectionUtils;
 
 import java.util.List;
@@ -33,7 +30,6 @@ import java.util.List;
 /**
  * Parameters for <code>insert</code> interface.
  */
-@Getter
 public class InsertParam {
     protected final List<Field> fields;
     protected final List<JsonObject> rows;
@@ -43,7 +39,10 @@ public class InsertParam {
     protected final String partitionName;
     protected final int rowCount;
 
-    protected InsertParam(@NonNull Builder builder) {
+    protected InsertParam(Builder builder) {
+        if (builder == null) {
+            throw new IllegalArgumentException("builder cannot be null");
+        }
         this.databaseName = builder.databaseName;
         this.collectionName = builder.collectionName;
         this.partitionName = builder.partitionName;
@@ -52,6 +51,31 @@ public class InsertParam {
         this.rows = builder.rows;
     }
 
+    // Getter methods to replace @Getter annotation
+    public List<Field> getFields() {
+        return fields;
+    }
+
+    public List<JsonObject> getRows() {
+        return rows;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getPartitionName() {
+        return partitionName;
+    }
+
+    public int getRowCount() {
+        return rowCount;
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -87,7 +111,10 @@ public class InsertParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -99,7 +126,10 @@ public class InsertParam {
          * @param partitionName partition name
          * @return <code>Builder</code>
          */
-        public Builder withPartitionName(@NonNull String partitionName) {
+        public Builder withPartitionName(String partitionName) {
+            if (partitionName == null) {
+                throw new IllegalArgumentException("partitionName cannot be null");
+            }
             this.partitionName = partitionName;
             return this;
         }
@@ -111,7 +141,10 @@ public class InsertParam {
          * @return <code>Builder</code>
          * @see InsertParam.Field
          */
-        public Builder withFields(@NonNull List<InsertParam.Field> fields) {
+        public Builder withFields(List<InsertParam.Field> fields) {
+            if (fields == null) {
+                throw new IllegalArgumentException("fields cannot be null");
+            }
             this.fields = fields;
             return this;
         }
@@ -143,7 +176,10 @@ public class InsertParam {
          * @return <code>Builder</code>
          * @see JsonObject
          */
-        public Builder withRows(@NonNull List<JsonObject> rows) {
+        public Builder withRows(List<JsonObject> rows) {
+            if (rows == null) {
+                throw new IllegalArgumentException("rows cannot be null");
+            }
             this.rows = rows;
             return this;
         }
@@ -246,8 +282,6 @@ public class InsertParam {
      * (why? because the rpc proto only support int32/int64 type, actually Int8/Int16/Int32 use int32 type to encode/decode)
      *
      */
-    @lombok.Builder
-    @ToString
     public static class Field {
         private final String name;
         private final List<?> values;
@@ -274,6 +308,41 @@ public class InsertParam {
         public List<?> getValues() {
             return values;
         }
+
+        // toString method for Field class
+        @Override
+        public String toString() {
+            return "Field{" +
+                    "name='" + name + '\'' +
+                    ", values=" + values +
+                    '}';
+        }
+
+        public static Builder builder() {
+            return new Builder();
+        }
+
+        public static class Builder {
+            private String name;
+            private List<?> values;
+
+            private Builder() {
+            }
+
+            public Builder name(String name) {
+                this.name = name;
+                return this;
+            }
+
+            public Builder values(List<?> values) {
+                this.values = values;
+                return this;
+            }
+
+            public Field build() {
+                return new Field(name, values);
+            }
+        }
     }
 
     /**

+ 182 - 28
sdk-core/src/main/java/io/milvus/param/dml/SearchParam.java

@@ -26,9 +26,6 @@ import io.milvus.grpc.PlaceholderType;
 import io.milvus.param.Constant;
 import io.milvus.param.MetricType;
 import io.milvus.param.ParamUtils;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.Setter;
 
 import java.nio.ByteBuffer;
 import java.util.List;
@@ -37,9 +34,7 @@ import java.util.SortedMap;
 /**
  * Parameters for <code>search</code> interface.
  */
-@Getter
 public class SearchParam {
-    @Setter
     private String databaseName;
     private final String collectionName;
     private final List<String> partitionNames;
@@ -62,7 +57,10 @@ public class SearchParam {
     private final Boolean strictGroupSize;
     private final PlaceholderType plType;
 
-    private SearchParam(@NonNull Builder builder) {
+    private SearchParam(Builder builder) {
+        if (builder == null) {
+            throw new IllegalArgumentException("builder cannot be null");
+        }
         this.databaseName = builder.databaseName;
         this.collectionName = builder.collectionName;
         this.partitionNames = builder.partitionNames;
@@ -86,6 +84,96 @@ public class SearchParam {
         this.plType = builder.plType;
     }
 
+    // Getter methods to replace @Getter annotation
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public List<String> getPartitionNames() {
+        return partitionNames;
+    }
+
+    public String getMetricType() {
+        return metricType;
+    }
+
+    public String getVectorFieldName() {
+        return vectorFieldName;
+    }
+
+    public Long getTopK() {
+        return topK;
+    }
+
+    public String getExpr() {
+        return expr;
+    }
+
+    public List<String> getOutFields() {
+        return outFields;
+    }
+
+    public List<?> getVectors() {
+        return vectors;
+    }
+
+    public Long getNQ() {
+        return NQ;
+    }
+
+    public int getRoundDecimal() {
+        return roundDecimal;
+    }
+
+    public String getParams() {
+        return params;
+    }
+
+    public long getTravelTimestamp() {
+        return travelTimestamp;
+    }
+
+    public long getGuaranteeTimestamp() {
+        return guaranteeTimestamp;
+    }
+
+    public Long getGracefulTime() {
+        return gracefulTime;
+    }
+
+    public ConsistencyLevelEnum getConsistencyLevel() {
+        return consistencyLevel;
+    }
+
+    public boolean isIgnoreGrowing() {
+        return ignoreGrowing;
+    }
+
+    public String getGroupByFieldName() {
+        return groupByFieldName;
+    }
+
+    public Integer getGroupSize() {
+        return groupSize;
+    }
+
+    public Boolean getStrictGroupSize() {
+        return strictGroupSize;
+    }
+
+    public PlaceholderType getPlType() {
+        return plType;
+    }
+
+    // Setter method to replace @Setter annotation
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
     public static Builder newBuilder() {
         return new Builder();
     }
@@ -140,7 +228,10 @@ public class SearchParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("collectionName cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -151,7 +242,10 @@ public class SearchParam {
          * @param partitionNames partition names list
          * @return <code>Builder</code>
          */
-        public Builder withPartitionNames(@NonNull List<String> partitionNames) {
+        public Builder withPartitionNames(List<String> partitionNames) {
+            if (partitionNames == null) {
+                throw new IllegalArgumentException("partitionNames cannot be null");
+            }
             partitionNames.forEach(this::addPartitionName);
             return this;
         }
@@ -173,7 +267,10 @@ public class SearchParam {
          * @param partitionName partition name
          * @return <code>Builder</code>
          */
-        public Builder addPartitionName(@NonNull String partitionName) {
+        public Builder addPartitionName(String partitionName) {
+            if (partitionName == null) {
+                throw new IllegalArgumentException("partitionName cannot be null");
+            }
             if (!this.partitionNames.contains(partitionName)) {
                 this.partitionNames.add(partitionName);
             }
@@ -186,7 +283,10 @@ public class SearchParam {
          * @param metricType metric type
          * @return <code>Builder</code>
          */
-        public Builder withMetricType(@NonNull MetricType metricType) {
+        public Builder withMetricType(MetricType metricType) {
+            if (metricType == null) {
+                throw new IllegalArgumentException("metricType cannot be null");
+            }
             this.metricType = metricType;
             return this;
         }
@@ -197,7 +297,10 @@ public class SearchParam {
          * @param vectorFieldName vector field name
          * @return <code>Builder</code>
          */
-        public Builder withVectorFieldName(@NonNull String vectorFieldName) {
+        public Builder withVectorFieldName(String vectorFieldName) {
+            if (vectorFieldName == null) {
+                throw new IllegalArgumentException("vectorFieldName cannot be null");
+            }
             this.vectorFieldName = vectorFieldName;
             return this;
         }
@@ -210,11 +313,17 @@ public class SearchParam {
          * @return <code>Builder</code>
          */
         @Deprecated
-        public Builder withTopK(@NonNull Integer topK) {
+        public Builder withTopK(Integer topK) {
+            if (topK == null) {
+                throw new IllegalArgumentException("topK cannot be null");
+            }
             this.topK = topK.longValue();
             return this;
         }
-        public Builder withLimit(@NonNull Long limit) {
+        public Builder withLimit(Long limit) {
+            if (limit == null) {
+                throw new IllegalArgumentException("limit cannot be null");
+            }
             this.topK = limit;
             return this;
         }
@@ -226,7 +335,10 @@ public class SearchParam {
          * @param expr filtering expression
          * @return <code>Builder</code>
          */
-        public Builder withExpr(@NonNull String expr) {
+        public Builder withExpr(String expr) {
+            if (expr == null) {
+                throw new IllegalArgumentException("expr cannot be null");
+            }
             this.expr = expr;
             return this;
         }
@@ -237,7 +349,10 @@ public class SearchParam {
          * @param outFields output fields
          * @return <code>Builder</code>
          */
-        public Builder withOutFields(@NonNull List<String> outFields) {
+        public Builder withOutFields(List<String> outFields) {
+            if (outFields == null) {
+                throw new IllegalArgumentException("outFields cannot be null");
+            }
             outFields.forEach(this::addOutField);
             return this;
         }
@@ -248,7 +363,10 @@ public class SearchParam {
          * @param fieldName filed name
          * @return <code>Builder</code>
          */
-        public Builder addOutField(@NonNull String fieldName) {
+        public Builder addOutField(String fieldName) {
+            if (fieldName == null) {
+                throw new IllegalArgumentException("fieldName cannot be null");
+            }
             if (!this.outFields.contains(fieldName)) {
                 this.outFields.add(fieldName);
             }
@@ -269,7 +387,10 @@ public class SearchParam {
          * @return <code>Builder</code>
          */
         @Deprecated
-        public Builder withVectors(@NonNull List<?> vectors) {
+        public Builder withVectors(List<?> vectors) {
+            if (vectors == null) {
+                throw new IllegalArgumentException("vectors cannot be null");
+            }
             this.vectors = vectors;
             this.NQ = (long) vectors.size();
             return this;
@@ -281,7 +402,10 @@ public class SearchParam {
          * @param vectors target vectors to search
          * @return <code>Builder</code>
          */
-        public Builder withFloatVectors(@NonNull List<List<Float>> vectors) {
+        public Builder withFloatVectors(List<List<Float>> vectors) {
+            if (vectors == null) {
+                throw new IllegalArgumentException("vectors cannot be null");
+            }
             this.vectors = vectors;
             this.NQ = (long) vectors.size();
             this.plType = PlaceholderType.FloatVector;
@@ -294,7 +418,10 @@ public class SearchParam {
          * @param vectors target vectors to search
          * @return <code>Builder</code>
          */
-        public Builder withBinaryVectors(@NonNull List<ByteBuffer> vectors) {
+        public Builder withBinaryVectors(List<ByteBuffer> vectors) {
+            if (vectors == null) {
+                throw new IllegalArgumentException("vectors cannot be null");
+            }
             this.vectors = vectors;
             this.NQ = (long) vectors.size();
             this.plType = PlaceholderType.BinaryVector;
@@ -307,7 +434,10 @@ public class SearchParam {
          * @param vectors target vectors to search
          * @return <code>Builder</code>
          */
-        public Builder withFloat16Vectors(@NonNull List<ByteBuffer> vectors) {
+        public Builder withFloat16Vectors(List<ByteBuffer> vectors) {
+            if (vectors == null) {
+                throw new IllegalArgumentException("vectors cannot be null");
+            }
             this.vectors = vectors;
             this.NQ = (long) vectors.size();
             this.plType = PlaceholderType.Float16Vector;
@@ -320,7 +450,10 @@ public class SearchParam {
          * @param vectors target vectors to search
          * @return <code>Builder</code>
          */
-        public Builder withBFloat16Vectors(@NonNull List<ByteBuffer> vectors) {
+        public Builder withBFloat16Vectors(List<ByteBuffer> vectors) {
+            if (vectors == null) {
+                throw new IllegalArgumentException("vectors cannot be null");
+            }
             this.vectors = vectors;
             this.NQ = (long) vectors.size();
             this.plType = PlaceholderType.BFloat16Vector;
@@ -333,7 +466,10 @@ public class SearchParam {
          * @param vectors target vectors to search
          * @return <code>Builder</code>
          */
-        public Builder withSparseFloatVectors(@NonNull List<SortedMap<Long, Float>> vectors) {
+        public Builder withSparseFloatVectors(List<SortedMap<Long, Float>> vectors) {
+            if (vectors == null) {
+                throw new IllegalArgumentException("vectors cannot be null");
+            }
             this.vectors = vectors;
             this.NQ = (long) vectors.size();
             this.plType = PlaceholderType.SparseFloatVector;
@@ -346,7 +482,10 @@ public class SearchParam {
          * @param decimal how many digits after the decimal point
          * @return <code>Builder</code>
          */
-        public Builder withRoundDecimal(@NonNull Integer decimal) {
+        public Builder withRoundDecimal(Integer decimal) {
+            if (decimal == null) {
+                throw new IllegalArgumentException("decimal cannot be null");
+            }
             this.roundDecimal = decimal;
             return this;
         }
@@ -360,7 +499,10 @@ public class SearchParam {
          * @param params extra parameters in json format
          * @return <code>Builder</code>
          */
-        public Builder withParams(@NonNull String params) {
+        public Builder withParams(String params) {
+            if (params == null) {
+                throw new IllegalArgumentException("params cannot be null");
+            }
             this.params = params;
             return this;
         }
@@ -372,7 +514,10 @@ public class SearchParam {
          * @param ignoreGrowing <code>Boolean.TRUE</code> ignore, Boolean.FALSE is not
          * @return <code>Builder</code>
          */
-        public Builder withIgnoreGrowing(@NonNull Boolean ignoreGrowing) {
+        public Builder withIgnoreGrowing(Boolean ignoreGrowing) {
+            if (ignoreGrowing == null) {
+                throw new IllegalArgumentException("ignoreGrowing cannot be null");
+            }
             this.ignoreGrowing = ignoreGrowing;
             return this;
         }
@@ -383,7 +528,10 @@ public class SearchParam {
          * @param groupByFieldName field name to do grouping
          * @return <code>Builder</code>
          */
-        public Builder withGroupByFieldName(@NonNull String groupByFieldName) {
+        public Builder withGroupByFieldName(String groupByFieldName) {
+            if (groupByFieldName == null) {
+                throw new IllegalArgumentException("groupByFieldName cannot be null");
+            }
             this.groupByFieldName = groupByFieldName;
             return this;
         }
@@ -394,7 +542,10 @@ public class SearchParam {
          * @param groupSize the max number of items
          * @return <code>Builder</code>
          */
-        public Builder withGroupSize(@NonNull Integer groupSize) {
+        public Builder withGroupSize(Integer groupSize) {
+            if (groupSize == null) {
+                throw new IllegalArgumentException("groupSize cannot be null");
+            }
             this.groupSize = groupSize;
             return this;
         }
@@ -406,7 +557,10 @@ public class SearchParam {
          * @param strictGroupSize whether to force the number of each group to be groupSize
          * @return <code>Builder</code>
          */
-        public Builder withStrictGroupSize(@NonNull Boolean strictGroupSize) {
+        public Builder withStrictGroupSize(Boolean strictGroupSize) {
+            if (strictGroupSize == null) {
+                throw new IllegalArgumentException("strictGroupSize cannot be null");
+            }
             this.strictGroupSize = strictGroupSize;
             return this;
         }

+ 60 - 7
sdk-core/src/main/java/io/milvus/param/highlevel/dml/response/DeleteResponse.java

@@ -19,23 +19,76 @@
 
 package io.milvus.param.highlevel.dml.response;
 
-import lombok.Builder;
-import lombok.Getter;
-import lombok.ToString;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import java.util.List;
 
 /**
  * Parameters for <code>delete</code> interface.
  */
-@Builder
-@Getter
-@ToString
 public class DeleteResponse {
     /**
      * In the new version(greater or equal than 2.3.2), this method only returns an empty list and does not return specific values
      * Mark is as deprecated, keep it to compatible with the legacy code
      */
     @Deprecated
-    public List<?> deleteIds;
+    private List<?> deleteIds;
+
+    private DeleteResponse(Builder builder) {
+        this.deleteIds = builder.deleteIds;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    /**
+     * @deprecated In the new version(greater or equal than 2.3.2), this method only returns an empty list and does not return specific values
+     */
+    @Deprecated
+    public List<?> getDeleteIds() {
+        return deleteIds;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DeleteResponse that = (DeleteResponse) obj;
+        return new EqualsBuilder()
+                .append(deleteIds, that.deleteIds)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(deleteIds)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "DeleteResponse{" +
+                "deleteIds=" + deleteIds +
+                '}';
+    }
+
+    public static class Builder {
+        private List<?> deleteIds;
+
+        /**
+         * @deprecated In the new version(greater or equal than 2.3.2), this method only returns an empty list and does not return specific values
+         */
+        @Deprecated
+        public Builder deleteIds(List<?> deleteIds) {
+            this.deleteIds = deleteIds;
+            return this;
+        }
+
+        public DeleteResponse build() {
+            return new DeleteResponse(this);
+        }
+    }
 }

+ 57 - 5
sdk-core/src/main/java/io/milvus/param/highlevel/dml/response/SearchResponse.java

@@ -21,17 +21,32 @@ package io.milvus.param.highlevel.dml.response;
 
 import io.milvus.exception.ParamException;
 import io.milvus.response.QueryResultsWrapper;
-import lombok.Builder;
-import lombok.Getter;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import java.util.List;
 
 /**
  * Parameters for <code>search</code> interface.
  */
-@Builder
 public class SearchResponse {
-    public List<List<QueryResultsWrapper.RowRecord>> rowRecords;
+    private List<List<QueryResultsWrapper.RowRecord>> rowRecords;
+
+    private SearchResponse(Builder builder) {
+        this.rowRecords = builder.rowRecords;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public List<List<QueryResultsWrapper.RowRecord>> getRowRecords() {
+        return rowRecords;
+    }
+
+    public void setRowRecords(List<List<QueryResultsWrapper.RowRecord>> rowRecords) {
+        this.rowRecords = rowRecords;
+    }
 
     /**
      * In old versions(less or equal than v2.3.2), this method only returns results of the first target vector
@@ -40,7 +55,7 @@ public class SearchResponse {
      * @return List of <code>QueryResultsWrapper.RowRecord</code>
      */
     @Deprecated
-    public List<QueryResultsWrapper.RowRecord> getRowRecords() {
+    public List<QueryResultsWrapper.RowRecord> getRowRecordsForFirstTarget() {
         return getRowRecords(0);
     }
 
@@ -52,4 +67,41 @@ public class SearchResponse {
 
         return rowRecords.get(indexOfTarget);
     }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        SearchResponse that = (SearchResponse) obj;
+        return new EqualsBuilder()
+                .append(rowRecords, that.rowRecords)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(rowRecords)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "SearchResponse{" +
+                "rowRecords=" + rowRecords +
+                '}';
+    }
+
+    public static class Builder {
+        private List<List<QueryResultsWrapper.RowRecord>> rowRecords;
+
+        public Builder rowRecords(List<List<QueryResultsWrapper.RowRecord>> rowRecords) {
+            this.rowRecords = rowRecords;
+            return this;
+        }
+
+        public SearchResponse build() {
+            return new SearchResponse(this);
+        }
+    }
 }

+ 62 - 8
sdk-core/src/main/java/io/milvus/param/index/DropIndexParam.java

@@ -23,22 +23,25 @@ import io.milvus.exception.ParamException;
 import io.milvus.param.Constant;
 import io.milvus.param.ParamUtils;
 
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 /**
  * Parameters for <code>dropIndex</code> interface.
  */
-@Getter
-@ToString
 public class DropIndexParam {
     private final String databaseName;
     private final String collectionName;
     private final String indexName;
 
-    private DropIndexParam(@NonNull Builder builder) {
+    private DropIndexParam(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        if (builder.indexName == null) {
+            throw new IllegalArgumentException("Index name cannot be null");
+        }
+        
         this.databaseName = builder.databaseName;
         this.collectionName = builder.collectionName;
         this.indexName = builder.indexName;
@@ -48,6 +51,51 @@ public class DropIndexParam {
         return new Builder();
     }
 
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public String getIndexName() {
+        return indexName;
+    }
+
+    @Override
+    public String toString() {
+        return "DropIndexParam{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", indexName='" + indexName + '\'' +
+                '}';
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null || getClass() != obj.getClass()) {
+            return false;
+        }
+        DropIndexParam that = (DropIndexParam) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(collectionName, that.collectionName)
+                .append(indexName, that.indexName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = databaseName != null ? databaseName.hashCode() : 0;
+        result = 31 * result + (collectionName != null ? collectionName.hashCode() : 0);
+        result = 31 * result + (indexName != null ? indexName.hashCode() : 0);
+        return result;
+    }
+
     /**
      * Builder for {@link DropIndexParam} class.
      */
@@ -76,7 +124,10 @@ public class DropIndexParam {
          * @param collectionName collection name
          * @return <code>Builder</code>
          */
-        public Builder withCollectionName(@NonNull String collectionName) {
+        public Builder withCollectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("Collection name cannot be null");
+            }
             this.collectionName = collectionName;
             return this;
         }
@@ -88,7 +139,10 @@ public class DropIndexParam {
          * @param indexName index name
          * @return <code>Builder</code>
          */
-        public Builder withIndexName(@NonNull String indexName) {
+        public Builder withIndexName(String indexName) {
+            if (indexName == null) {
+                throw new IllegalArgumentException("Index name cannot be null");
+            }
             this.indexName = indexName;
             return this;
         }

+ 243 - 25
sdk-core/src/main/java/io/milvus/pool/PoolConfig.java

@@ -1,32 +1,250 @@
 package io.milvus.pool;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.time.Duration;
 
-@Data
-@SuperBuilder
 public class PoolConfig {
-    @Builder.Default
-    private int maxIdlePerKey = 5;
-    @Builder.Default
-    private int minIdlePerKey = 0;
-    @Builder.Default
-    private int maxTotalPerKey = 10;
-    @Builder.Default
-    private int maxTotal = 50;
-    @Builder.Default
-    private boolean blockWhenExhausted = true;
-    @Builder.Default
-    private Duration maxBlockWaitDuration = Duration.ofSeconds(3L);
-    @Builder.Default
-    private Duration evictionPollingInterval = Duration.ofSeconds(60L);
-    @Builder.Default
-    private Duration minEvictableIdleDuration = Duration.ofSeconds(10L);
-    @Builder.Default
-    private boolean testOnBorrow = false;
-    @Builder.Default
-    private boolean testOnReturn = true;
+    private int maxIdlePerKey;
+    private int minIdlePerKey;
+    private int maxTotalPerKey;
+    private int maxTotal;
+    private boolean blockWhenExhausted;
+    private Duration maxBlockWaitDuration;
+    private Duration evictionPollingInterval;
+    private Duration minEvictableIdleDuration;
+    private boolean testOnBorrow;
+    private boolean testOnReturn;
+
+    private PoolConfig(Builder builder) {
+        this.maxIdlePerKey = builder.maxIdlePerKey;
+        this.minIdlePerKey = builder.minIdlePerKey;
+        this.maxTotalPerKey = builder.maxTotalPerKey;
+        this.maxTotal = builder.maxTotal;
+        this.blockWhenExhausted = builder.blockWhenExhausted;
+        this.maxBlockWaitDuration = builder.maxBlockWaitDuration;
+        this.evictionPollingInterval = builder.evictionPollingInterval;
+        this.minEvictableIdleDuration = builder.minEvictableIdleDuration;
+        this.testOnBorrow = builder.testOnBorrow;
+        this.testOnReturn = builder.testOnReturn;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getters
+    public int getMaxIdlePerKey() {
+        return maxIdlePerKey;
+    }
+
+    public int getMinIdlePerKey() {
+        return minIdlePerKey;
+    }
+
+    public int getMaxTotalPerKey() {
+        return maxTotalPerKey;
+    }
+
+    public int getMaxTotal() {
+        return maxTotal;
+    }
+
+    public boolean isBlockWhenExhausted() {
+        return blockWhenExhausted;
+    }
+
+    public Duration getMaxBlockWaitDuration() {
+        return maxBlockWaitDuration;
+    }
+
+    public Duration getEvictionPollingInterval() {
+        return evictionPollingInterval;
+    }
+
+    public Duration getMinEvictableIdleDuration() {
+        return minEvictableIdleDuration;
+    }
+
+    public boolean isTestOnBorrow() {
+        return testOnBorrow;
+    }
+
+    public boolean isTestOnReturn() {
+        return testOnReturn;
+    }
+
+    // Setters
+    public void setMaxIdlePerKey(int maxIdlePerKey) {
+        this.maxIdlePerKey = maxIdlePerKey;
+    }
+
+    public void setMinIdlePerKey(int minIdlePerKey) {
+        this.minIdlePerKey = minIdlePerKey;
+    }
+
+    public void setMaxTotalPerKey(int maxTotalPerKey) {
+        this.maxTotalPerKey = maxTotalPerKey;
+    }
+
+    public void setMaxTotal(int maxTotal) {
+        this.maxTotal = maxTotal;
+    }
+
+    public void setBlockWhenExhausted(boolean blockWhenExhausted) {
+        this.blockWhenExhausted = blockWhenExhausted;
+    }
+
+    public void setMaxBlockWaitDuration(Duration maxBlockWaitDuration) {
+        this.maxBlockWaitDuration = maxBlockWaitDuration;
+    }
+
+    public void setEvictionPollingInterval(Duration evictionPollingInterval) {
+        this.evictionPollingInterval = evictionPollingInterval;
+    }
+
+    public void setMinEvictableIdleDuration(Duration minEvictableIdleDuration) {
+        this.minEvictableIdleDuration = minEvictableIdleDuration;
+    }
+
+    public void setTestOnBorrow(boolean testOnBorrow) {
+        this.testOnBorrow = testOnBorrow;
+    }
+
+    public void setTestOnReturn(boolean testOnReturn) {
+        this.testOnReturn = testOnReturn;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null || getClass() != obj.getClass()) {
+            return false;
+        }
+        PoolConfig that = (PoolConfig) obj;
+        return new EqualsBuilder()
+                .append(maxIdlePerKey, that.maxIdlePerKey)
+                .append(minIdlePerKey, that.minIdlePerKey)
+                .append(maxTotalPerKey, that.maxTotalPerKey)
+                .append(maxTotal, that.maxTotal)
+                .append(blockWhenExhausted, that.blockWhenExhausted)
+                .append(maxBlockWaitDuration, that.maxBlockWaitDuration)
+                .append(evictionPollingInterval, that.evictionPollingInterval)
+                .append(minEvictableIdleDuration, that.minEvictableIdleDuration)
+                .append(testOnBorrow, that.testOnBorrow)
+                .append(testOnReturn, that.testOnReturn)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = maxIdlePerKey;
+        result = 31 * result + minIdlePerKey;
+        result = 31 * result + maxTotalPerKey;
+        result = 31 * result + maxTotal;
+        result = 31 * result + (blockWhenExhausted ? 1 : 0);
+        result = 31 * result + (maxBlockWaitDuration != null ? maxBlockWaitDuration.hashCode() : 0);
+        result = 31 * result + (evictionPollingInterval != null ? evictionPollingInterval.hashCode() : 0);
+        result = 31 * result + (minEvictableIdleDuration != null ? minEvictableIdleDuration.hashCode() : 0);
+        result = 31 * result + (testOnBorrow ? 1 : 0);
+        result = 31 * result + (testOnReturn ? 1 : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "PoolConfig{" +
+                "maxIdlePerKey=" + maxIdlePerKey +
+                ", minIdlePerKey=" + minIdlePerKey +
+                ", maxTotalPerKey=" + maxTotalPerKey +
+                ", maxTotal=" + maxTotal +
+                ", blockWhenExhausted=" + blockWhenExhausted +
+                ", maxBlockWaitDuration=" + maxBlockWaitDuration +
+                ", evictionPollingInterval=" + evictionPollingInterval +
+                ", minEvictableIdleDuration=" + minEvictableIdleDuration +
+                ", testOnBorrow=" + testOnBorrow +
+                ", testOnReturn=" + testOnReturn +
+                '}';
+    }
+
+    public static class Builder {
+        private int maxIdlePerKey = 5;
+        private int minIdlePerKey = 0;
+        private int maxTotalPerKey = 10;
+        private int maxTotal = 50;
+        private boolean blockWhenExhausted = true;
+        private Duration maxBlockWaitDuration = Duration.ofSeconds(3L);
+        private Duration evictionPollingInterval = Duration.ofSeconds(60L);
+        private Duration minEvictableIdleDuration = Duration.ofSeconds(10L);
+        private boolean testOnBorrow = false;
+        private boolean testOnReturn = true;
+
+        private Builder() {
+        }
+
+        public Builder maxIdlePerKey(int maxIdlePerKey) {
+            this.maxIdlePerKey = maxIdlePerKey;
+            return this;
+        }
+
+        public Builder minIdlePerKey(int minIdlePerKey) {
+            this.minIdlePerKey = minIdlePerKey;
+            return this;
+        }
+
+        public Builder maxTotalPerKey(int maxTotalPerKey) {
+            this.maxTotalPerKey = maxTotalPerKey;
+            return this;
+        }
+
+        public Builder maxTotal(int maxTotal) {
+            this.maxTotal = maxTotal;
+            return this;
+        }
+
+        public Builder blockWhenExhausted(boolean blockWhenExhausted) {
+            this.blockWhenExhausted = blockWhenExhausted;
+            return this;
+        }
+
+        public Builder maxBlockWaitDuration(Duration maxBlockWaitDuration) {
+            if (maxBlockWaitDuration == null) {
+                throw new IllegalArgumentException("maxBlockWaitDuration cannot be null");
+            }
+            this.maxBlockWaitDuration = maxBlockWaitDuration;
+            return this;
+        }
+
+        public Builder evictionPollingInterval(Duration evictionPollingInterval) {
+            if (evictionPollingInterval == null) {
+                throw new IllegalArgumentException("evictionPollingInterval cannot be null");
+            }
+            this.evictionPollingInterval = evictionPollingInterval;
+            return this;
+        }
+
+        public Builder minEvictableIdleDuration(Duration minEvictableIdleDuration) {
+            if (minEvictableIdleDuration == null) {
+                throw new IllegalArgumentException("minEvictableIdleDuration cannot be null");
+            }
+            this.minEvictableIdleDuration = minEvictableIdleDuration;
+            return this;
+        }
+
+        public Builder testOnBorrow(boolean testOnBorrow) {
+            this.testOnBorrow = testOnBorrow;
+            return this;
+        }
+
+        public Builder testOnReturn(boolean testOnReturn) {
+            this.testOnReturn = testOnReturn;
+            return this;
+        }
+
+        public PoolConfig build() {
+            return new PoolConfig(this);
+        }
+    }
 }

+ 388 - 16
sdk-core/src/main/java/io/milvus/v2/client/ConnectConfig.java

@@ -20,33 +20,24 @@
 package io.milvus.v2.client;
 
 import static io.milvus.common.constant.MilvusClientConstant.MilvusConsts.CLOUD_SERVERLESS_URI_REGEX;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NonNull;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import javax.net.ssl.SSLContext;
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Pattern;
 
-@Data
-@Builder
 public class ConnectConfig {
-    @NonNull
     private String uri;
     private String token;
     private String username;
     private String password;
     private String dbName;
-    @Builder.Default
     private long connectTimeoutMs = 10000;
-    @Builder.Default
     private long keepAliveTimeMs = 55000;
-    @Builder.Default
     private long keepAliveTimeoutMs = 20000;
-    @Builder.Default
     private boolean keepAliveWithoutCalls = false;
-    @Builder.Default
     private long rpcDeadlineMs = 0; // Disabling deadline
 
     private String clientKeyPath;
@@ -55,13 +46,190 @@ public class ConnectConfig {
     private String serverPemPath;
     private String serverName;
     private String proxyAddress;
-    @Builder.Default
     private Boolean secure = false;
-    @Builder.Default
     private long idleTimeoutMs = TimeUnit.MILLISECONDS.convert(24, TimeUnit.HOURS);
 
     private SSLContext sslContext;
 
+    // Constructor for builder
+    private ConnectConfig(Builder builder) {
+        if (builder.uri == null) {
+            throw new NullPointerException("uri is marked non-null but is null");
+        }
+        this.uri = builder.uri;
+        this.token = builder.token;
+        this.username = builder.username;
+        this.password = builder.password;
+        this.dbName = builder.dbName;
+        this.connectTimeoutMs = builder.connectTimeoutMs;
+        this.keepAliveTimeMs = builder.keepAliveTimeMs;
+        this.keepAliveTimeoutMs = builder.keepAliveTimeoutMs;
+        this.keepAliveWithoutCalls = builder.keepAliveWithoutCalls;
+        this.rpcDeadlineMs = builder.rpcDeadlineMs;
+        this.clientKeyPath = builder.clientKeyPath;
+        this.clientPemPath = builder.clientPemPath;
+        this.caPemPath = builder.caPemPath;
+        this.serverPemPath = builder.serverPemPath;
+        this.serverName = builder.serverName;
+        this.proxyAddress = builder.proxyAddress;
+        this.secure = builder.secure;
+        this.idleTimeoutMs = builder.idleTimeoutMs;
+        this.sslContext = builder.sslContext;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getters
+    public String getUri() {
+        return uri;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public long getConnectTimeoutMs() {
+        return connectTimeoutMs;
+    }
+
+    public long getKeepAliveTimeMs() {
+        return keepAliveTimeMs;
+    }
+
+    public long getKeepAliveTimeoutMs() {
+        return keepAliveTimeoutMs;
+    }
+
+    public boolean isKeepAliveWithoutCalls() {
+        return keepAliveWithoutCalls;
+    }
+
+    public long getRpcDeadlineMs() {
+        return rpcDeadlineMs;
+    }
+
+    public String getClientKeyPath() {
+        return clientKeyPath;
+    }
+
+    public String getClientPemPath() {
+        return clientPemPath;
+    }
+
+    public String getCaPemPath() {
+        return caPemPath;
+    }
+
+    public String getServerPemPath() {
+        return serverPemPath;
+    }
+
+    public String getServerName() {
+        return serverName;
+    }
+
+    public Boolean getSecure() {
+        return secure;
+    }
+
+    public long getIdleTimeoutMs() {
+        return idleTimeoutMs;
+    }
+
+    public SSLContext getSslContext() {
+        return sslContext;
+    }
+
+    // Setters
+    public void setUri(String uri) {
+        if (uri == null) {
+            throw new NullPointerException("uri is marked non-null but is null");
+        }
+        this.uri = uri;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public void setDbName(String dbName) {
+        this.dbName = dbName;
+    }
+
+    public void setConnectTimeoutMs(long connectTimeoutMs) {
+        this.connectTimeoutMs = connectTimeoutMs;
+    }
+
+    public void setKeepAliveTimeMs(long keepAliveTimeMs) {
+        this.keepAliveTimeMs = keepAliveTimeMs;
+    }
+
+    public void setKeepAliveTimeoutMs(long keepAliveTimeoutMs) {
+        this.keepAliveTimeoutMs = keepAliveTimeoutMs;
+    }
+
+    public void setKeepAliveWithoutCalls(boolean keepAliveWithoutCalls) {
+        this.keepAliveWithoutCalls = keepAliveWithoutCalls;
+    }
+
+    public void setRpcDeadlineMs(long rpcDeadlineMs) {
+        this.rpcDeadlineMs = rpcDeadlineMs;
+    }
+
+    public void setClientKeyPath(String clientKeyPath) {
+        this.clientKeyPath = clientKeyPath;
+    }
+
+    public void setClientPemPath(String clientPemPath) {
+        this.clientPemPath = clientPemPath;
+    }
+
+    public void setCaPemPath(String caPemPath) {
+        this.caPemPath = caPemPath;
+    }
+
+    public void setServerPemPath(String serverPemPath) {
+        this.serverPemPath = serverPemPath;
+    }
+
+    public void setServerName(String serverName) {
+        this.serverName = serverName;
+    }
+
+    public void setProxyAddress(String proxyAddress) {
+        this.proxyAddress = proxyAddress;
+    }
+
+    public void setSecure(Boolean secure) {
+        this.secure = secure;
+    }
+
+    public void setIdleTimeoutMs(long idleTimeoutMs) {
+        this.idleTimeoutMs = idleTimeoutMs;
+    }
+
+    public void setSslContext(SSLContext sslContext) {
+        this.sslContext = sslContext;
+    }
+
     public String getHost() {
         io.milvus.utils.URLParser urlParser = new io.milvus.utils.URLParser(this.uri);
         return urlParser.getHostname();
@@ -79,7 +247,7 @@ public class ConnectConfig {
     public String getAuthorization() {
         if (token != null) {
             return token;
-        }else if (username != null && password != null) {
+        } else if (username != null && password != null) {
             return username + ":" + password;
         }
         return null;
@@ -91,13 +259,217 @@ public class ConnectConfig {
     }
 
     public Boolean isSecure() {
-        if(uri.startsWith("https")) {
+        if (uri.startsWith("https")) {
             return true;
         }
         return secure;
     }
 
-    public String  getProxyAddress(){
+    public String getProxyAddress() {
         return proxyAddress;
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ConnectConfig that = (ConnectConfig) o;
+
+        return new EqualsBuilder()
+                .append(connectTimeoutMs, that.connectTimeoutMs)
+                .append(keepAliveTimeMs, that.keepAliveTimeMs)
+                .append(keepAliveTimeoutMs, that.keepAliveTimeoutMs)
+                .append(keepAliveWithoutCalls, that.keepAliveWithoutCalls)
+                .append(rpcDeadlineMs, that.rpcDeadlineMs)
+                .append(idleTimeoutMs, that.idleTimeoutMs)
+                .append(uri, that.uri)
+                .append(token, that.token)
+                .append(username, that.username)
+                .append(password, that.password)
+                .append(dbName, that.dbName)
+                .append(clientKeyPath, that.clientKeyPath)
+                .append(clientPemPath, that.clientPemPath)
+                .append(caPemPath, that.caPemPath)
+                .append(serverPemPath, that.serverPemPath)
+                .append(serverName, that.serverName)
+                .append(proxyAddress, that.proxyAddress)
+                .append(secure, that.secure)
+                .append(sslContext, that.sslContext)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(uri)
+                .append(token)
+                .append(username)
+                .append(password)
+                .append(dbName)
+                .append(connectTimeoutMs)
+                .append(keepAliveTimeMs)
+                .append(keepAliveTimeoutMs)
+                .append(keepAliveWithoutCalls)
+                .append(rpcDeadlineMs)
+                .append(clientKeyPath)
+                .append(clientPemPath)
+                .append(caPemPath)
+                .append(serverPemPath)
+                .append(serverName)
+                .append(proxyAddress)
+                .append(secure)
+                .append(idleTimeoutMs)
+                .append(sslContext)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "ConnectConfig{" +
+                "uri='" + uri + '\'' +
+                ", token='" + token + '\'' +
+                ", username='" + username + '\'' +
+                ", password='" + password + '\'' +
+                ", dbName='" + dbName + '\'' +
+                ", connectTimeoutMs=" + connectTimeoutMs +
+                ", keepAliveTimeMs=" + keepAliveTimeMs +
+                ", keepAliveTimeoutMs=" + keepAliveTimeoutMs +
+                ", keepAliveWithoutCalls=" + keepAliveWithoutCalls +
+                ", rpcDeadlineMs=" + rpcDeadlineMs +
+                ", clientKeyPath='" + clientKeyPath + '\'' +
+                ", clientPemPath='" + clientPemPath + '\'' +
+                ", caPemPath='" + caPemPath + '\'' +
+                ", serverPemPath='" + serverPemPath + '\'' +
+                ", serverName='" + serverName + '\'' +
+                ", proxyAddress='" + proxyAddress + '\'' +
+                ", secure=" + secure +
+                ", idleTimeoutMs=" + idleTimeoutMs +
+                ", sslContext=" + sslContext +
+                '}';
+    }
+
+    public static class Builder {
+        private String uri;
+        private String token;
+        private String username;
+        private String password;
+        private String dbName;
+        private long connectTimeoutMs = 10000;
+        private long keepAliveTimeMs = 55000;
+        private long keepAliveTimeoutMs = 20000;
+        private boolean keepAliveWithoutCalls = false;
+        private long rpcDeadlineMs = 0;
+        private String clientKeyPath;
+        private String clientPemPath;
+        private String caPemPath;
+        private String serverPemPath;
+        private String serverName;
+        private String proxyAddress;
+        private Boolean secure = false;
+        private long idleTimeoutMs = TimeUnit.MILLISECONDS.convert(24, TimeUnit.HOURS);
+        private SSLContext sslContext;
+
+        public Builder uri(String uri) {
+            if (uri == null) {
+                throw new NullPointerException("uri is marked non-null but is null");
+            }
+            this.uri = uri;
+            return this;
+        }
+
+        public Builder token(String token) {
+            this.token = token;
+            return this;
+        }
+
+        public Builder username(String username) {
+            this.username = username;
+            return this;
+        }
+
+        public Builder password(String password) {
+            this.password = password;
+            return this;
+        }
+
+        public Builder dbName(String dbName) {
+            this.dbName = dbName;
+            return this;
+        }
+
+        public Builder connectTimeoutMs(long connectTimeoutMs) {
+            this.connectTimeoutMs = connectTimeoutMs;
+            return this;
+        }
+
+        public Builder keepAliveTimeMs(long keepAliveTimeMs) {
+            this.keepAliveTimeMs = keepAliveTimeMs;
+            return this;
+        }
+
+        public Builder keepAliveTimeoutMs(long keepAliveTimeoutMs) {
+            this.keepAliveTimeoutMs = keepAliveTimeoutMs;
+            return this;
+        }
+
+        public Builder keepAliveWithoutCalls(boolean keepAliveWithoutCalls) {
+            this.keepAliveWithoutCalls = keepAliveWithoutCalls;
+            return this;
+        }
+
+        public Builder rpcDeadlineMs(long rpcDeadlineMs) {
+            this.rpcDeadlineMs = rpcDeadlineMs;
+            return this;
+        }
+
+        public Builder clientKeyPath(String clientKeyPath) {
+            this.clientKeyPath = clientKeyPath;
+            return this;
+        }
+
+        public Builder clientPemPath(String clientPemPath) {
+            this.clientPemPath = clientPemPath;
+            return this;
+        }
+
+        public Builder caPemPath(String caPemPath) {
+            this.caPemPath = caPemPath;
+            return this;
+        }
+
+        public Builder serverPemPath(String serverPemPath) {
+            this.serverPemPath = serverPemPath;
+            return this;
+        }
+
+        public Builder serverName(String serverName) {
+            this.serverName = serverName;
+            return this;
+        }
+
+        public Builder proxyAddress(String proxyAddress) {
+            this.proxyAddress = proxyAddress;
+            return this;
+        }
+
+        public Builder secure(Boolean secure) {
+            this.secure = secure;
+            return this;
+        }
+
+        public Builder idleTimeoutMs(long idleTimeoutMs) {
+            this.idleTimeoutMs = idleTimeoutMs;
+            return this;
+        }
+
+        public Builder sslContext(SSLContext sslContext) {
+            this.sslContext = sslContext;
+            return this;
+        }
+
+        public ConnectConfig build() {
+            return new ConnectConfig(this);
+        }
+    }
 }

+ 9 - 4
sdk-core/src/main/java/io/milvus/v2/client/MilvusClientV2.java

@@ -51,8 +51,6 @@ import io.milvus.v2.service.vector.request.*;
 import io.milvus.v2.service.vector.response.*;
 import io.milvus.v2.utils.ClientUtils;
 import io.milvus.v2.utils.RpcUtils;
-import lombok.NonNull;
-import lombok.Setter;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -63,7 +61,6 @@ import java.util.concurrent.TimeUnit;
 public class MilvusClientV2 {
     private static final Logger logger = LoggerFactory.getLogger(MilvusClientV2.class);
     private ManagedChannel channel;
-    @Setter
     private MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub;
     private final ClientUtils clientUtils = new ClientUtils();
     private final DatabaseService databaseService = new DatabaseService();
@@ -89,6 +86,11 @@ public class MilvusClientV2 {
         }
     }
 
+    // Setter for blockingStub (replacing @Setter)
+    public void setBlockingStub(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub) {
+        this.blockingStub = blockingStub;
+    }
+
     private void initServices(String dbName) {
         this.databaseService.setCurrentDbName(dbName);
         this.collectionService.setCurrentDbName(dbName);
@@ -206,7 +208,10 @@ public class MilvusClientV2 {
      * use Database
      * @param dbName databaseName
      */
-    public void useDatabase(@NonNull String dbName) throws InterruptedException {
+    public void useDatabase(String dbName) throws InterruptedException {
+        if (dbName == null) {
+            throw new IllegalArgumentException("dbName cannot be null");
+        }
         // check if database exists
         clientUtils.checkDatabaseExist(this.getRpcStub(), dbName);
         try {

+ 151 - 11
sdk-core/src/main/java/io/milvus/v2/client/RetryConfig.java

@@ -19,23 +19,163 @@
 
 package io.milvus.v2.client;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
-@Data
-@SuperBuilder
 public class RetryConfig {
-    @Builder.Default
     private int maxRetryTimes = 75;
-    @Builder.Default
     private long initialBackOffMs = 10;
-    @Builder.Default
     private long maxBackOffMs = 3000;
-    @Builder.Default
     private int backOffMultiplier = 3;
-    @Builder.Default
     private boolean retryOnRateLimit = true;
-    @Builder.Default
     private long maxRetryTimeoutMs = 0;
+
+    // Constructor for builder pattern
+    private RetryConfig(Builder builder) {
+        this.maxRetryTimes = builder.maxRetryTimes;
+        this.initialBackOffMs = builder.initialBackOffMs;
+        this.maxBackOffMs = builder.maxBackOffMs;
+        this.backOffMultiplier = builder.backOffMultiplier;
+        this.retryOnRateLimit = builder.retryOnRateLimit;
+        this.maxRetryTimeoutMs = builder.maxRetryTimeoutMs;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getters
+    public int getMaxRetryTimes() {
+        return maxRetryTimes;
+    }
+
+    public long getInitialBackOffMs() {
+        return initialBackOffMs;
+    }
+
+    public long getMaxBackOffMs() {
+        return maxBackOffMs;
+    }
+
+    public int getBackOffMultiplier() {
+        return backOffMultiplier;
+    }
+
+    public boolean isRetryOnRateLimit() {
+        return retryOnRateLimit;
+    }
+
+    public long getMaxRetryTimeoutMs() {
+        return maxRetryTimeoutMs;
+    }
+
+    // Setters
+    public void setMaxRetryTimes(int maxRetryTimes) {
+        this.maxRetryTimes = maxRetryTimes;
+    }
+
+    public void setInitialBackOffMs(long initialBackOffMs) {
+        this.initialBackOffMs = initialBackOffMs;
+    }
+
+    public void setMaxBackOffMs(long maxBackOffMs) {
+        this.maxBackOffMs = maxBackOffMs;
+    }
+
+    public void setBackOffMultiplier(int backOffMultiplier) {
+        this.backOffMultiplier = backOffMultiplier;
+    }
+
+    public void setRetryOnRateLimit(boolean retryOnRateLimit) {
+        this.retryOnRateLimit = retryOnRateLimit;
+    }
+
+    public void setMaxRetryTimeoutMs(long maxRetryTimeoutMs) {
+        this.maxRetryTimeoutMs = maxRetryTimeoutMs;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        
+        RetryConfig that = (RetryConfig) o;
+        
+        return new EqualsBuilder()
+                .append(maxRetryTimes, that.maxRetryTimes)
+                .append(initialBackOffMs, that.initialBackOffMs)
+                .append(maxBackOffMs, that.maxBackOffMs)
+                .append(backOffMultiplier, that.backOffMultiplier)
+                .append(retryOnRateLimit, that.retryOnRateLimit)
+                .append(maxRetryTimeoutMs, that.maxRetryTimeoutMs)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(maxRetryTimes)
+                .append(initialBackOffMs)
+                .append(maxBackOffMs)
+                .append(backOffMultiplier)
+                .append(retryOnRateLimit)
+                .append(maxRetryTimeoutMs)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "RetryConfig{" +
+                "maxRetryTimes=" + maxRetryTimes +
+                ", initialBackOffMs=" + initialBackOffMs +
+                ", maxBackOffMs=" + maxBackOffMs +
+                ", backOffMultiplier=" + backOffMultiplier +
+                ", retryOnRateLimit=" + retryOnRateLimit +
+                ", maxRetryTimeoutMs=" + maxRetryTimeoutMs +
+                '}';
+    }
+
+    // Builder class with public access modifier
+    public static class Builder {
+        private int maxRetryTimes = 75;
+        private long initialBackOffMs = 10;
+        private long maxBackOffMs = 3000;
+        private int backOffMultiplier = 3;
+        private boolean retryOnRateLimit = true;
+        private long maxRetryTimeoutMs = 0;
+
+        public Builder maxRetryTimes(int maxRetryTimes) {
+            this.maxRetryTimes = maxRetryTimes;
+            return this;
+        }
+
+        public Builder initialBackOffMs(long initialBackOffMs) {
+            this.initialBackOffMs = initialBackOffMs;
+            return this;
+        }
+
+        public Builder maxBackOffMs(long maxBackOffMs) {
+            this.maxBackOffMs = maxBackOffMs;
+            return this;
+        }
+
+        public Builder backOffMultiplier(int backOffMultiplier) {
+            this.backOffMultiplier = backOffMultiplier;
+            return this;
+        }
+
+        public Builder retryOnRateLimit(boolean retryOnRateLimit) {
+            this.retryOnRateLimit = retryOnRateLimit;
+            return this;
+        }
+
+        public Builder maxRetryTimeoutMs(long maxRetryTimeoutMs) {
+            this.maxRetryTimeoutMs = maxRetryTimeoutMs;
+            return this;
+        }
+
+        public RetryConfig build() {
+            return new RetryConfig(this);
+        }
+    }
 }

+ 5 - 4
sdk-core/src/main/java/io/milvus/v2/common/CompactionState.java

@@ -19,17 +19,18 @@
 
 package io.milvus.v2.common;
 
-import lombok.Getter;
-
-@Getter
 public enum CompactionState {
     UndefiedState(0),
     Executing(1),
     Completed(2);
 
     private final int code;
+    
     CompactionState(int code) {
         this.code = code;
     }
-    ;
+
+    public int getCode() {
+        return code;
+    }
 }

+ 9 - 2
sdk-core/src/main/java/io/milvus/v2/common/ConsistencyLevel.java

@@ -19,8 +19,6 @@
 
 package io.milvus.v2.common;
 
-import lombok.Getter;
-@Getter
 public enum ConsistencyLevel{
     STRONG("Strong", 0),
     SESSION("Session", 1),
@@ -29,11 +27,20 @@ public enum ConsistencyLevel{
     ;
     private final String name;
     private final int code;
+    
     ConsistencyLevel(String name, int code) {
         this.name = name;
         this.code = code;
     }
 
+    public String getName() {
+        return name;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
     public static ConsistencyLevel fromName(String name) {
         for (ConsistencyLevel level : ConsistencyLevel.values()) {
             if (level.getName().equals(name)) {

+ 5 - 4
sdk-core/src/main/java/io/milvus/v2/common/DataType.java

@@ -19,11 +19,8 @@
 
 package io.milvus.v2.common;
 
-import lombok.Getter;
-
 import java.util.Arrays;
 
-@Getter
 public enum DataType {
     None(0),
     Bool(1),
@@ -48,10 +45,14 @@ public enum DataType {
     Int8Vector(105);
 
     private final int code;
+    
     DataType(int code) {
         this.code = code;
     }
-    ;
+
+    public int getCode() {
+        return code;
+    }
 
     public static DataType forNumber(int code) {
         return Arrays.stream(DataType.values())

+ 142 - 8
sdk-core/src/main/java/io/milvus/v2/common/IndexParam.java

@@ -19,25 +19,151 @@
 
 package io.milvus.v2.common;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.Getter;
 import lombok.NonNull;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import java.util.Map;
 
-@Data
-@SuperBuilder
 public class IndexParam {
     @NonNull
     private String fieldName;
     private String indexName;
-    @Builder.Default
     private IndexType indexType = IndexType.AUTOINDEX;
     private MetricType metricType;
     private Map<String, Object> extraParams;
 
+    // Constructor for builder
+    private IndexParam(Builder builder) {
+        this.fieldName = builder.fieldName;
+        this.indexName = builder.indexName;
+        this.indexType = builder.indexType;
+        this.metricType = builder.metricType;
+        this.extraParams = builder.extraParams;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getters
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public String getIndexName() {
+        return indexName;
+    }
+
+    public IndexType getIndexType() {
+        return indexType;
+    }
+
+    public MetricType getMetricType() {
+        return metricType;
+    }
+
+    public Map<String, Object> getExtraParams() {
+        return extraParams;
+    }
+
+    // Setters
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public void setIndexName(String indexName) {
+        this.indexName = indexName;
+    }
+
+    public void setIndexType(IndexType indexType) {
+        this.indexType = indexType;
+    }
+
+    public void setMetricType(MetricType metricType) {
+        this.metricType = metricType;
+    }
+
+    public void setExtraParams(Map<String, Object> extraParams) {
+        this.extraParams = extraParams;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        IndexParam that = (IndexParam) o;
+
+        return new EqualsBuilder()
+                .append(fieldName, that.fieldName)
+                .append(indexName, that.indexName)
+                .append(indexType, that.indexType)
+                .append(metricType, that.metricType)
+                .append(extraParams, that.extraParams)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(fieldName)
+                .append(indexName)
+                .append(indexType)
+                .append(metricType)
+                .append(extraParams)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "IndexParam{" +
+                "fieldName='" + fieldName + '\'' +
+                ", indexName='" + indexName + '\'' +
+                ", indexType=" + indexType +
+                ", metricType=" + metricType +
+                ", extraParams=" + extraParams +
+                '}';
+    }
+
+    // Public Builder class
+    public static class Builder {
+        private String fieldName;
+        private String indexName;
+        private IndexType indexType = IndexType.AUTOINDEX;
+        private MetricType metricType;
+        private Map<String, Object> extraParams;
+
+        public Builder fieldName(String fieldName) {
+            this.fieldName = fieldName;
+            return this;
+        }
+
+        public Builder indexName(String indexName) {
+            this.indexName = indexName;
+            return this;
+        }
+
+        public Builder indexType(IndexType indexType) {
+            this.indexType = indexType;
+            return this;
+        }
+
+        public Builder metricType(MetricType metricType) {
+            this.metricType = metricType;
+            return this;
+        }
+
+        public Builder extraParams(Map<String, Object> extraParams) {
+            this.extraParams = extraParams;
+            return this;
+        }
+
+        public IndexParam build() {
+            return new IndexParam(this);
+        }
+    }
+
     public enum MetricType {
         INVALID,
         // Only for float vectors
@@ -54,7 +180,6 @@ public class IndexParam {
         ;
     }
 
-    @Getter
     public enum IndexType {
         None(0),
         // Only supported for float vectors
@@ -109,5 +234,14 @@ public class IndexParam {
             this.name = name;
             this.code = code;
         }
+
+        // Getters for enum
+        public String getName() {
+            return name;
+        }
+
+        public int getCode() {
+            return code;
+        }
     }
 }

+ 4 - 3
sdk-core/src/main/java/io/milvus/v2/exception/ErrorCode.java

@@ -19,9 +19,6 @@
 
 package io.milvus.v2.exception;
 
-import lombok.Getter;
-
-@Getter
 public enum ErrorCode {
     SUCCESS(0),
     COLLECTION_NOT_FOUND(1),
@@ -36,4 +33,8 @@ public enum ErrorCode {
     ErrorCode(int i) {
         this.code = i;
     }
+
+    public int getCode() {
+        return code;
+    }
 }

+ 13 - 3
sdk-core/src/main/java/io/milvus/v2/exception/MilvusClientException.java

@@ -19,9 +19,6 @@
 
 package io.milvus.v2.exception;
 
-import lombok.Getter;
-
-@Getter
 public class MilvusClientException extends RuntimeException {
 
     private final ErrorCode errorCode;
@@ -45,4 +42,17 @@ public class MilvusClientException extends RuntimeException {
         this.serverErrCode = serverErrCode;
         this.legacyServerCode = legacyServerCode;
     }
+
+    // Getters
+    public ErrorCode getErrorCode() {
+        return errorCode;
+    }
+
+    public int getServerErrCode() {
+        return serverErrCode;
+    }
+
+    public int getLegacyServerCode() {
+        return legacyServerCode;
+    }
 }

+ 165 - 15
sdk-core/src/main/java/io/milvus/v2/service/collection/ReplicaInfo.java

@@ -1,27 +1,177 @@
 package io.milvus.v2.service.collection;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
-@Data
-@SuperBuilder
 public class ReplicaInfo {
     private Long replicaID;
     private Long collectionID;
-    @Builder.Default
-    private List<Long> partitionIDs = new ArrayList<>();
-    @Builder.Default
-    private List<ShardReplica> shardReplicas = new ArrayList<>();
-    @Builder.Default
-    private List<Long> nodeIDs = new ArrayList<>(); // include leaders
-    @Builder.Default
-    private String resourceGroupName = "";
-    @Builder.Default
-    private Map<String, Integer> numOutboundNode = new HashMap<>();
+    private List<Long> partitionIDs;
+    private List<ShardReplica> shardReplicas;
+    private List<Long> nodeIDs; // include leaders
+    private String resourceGroupName;
+    private Map<String, Integer> numOutboundNode;
+
+    private ReplicaInfo(Builder builder) {
+        this.replicaID = builder.replicaID;
+        this.collectionID = builder.collectionID;
+        this.partitionIDs = builder.partitionIDs != null ? builder.partitionIDs : new ArrayList<>();
+        this.shardReplicas = builder.shardReplicas != null ? builder.shardReplicas : new ArrayList<>();
+        this.nodeIDs = builder.nodeIDs != null ? builder.nodeIDs : new ArrayList<>();
+        this.resourceGroupName = builder.resourceGroupName != null ? builder.resourceGroupName : "";
+        this.numOutboundNode = builder.numOutboundNode != null ? builder.numOutboundNode : new HashMap<>();
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getters
+    public Long getReplicaID() {
+        return replicaID;
+    }
+
+    public Long getCollectionID() {
+        return collectionID;
+    }
+
+    public List<Long> getPartitionIDs() {
+        return partitionIDs;
+    }
+
+    public List<ShardReplica> getShardReplicas() {
+        return shardReplicas;
+    }
+
+    public List<Long> getNodeIDs() {
+        return nodeIDs;
+    }
+
+    public String getResourceGroupName() {
+        return resourceGroupName;
+    }
+
+    public Map<String, Integer> getNumOutboundNode() {
+        return numOutboundNode;
+    }
+
+    // Setters
+    public void setReplicaID(Long replicaID) {
+        this.replicaID = replicaID;
+    }
+
+    public void setCollectionID(Long collectionID) {
+        this.collectionID = collectionID;
+    }
+
+    public void setPartitionIDs(List<Long> partitionIDs) {
+        this.partitionIDs = partitionIDs;
+    }
+
+    public void setShardReplicas(List<ShardReplica> shardReplicas) {
+        this.shardReplicas = shardReplicas;
+    }
+
+    public void setNodeIDs(List<Long> nodeIDs) {
+        this.nodeIDs = nodeIDs;
+    }
+
+    public void setResourceGroupName(String resourceGroupName) {
+        this.resourceGroupName = resourceGroupName;
+    }
+
+    public void setNumOutboundNode(Map<String, Integer> numOutboundNode) {
+        this.numOutboundNode = numOutboundNode;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        
+        ReplicaInfo that = (ReplicaInfo) obj;
+        
+        return new EqualsBuilder()
+                .append(replicaID, that.replicaID)
+                .append(collectionID, that.collectionID)
+                .append(partitionIDs, that.partitionIDs)
+                .append(shardReplicas, that.shardReplicas)
+                .append(nodeIDs, that.nodeIDs)
+                .append(resourceGroupName, that.resourceGroupName)
+                .append(numOutboundNode, that.numOutboundNode)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(replicaID, collectionID, partitionIDs, shardReplicas, 
+                nodeIDs, resourceGroupName, numOutboundNode);
+    }
+
+    @Override
+    public String toString() {
+        return "ReplicaInfo{" +
+                "replicaID=" + replicaID +
+                ", collectionID=" + collectionID +
+                ", partitionIDs=" + partitionIDs +
+                ", shardReplicas=" + shardReplicas +
+                ", nodeIDs=" + nodeIDs +
+                ", resourceGroupName='" + resourceGroupName + '\'' +
+                ", numOutboundNode=" + numOutboundNode +
+                '}';
+    }
+
+    public static class Builder {
+        private Long replicaID;
+        private Long collectionID;
+        private List<Long> partitionIDs;
+        private List<ShardReplica> shardReplicas;
+        private List<Long> nodeIDs;
+        private String resourceGroupName;
+        private Map<String, Integer> numOutboundNode;
+
+        public Builder replicaID(Long replicaID) {
+            this.replicaID = replicaID;
+            return this;
+        }
+
+        public Builder collectionID(Long collectionID) {
+            this.collectionID = collectionID;
+            return this;
+        }
+
+        public Builder partitionIDs(List<Long> partitionIDs) {
+            this.partitionIDs = partitionIDs;
+            return this;
+        }
+
+        public Builder shardReplicas(List<ShardReplica> shardReplicas) {
+            this.shardReplicas = shardReplicas;
+            return this;
+        }
+
+        public Builder nodeIDs(List<Long> nodeIDs) {
+            this.nodeIDs = nodeIDs;
+            return this;
+        }
+
+        public Builder resourceGroupName(String resourceGroupName) {
+            this.resourceGroupName = resourceGroupName;
+            return this;
+        }
+
+        public Builder numOutboundNode(Map<String, Integer> numOutboundNode) {
+            this.numOutboundNode = numOutboundNode;
+            return this;
+        }
+
+        public ReplicaInfo build() {
+            return new ReplicaInfo(this);
+        }
+    }
 }

+ 110 - 9
sdk-core/src/main/java/io/milvus/v2/service/collection/ShardReplica.java

@@ -1,19 +1,120 @@
 package io.milvus.v2.service.collection;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
-@Data
-@SuperBuilder
 public class ShardReplica {
     private Long leaderID;
     private String leaderAddress; // IP:port
-    @Builder.Default
-    private String channelName = "";
-    @Builder.Default
-    private List<Long> nodeIDs = new ArrayList<>();
+    private String channelName;
+    private List<Long> nodeIDs;
+
+    private ShardReplica(Builder builder) {
+        this.leaderID = builder.leaderID;
+        this.leaderAddress = builder.leaderAddress;
+        this.channelName = builder.channelName != null ? builder.channelName : "";
+        this.nodeIDs = builder.nodeIDs != null ? builder.nodeIDs : new ArrayList<>();
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getters
+    public Long getLeaderID() {
+        return leaderID;
+    }
+
+    public String getLeaderAddress() {
+        return leaderAddress;
+    }
+
+    public String getChannelName() {
+        return channelName;
+    }
+
+    public List<Long> getNodeIDs() {
+        return nodeIDs;
+    }
+
+    // Setters
+    public void setLeaderID(Long leaderID) {
+        this.leaderID = leaderID;
+    }
+
+    public void setLeaderAddress(String leaderAddress) {
+        this.leaderAddress = leaderAddress;
+    }
+
+    public void setChannelName(String channelName) {
+        this.channelName = channelName;
+    }
+
+    public void setNodeIDs(List<Long> nodeIDs) {
+        this.nodeIDs = nodeIDs;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        
+        ShardReplica that = (ShardReplica) obj;
+        
+        return new EqualsBuilder()
+                .append(leaderID, that.leaderID)
+                .append(leaderAddress, that.leaderAddress)
+                .append(channelName, that.channelName)
+                .append(nodeIDs, that.nodeIDs)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(leaderID, leaderAddress, channelName, nodeIDs);
+    }
+
+    @Override
+    public String toString() {
+        return "ShardReplica{" +
+                "leaderID=" + leaderID +
+                ", leaderAddress='" + leaderAddress + '\'' +
+                ", channelName='" + channelName + '\'' +
+                ", nodeIDs=" + nodeIDs +
+                '}';
+    }
+
+    public static class Builder {
+        private Long leaderID;
+        private String leaderAddress;
+        private String channelName = "";
+        private List<Long> nodeIDs = new ArrayList<>();
+
+        public Builder leaderID(Long leaderID) {
+            this.leaderID = leaderID;
+            return this;
+        }
+
+        public Builder leaderAddress(String leaderAddress) {
+            this.leaderAddress = leaderAddress;
+            return this;
+        }
+
+        public Builder channelName(String channelName) {
+            this.channelName = channelName;
+            return this;
+        }
+
+        public Builder nodeIDs(List<Long> nodeIDs) {
+            this.nodeIDs = nodeIDs;
+            return this;
+        }
+
+        public ShardReplica build() {
+            return new ShardReplica(this);
+        }
+    }
 }

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

@@ -19,12 +19,203 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
-@Data
-@SuperBuilder
-public class AddCollectionFieldReq extends AddFieldReq{
+public class AddCollectionFieldReq extends AddFieldReq {
     private String collectionName;
     private String databaseName;
+
+    private AddCollectionFieldReq(Builder builder) {
+        super(builder);
+        this.collectionName = builder.collectionName;
+        this.databaseName = builder.databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        if (!super.equals(obj)) return false;
+        AddCollectionFieldReq that = (AddCollectionFieldReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(databaseName, that.databaseName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .appendSuper(super.hashCode())
+                .append(collectionName)
+                .append(databaseName)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "AddCollectionFieldReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", " + super.toString() +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder extends AddFieldReq.Builder {
+        private String collectionName;
+        private String databaseName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        // Override all parent builder methods to return the correct type
+        @Override
+        public Builder fieldName(String fieldName) {
+            super.fieldName(fieldName);
+            return this;
+        }
+
+        @Override
+        public Builder description(String description) {
+            super.description(description);
+            return this;
+        }
+
+        @Override
+        public Builder dataType(io.milvus.v2.common.DataType dataType) {
+            super.dataType(dataType);
+            return this;
+        }
+
+        @Override
+        public Builder maxLength(Integer maxLength) {
+            super.maxLength(maxLength);
+            return this;
+        }
+
+        @Override
+        public Builder isPrimaryKey(Boolean isPrimaryKey) {
+            super.isPrimaryKey(isPrimaryKey);
+            return this;
+        }
+
+        @Override
+        public Builder isPartitionKey(Boolean isPartitionKey) {
+            super.isPartitionKey(isPartitionKey);
+            return this;
+        }
+
+        @Override
+        public Builder isClusteringKey(Boolean isClusteringKey) {
+            super.isClusteringKey(isClusteringKey);
+            return this;
+        }
+
+        @Override
+        public Builder autoID(Boolean autoID) {
+            super.autoID(autoID);
+            return this;
+        }
+
+        @Override
+        public Builder dimension(Integer dimension) {
+            super.dimension(dimension);
+            return this;
+        }
+
+        @Override
+        public Builder elementType(io.milvus.v2.common.DataType elementType) {
+            super.elementType(elementType);
+            return this;
+        }
+
+        @Override
+        public Builder maxCapacity(Integer maxCapacity) {
+            super.maxCapacity(maxCapacity);
+            return this;
+        }
+
+        @Override
+        public Builder isNullable(Boolean isNullable) {
+            super.isNullable(isNullable);
+            return this;
+        }
+
+        @Override
+        public Builder defaultValue(Object defaultValue) {
+            super.defaultValue(defaultValue);
+            return this;
+        }
+
+        @Override
+        public Builder enableDefaultValue(boolean enableDefaultValue) {
+            super.enableDefaultValue(enableDefaultValue);
+            return this;
+        }
+
+        @Override
+        public Builder enableAnalyzer(Boolean enableAnalyzer) {
+            super.enableAnalyzer(enableAnalyzer);
+            return this;
+        }
+
+        @Override
+        public Builder analyzerParams(java.util.Map<String, Object> analyzerParams) {
+            super.analyzerParams(analyzerParams);
+            return this;
+        }
+
+        @Override
+        public Builder enableMatch(Boolean enableMatch) {
+            super.enableMatch(enableMatch);
+            return this;
+        }
+
+        @Override
+        public Builder typeParams(java.util.Map<String, String> typeParams) {
+            super.typeParams(typeParams);
+            return this;
+        }
+
+        @Override
+        public Builder multiAnalyzerParams(java.util.Map<String, Object> multiAnalyzerParams) {
+            super.multiAnalyzerParams(multiAnalyzerParams);
+            return this;
+        }
+
+        @Override
+        public AddCollectionFieldReq build() {
+            return new AddCollectionFieldReq(this);
+        }
+    }
 }

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

@@ -20,38 +20,26 @@
 package io.milvus.v2.service.collection.request;
 
 import io.milvus.v2.common.DataType;
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.Map;
+import java.util.Objects;
 
-@Data
-@SuperBuilder
 public class AddFieldReq {
     private String fieldName;
-    @Builder.Default
-    private String description = "";
+    private String description;
     private DataType dataType;
-    @Builder.Default
-    private Integer maxLength = 65535;
-    @Builder.Default
-    private Boolean isPrimaryKey = Boolean.FALSE;
-    @Builder.Default
-    private Boolean isPartitionKey = Boolean.FALSE;
-    @Builder.Default
-    private Boolean isClusteringKey = Boolean.FALSE;
-    @Builder.Default
-    private Boolean autoID = Boolean.FALSE;
+    private Integer maxLength;
+    private Boolean isPrimaryKey;
+    private Boolean isPartitionKey;
+    private Boolean isClusteringKey;
+    private Boolean autoID;
     private Integer dimension;
     private DataType elementType;
     private Integer maxCapacity;
-    @Builder.Default
-    private Boolean isNullable = Boolean.FALSE; // only for scalar fields(not include Array fields)
-    @Builder.Default
-    private Object defaultValue = null; // only for scalar fields
-    @Builder.ObtainVia(field = "hiddenField")
-    private boolean enableDefaultValue = false; // a flag to pass the default value to server or not
+    private Boolean isNullable; // only for scalar fields(not include Array fields)
+    private Object defaultValue; // only for scalar fields
+    private boolean enableDefaultValue; // a flag to pass the default value to server or not
     private Boolean enableAnalyzer; // for BM25 tokenizer
     private Map<String, Object> analyzerParams; // for BM25 tokenizer
     private Boolean enableMatch; // for BM25 keyword search
@@ -60,13 +48,368 @@ public class AddFieldReq {
     private Map<String, String> typeParams;
     private Map<String, Object> multiAnalyzerParams; // for multi‑language analyzers
 
-    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;
+    AddFieldReq(Builder builder) {
+        this.fieldName = builder.fieldName;
+        this.description = builder.description != null ? builder.description : "";
+        this.dataType = builder.dataType;
+        this.maxLength = builder.maxLength != null ? builder.maxLength : 65535;
+        this.isPrimaryKey = builder.isPrimaryKey != null ? builder.isPrimaryKey : Boolean.FALSE;
+        this.isPartitionKey = builder.isPartitionKey != null ? builder.isPartitionKey : Boolean.FALSE;
+        this.isClusteringKey = builder.isClusteringKey != null ? builder.isClusteringKey : Boolean.FALSE;
+        this.autoID = builder.autoID != null ? builder.autoID : Boolean.FALSE;
+        this.dimension = builder.dimension;
+        this.elementType = builder.elementType;
+        this.maxCapacity = builder.maxCapacity;
+        this.isNullable = builder.isNullable != null ? builder.isNullable : Boolean.FALSE;
+        this.defaultValue = builder.defaultValue;
+        this.enableDefaultValue = builder.enableDefaultValue;
+        this.enableAnalyzer = builder.enableAnalyzer;
+        this.analyzerParams = builder.analyzerParams;
+        this.enableMatch = builder.enableMatch;
+        this.typeParams = builder.typeParams;
+        this.multiAnalyzerParams = builder.multiAnalyzerParams;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getters
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public DataType getDataType() {
+        return dataType;
+    }
+
+    public Integer getMaxLength() {
+        return maxLength;
+    }
+
+    public Boolean getIsPrimaryKey() {
+        return isPrimaryKey;
+    }
+
+    public Boolean getIsPartitionKey() {
+        return isPartitionKey;
+    }
+
+    public Boolean getIsClusteringKey() {
+        return isClusteringKey;
+    }
+
+    public Boolean getAutoID() {
+        return autoID;
+    }
+
+    public Integer getDimension() {
+        return dimension;
+    }
+
+    public DataType getElementType() {
+        return elementType;
+    }
+
+    public Integer getMaxCapacity() {
+        return maxCapacity;
+    }
+
+    public Boolean getIsNullable() {
+        return isNullable;
+    }
+
+    public Object getDefaultValue() {
+        return defaultValue;
+    }
+
+    public boolean isEnableDefaultValue() {
+        return enableDefaultValue;
+    }
+
+    public Boolean getEnableAnalyzer() {
+        return enableAnalyzer;
+    }
+
+    public Map<String, Object> getAnalyzerParams() {
+        return analyzerParams;
+    }
+
+    public Boolean getEnableMatch() {
+        return enableMatch;
+    }
+
+    public Map<String, String> getTypeParams() {
+        return typeParams;
+    }
+
+    public Map<String, Object> getMultiAnalyzerParams() {
+        return multiAnalyzerParams;
+    }
+
+    // Setters
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public void setDataType(DataType dataType) {
+        this.dataType = dataType;
+    }
+
+    public void setMaxLength(Integer maxLength) {
+        this.maxLength = maxLength;
+    }
+
+    public void setIsPrimaryKey(Boolean isPrimaryKey) {
+        this.isPrimaryKey = isPrimaryKey;
+    }
+
+    public void setIsPartitionKey(Boolean isPartitionKey) {
+        this.isPartitionKey = isPartitionKey;
+    }
+
+    public void setIsClusteringKey(Boolean isClusteringKey) {
+        this.isClusteringKey = isClusteringKey;
+    }
+
+    public void setAutoID(Boolean autoID) {
+        this.autoID = autoID;
+    }
+
+    public void setDimension(Integer dimension) {
+        this.dimension = dimension;
+    }
+
+    public void setElementType(DataType elementType) {
+        this.elementType = elementType;
+    }
+
+    public void setMaxCapacity(Integer maxCapacity) {
+        this.maxCapacity = maxCapacity;
+    }
+
+    public void setIsNullable(Boolean isNullable) {
+        this.isNullable = isNullable;
+    }
+
+    public void setDefaultValue(Object defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+
+    public void setEnableDefaultValue(boolean enableDefaultValue) {
+        this.enableDefaultValue = enableDefaultValue;
+    }
+
+    public void setEnableAnalyzer(Boolean enableAnalyzer) {
+        this.enableAnalyzer = enableAnalyzer;
+    }
+
+    public void setAnalyzerParams(Map<String, Object> analyzerParams) {
+        this.analyzerParams = analyzerParams;
+    }
+
+    public void setEnableMatch(Boolean enableMatch) {
+        this.enableMatch = enableMatch;
+    }
+
+    public void setTypeParams(Map<String, String> typeParams) {
+        this.typeParams = typeParams;
+    }
+
+    public void setMultiAnalyzerParams(Map<String, Object> multiAnalyzerParams) {
+        this.multiAnalyzerParams = multiAnalyzerParams;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        
+        AddFieldReq that = (AddFieldReq) obj;
+        
+        return new EqualsBuilder()
+                .append(enableDefaultValue, that.enableDefaultValue)
+                .append(fieldName, that.fieldName)
+                .append(description, that.description)
+                .append(dataType, that.dataType)
+                .append(maxLength, that.maxLength)
+                .append(isPrimaryKey, that.isPrimaryKey)
+                .append(isPartitionKey, that.isPartitionKey)
+                .append(isClusteringKey, that.isClusteringKey)
+                .append(autoID, that.autoID)
+                .append(dimension, that.dimension)
+                .append(elementType, that.elementType)
+                .append(maxCapacity, that.maxCapacity)
+                .append(isNullable, that.isNullable)
+                .append(defaultValue, that.defaultValue)
+                .append(enableAnalyzer, that.enableAnalyzer)
+                .append(analyzerParams, that.analyzerParams)
+                .append(enableMatch, that.enableMatch)
+                .append(typeParams, that.typeParams)
+                .append(multiAnalyzerParams, that.multiAnalyzerParams)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(fieldName, description, dataType, maxLength, isPrimaryKey, 
+                isPartitionKey, isClusteringKey, autoID, dimension, elementType, 
+                maxCapacity, isNullable, defaultValue, enableDefaultValue, 
+                enableAnalyzer, analyzerParams, enableMatch, typeParams, multiAnalyzerParams);
+    }
+
+    @Override
+    public String toString() {
+        return "AddFieldReq{" +
+                "fieldName='" + fieldName + '\'' +
+                ", description='" + description + '\'' +
+                ", dataType=" + dataType +
+                ", maxLength=" + maxLength +
+                ", isPrimaryKey=" + isPrimaryKey +
+                ", isPartitionKey=" + isPartitionKey +
+                ", isClusteringKey=" + isClusteringKey +
+                ", autoID=" + autoID +
+                ", dimension=" + dimension +
+                ", elementType=" + elementType +
+                ", maxCapacity=" + maxCapacity +
+                ", isNullable=" + isNullable +
+                ", defaultValue=" + defaultValue +
+                ", enableDefaultValue=" + enableDefaultValue +
+                ", enableAnalyzer=" + enableAnalyzer +
+                ", analyzerParams=" + analyzerParams +
+                ", enableMatch=" + enableMatch +
+                ", typeParams=" + typeParams +
+                ", multiAnalyzerParams=" + multiAnalyzerParams +
+                '}';
+    }
+
+    public static class Builder {
+        private String fieldName;
+        private String description;
+        private DataType dataType;
+        private Integer maxLength;
+        private Boolean isPrimaryKey;
+        private Boolean isPartitionKey;
+        private Boolean isClusteringKey;
+        private Boolean autoID;
+        private Integer dimension;
+        private DataType elementType;
+        private Integer maxCapacity;
+        private Boolean isNullable;
+        private Object defaultValue;
+        private boolean enableDefaultValue = false;
+        private Boolean enableAnalyzer;
+        private Map<String, Object> analyzerParams;
+        private Boolean enableMatch;
+        private Map<String, String> typeParams;
+        private Map<String, Object> multiAnalyzerParams;
+
+        public Builder fieldName(String fieldName) {
+            this.fieldName = fieldName;
+            return this;
+        }
+
+        public Builder description(String description) {
+            this.description = description;
+            return this;
+        }
+
+        public Builder dataType(DataType dataType) {
+            this.dataType = dataType;
+            return this;
+        }
+
+        public Builder maxLength(Integer maxLength) {
+            this.maxLength = maxLength;
+            return this;
+        }
+
+        public Builder isPrimaryKey(Boolean isPrimaryKey) {
+            this.isPrimaryKey = isPrimaryKey;
+            return this;
+        }
+
+        public Builder isPartitionKey(Boolean isPartitionKey) {
+            this.isPartitionKey = isPartitionKey;
+            return this;
+        }
+
+        public Builder isClusteringKey(Boolean isClusteringKey) {
+            this.isClusteringKey = isClusteringKey;
+            return this;
+        }
+
+        public Builder autoID(Boolean autoID) {
+            this.autoID = autoID;
+            return this;
+        }
+
+        public Builder dimension(Integer dimension) {
+            this.dimension = dimension;
+            return this;
+        }
+
+        public Builder elementType(DataType elementType) {
+            this.elementType = elementType;
+            return this;
+        }
+
+        public Builder maxCapacity(Integer maxCapacity) {
+            this.maxCapacity = maxCapacity;
+            return this;
+        }
+
+        public Builder isNullable(Boolean isNullable) {
+            this.isNullable = isNullable;
+            return this;
+        }
+
+        public Builder defaultValue(Object defaultValue) {
+            this.defaultValue = defaultValue;
+            this.enableDefaultValue = true;
+            return this;
+        }
+
+        public Builder enableDefaultValue(boolean enableDefaultValue) {
+            this.enableDefaultValue = enableDefaultValue;
+            return this;
+        }
+
+        public Builder enableAnalyzer(Boolean enableAnalyzer) {
+            this.enableAnalyzer = enableAnalyzer;
+            return this;
+        }
+
+        public Builder analyzerParams(Map<String, Object> analyzerParams) {
+            this.analyzerParams = analyzerParams;
+            return this;
+        }
+
+        public Builder enableMatch(Boolean enableMatch) {
+            this.enableMatch = enableMatch;
+            return this;
+        }
+
+        public Builder typeParams(Map<String, String> typeParams) {
+            this.typeParams = typeParams;
+            return this;
+        }
+
+        public Builder multiAnalyzerParams(Map<String, Object> multiAnalyzerParams) {
+            this.multiAnalyzerParams = multiAnalyzerParams;
+            return this;
+        }
 
-            this.enableDefaultValue = true; // automatically set this flag
-            return self();
+        public AddFieldReq build() {
+            return new AddFieldReq(this);
         }
     }
 }

+ 108 - 13
sdk-core/src/main/java/io/milvus/v2/service/collection/request/AlterCollectionFieldReq.java

@@ -19,30 +19,125 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 public class AlterCollectionFieldReq {
     private String collectionName;
     private String fieldName;
     private String databaseName;
-    @Builder.Default
     private final Map<String, String> properties = new HashMap<>();
 
-    public static abstract class AlterCollectionFieldReqBuilder<C extends AlterCollectionFieldReq, B extends AlterCollectionFieldReq.AlterCollectionFieldReqBuilder<C, B>> {
-        public B property(String key, String value) {
-            if(null == this.properties$value ){
-                this.properties$value = new HashMap<>();
+    private AlterCollectionFieldReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.fieldName = builder.fieldName;
+        this.databaseName = builder.databaseName;
+        if (builder.properties != null) {
+            this.properties.putAll(builder.properties);
+        }
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        AlterCollectionFieldReq that = (AlterCollectionFieldReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(fieldName, that.fieldName)
+                .append(databaseName, that.databaseName)
+                .append(properties, that.properties)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .append(fieldName)
+                .append(databaseName)
+                .append(properties)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "AlterCollectionFieldReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", fieldName='" + fieldName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String fieldName;
+        private String databaseName;
+        private Map<String, String> properties = new HashMap<>();
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder fieldName(String fieldName) {
+            this.fieldName = fieldName;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder property(String key, String value) {
+            if (this.properties == null) {
+                this.properties = new HashMap<>();
             }
-            this.properties$value.put(key, value);
-            this.properties$set = true;
-            return self();
+            this.properties.put(key, value);
+            return this;
+        }
+
+        public AlterCollectionFieldReq build() {
+            return new AlterCollectionFieldReq(this);
         }
     }
 }

+ 94 - 13
sdk-core/src/main/java/io/milvus/v2/service/collection/request/AlterCollectionPropertiesReq.java

@@ -19,30 +19,111 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 public class AlterCollectionPropertiesReq {
     private String collectionName;
     private String databaseName;
-    @Builder.Default
     private final Map<String, String> properties = new HashMap<>();
 
+    private AlterCollectionPropertiesReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.databaseName = builder.databaseName;
+        if (builder.properties != null) {
+            this.properties.putAll(builder.properties);
+        }
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        AlterCollectionPropertiesReq that = (AlterCollectionPropertiesReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(databaseName, that.databaseName)
+                .append(properties, that.properties)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .append(databaseName)
+                .append(properties)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "AlterCollectionPropertiesReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String databaseName;
+        private Map<String, String> properties = new HashMap<>();
 
-    public static abstract class AlterCollectionPropertiesReqBuilder<C extends AlterCollectionPropertiesReq, B extends AlterCollectionPropertiesReq.AlterCollectionPropertiesReqBuilder<C, B>> {
-        public B property(String key, String value) {
-            if(null == this.properties$value ){
-                this.properties$value = new HashMap<>();
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder properties(Map<String, String> properties) {
+            this.properties = properties;
+            return this;
+        }
+
+        public Builder property(String key, String value) {
+            if (this.properties == null) {
+                this.properties = new HashMap<>();
             }
-            this.properties$value.put(key, value);
-            this.properties$set = true;
-            return self();
+            this.properties.put(key, value);
+            return this;
+        }
+
+        public AlterCollectionPropertiesReq build() {
+            return new AlterCollectionPropertiesReq(this);
         }
     }
 }

+ 88 - 13
sdk-core/src/main/java/io/milvus/v2/service/collection/request/AlterCollectionReq.java

@@ -1,31 +1,106 @@
 package io.milvus.v2.service.collection.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 @Deprecated
 public class AlterCollectionReq {
     private String collectionName;
     private String databaseName;
-    @Builder.Default
     private final Map<String, String> properties = new HashMap<>();
 
+    private AlterCollectionReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.databaseName = builder.databaseName;
+        if (builder.properties != null) {
+            this.properties.putAll(builder.properties);
+        }
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
 
+    public Map<String, String> getProperties() {
+        return properties;
+    }
 
-    public static abstract class AlterCollectionReqBuilder<C extends AlterCollectionReq, B extends AlterCollectionReqBuilder<C, B>> {
-        public B property(String key, String value) {
-            if(null == this.properties$value ){
-                this.properties$value = new HashMap<>();
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        AlterCollectionReq that = (AlterCollectionReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(databaseName, that.databaseName)
+                .append(properties, that.properties)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .append(databaseName)
+                .append(properties)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "AlterCollectionReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String databaseName;
+        private Map<String, String> properties = new HashMap<>();
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder property(String key, String value) {
+            if (this.properties == null) {
+                this.properties = new HashMap<>();
             }
-            this.properties$value.put(key, value);
-            this.properties$set = true;
-            return self();
+            this.properties.put(key, value);
+            return this;
+        }
+
+        public AlterCollectionReq build() {
+            return new AlterCollectionReq(this);
         }
     }
 }

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

@@ -26,118 +26,436 @@ import io.milvus.v2.common.IndexParam;
 import io.milvus.v2.exception.ErrorCode;
 import io.milvus.v2.exception.MilvusClientException;
 import io.milvus.v2.utils.SchemaUtils;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NonNull;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 public class CreateCollectionReq {
     private String databaseName;
-    @NonNull
     private String collectionName;
-    @Builder.Default
     private String description = "";
     private Integer dimension;
 
-    @Builder.Default
     private String primaryFieldName = "id";
-    @Builder.Default
     private DataType idType = DataType.Int64;
-    @Builder.Default
     private Integer maxLength = 65535;
-    @Builder.Default
     private String vectorFieldName = "vector";
-    @Builder.Default
     private String metricType = IndexParam.MetricType.COSINE.name();
-    @Builder.Default
     private Boolean autoID = Boolean.FALSE;
 
     // used by quickly create collections and create collections with schema
     // Note: This property is only for fast creating collection. If user use CollectionSchema to create a collection,
     //       the CollectionSchema.enableDynamicField must equal to CreateCollectionReq.enableDynamicField.
-    @Builder.Default
     private Boolean enableDynamicField = Boolean.TRUE;
-    @Builder.Default
     private Integer numShards = 1;
 
     // create collections with schema
     private CollectionSchema collectionSchema;
 
-    @Builder.Default
     private List<IndexParam> indexParams = new ArrayList<>();
 
     //private String partitionKeyField;
     private Integer numPartitions;
 
-    @Builder.Default
     private ConsistencyLevel consistencyLevel = ConsistencyLevel.BOUNDED;
 
-    @Builder.Default
     private final Map<String, String> properties = new HashMap<>();
 
-    public static abstract class CreateCollectionReqBuilder<C extends CreateCollectionReq, B extends CreateCollectionReq.CreateCollectionReqBuilder<C, B>> {
-        public B indexParam(IndexParam indexParam) {
-            if(null == this.indexParams$value ){
-                this.indexParams$value = new ArrayList<>();
+    private CreateCollectionReq(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        
+        this.databaseName = builder.databaseName;
+        this.collectionName = builder.collectionName;
+        this.description = builder.description;
+        this.dimension = builder.dimension;
+        this.primaryFieldName = builder.primaryFieldName;
+        this.idType = builder.idType;
+        this.maxLength = builder.maxLength;
+        this.vectorFieldName = builder.vectorFieldName;
+        this.metricType = builder.metricType;
+        this.autoID = builder.autoID;
+        this.enableDynamicField = builder.enableDynamicField;
+        this.numShards = builder.numShards;
+        this.collectionSchema = builder.collectionSchema;
+        this.indexParams = builder.indexParams;
+        this.numPartitions = builder.numPartitions;
+        this.consistencyLevel = builder.consistencyLevel;
+        if (builder.properties != null) {
+            this.properties.putAll(builder.properties);
+        }
+    }
+
+    // Getters and Setters
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        if (collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        this.collectionName = collectionName;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public Integer getDimension() {
+        return dimension;
+    }
+
+    public void setDimension(Integer dimension) {
+        this.dimension = dimension;
+    }
+
+    public String getPrimaryFieldName() {
+        return primaryFieldName;
+    }
+
+    public void setPrimaryFieldName(String primaryFieldName) {
+        this.primaryFieldName = primaryFieldName;
+    }
+
+    public DataType getIdType() {
+        return idType;
+    }
+
+    public void setIdType(DataType idType) {
+        this.idType = idType;
+    }
+
+    public Integer getMaxLength() {
+        return maxLength;
+    }
+
+    public void setMaxLength(Integer maxLength) {
+        this.maxLength = maxLength;
+    }
+
+    public String getVectorFieldName() {
+        return vectorFieldName;
+    }
+
+    public void setVectorFieldName(String vectorFieldName) {
+        this.vectorFieldName = vectorFieldName;
+    }
+
+    public String getMetricType() {
+        return metricType;
+    }
+
+    public void setMetricType(String metricType) {
+        this.metricType = metricType;
+    }
+
+    public Boolean getAutoID() {
+        return autoID;
+    }
+
+    public void setAutoID(Boolean autoID) {
+        this.autoID = autoID;
+    }
+
+    public Boolean getEnableDynamicField() {
+        return enableDynamicField;
+    }
+
+    public void setEnableDynamicField(Boolean enableDynamicField) {
+        this.enableDynamicField = enableDynamicField;
+    }
+
+    public Integer getNumShards() {
+        return numShards;
+    }
+
+    public void setNumShards(Integer numShards) {
+        this.numShards = numShards;
+    }
+
+    public CollectionSchema getCollectionSchema() {
+        return collectionSchema;
+    }
+
+    public void setCollectionSchema(CollectionSchema collectionSchema) {
+        this.collectionSchema = collectionSchema;
+    }
+
+    public List<IndexParam> getIndexParams() {
+        return indexParams;
+    }
+
+    public void setIndexParams(List<IndexParam> indexParams) {
+        this.indexParams = indexParams;
+    }
+
+    public Integer getNumPartitions() {
+        return numPartitions;
+    }
+
+    public void setNumPartitions(Integer numPartitions) {
+        this.numPartitions = numPartitions;
+    }
+
+    public ConsistencyLevel getConsistencyLevel() {
+        return consistencyLevel;
+    }
+
+    public void setConsistencyLevel(ConsistencyLevel consistencyLevel) {
+        this.consistencyLevel = consistencyLevel;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        CreateCollectionReq that = (CreateCollectionReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(collectionName, that.collectionName)
+                .append(description, that.description)
+                .append(dimension, that.dimension)
+                .append(primaryFieldName, that.primaryFieldName)
+                .append(idType, that.idType)
+                .append(maxLength, that.maxLength)
+                .append(vectorFieldName, that.vectorFieldName)
+                .append(metricType, that.metricType)
+                .append(autoID, that.autoID)
+                .append(enableDynamicField, that.enableDynamicField)
+                .append(numShards, that.numShards)
+                .append(collectionSchema, that.collectionSchema)
+                .append(indexParams, that.indexParams)
+                .append(numPartitions, that.numPartitions)
+                .append(consistencyLevel, that.consistencyLevel)
+                .append(properties, that.properties)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(databaseName)
+                .append(collectionName)
+                .append(description)
+                .append(dimension)
+                .append(primaryFieldName)
+                .append(idType)
+                .append(maxLength)
+                .append(vectorFieldName)
+                .append(metricType)
+                .append(autoID)
+                .append(enableDynamicField)
+                .append(numShards)
+                .append(collectionSchema)
+                .append(indexParams)
+                .append(numPartitions)
+                .append(consistencyLevel)
+                .append(properties)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "CreateCollectionReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", description='" + description + '\'' +
+                ", dimension=" + dimension +
+                ", primaryFieldName='" + primaryFieldName + '\'' +
+                ", idType=" + idType +
+                ", maxLength=" + maxLength +
+                ", vectorFieldName='" + vectorFieldName + '\'' +
+                ", metricType='" + metricType + '\'' +
+                ", autoID=" + autoID +
+                ", enableDynamicField=" + enableDynamicField +
+                ", numShards=" + numShards +
+                ", collectionSchema=" + collectionSchema +
+                ", indexParams=" + indexParams +
+                ", numPartitions=" + numPartitions +
+                ", consistencyLevel=" + consistencyLevel +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private String collectionName;
+        private String description = "";
+        private Integer dimension;
+        private String primaryFieldName = "id";
+        private DataType idType = DataType.Int64;
+        private Integer maxLength = 65535;
+        private String vectorFieldName = "vector";
+        private String metricType = IndexParam.MetricType.COSINE.name();
+        private Boolean autoID = Boolean.FALSE;
+        private Boolean enableDynamicField = Boolean.TRUE;
+        private Integer numShards = 1;
+        private CollectionSchema collectionSchema;
+        private List<IndexParam> indexParams = new ArrayList<>();
+        private Integer numPartitions;
+        private ConsistencyLevel consistencyLevel = ConsistencyLevel.BOUNDED;
+        private Map<String, String> properties = new HashMap<>();
+        private boolean enableDynamicFieldSet = false;
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder collectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("Collection name cannot be null");
+            }
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder description(String description) {
+            this.description = description;
+            return this;
+        }
+
+        public Builder dimension(Integer dimension) {
+            this.dimension = dimension;
+            return this;
+        }
+
+        public Builder primaryFieldName(String primaryFieldName) {
+            this.primaryFieldName = primaryFieldName;
+            return this;
+        }
+
+        public Builder idType(DataType idType) {
+            this.idType = idType;
+            return this;
+        }
+
+        public Builder maxLength(Integer maxLength) {
+            this.maxLength = maxLength;
+            return this;
+        }
+
+        public Builder vectorFieldName(String vectorFieldName) {
+            this.vectorFieldName = vectorFieldName;
+            return this;
+        }
+
+        public Builder metricType(String metricType) {
+            this.metricType = metricType;
+            return this;
+        }
+
+        public Builder autoID(Boolean autoID) {
+            this.autoID = autoID;
+            return this;
+        }
+
+        public Builder numShards(Integer numShards) {
+            this.numShards = numShards;
+            return this;
+        }
+
+        public Builder indexParams(List<IndexParam> indexParams) {
+            this.indexParams = indexParams;
+            return this;
+        }
+
+        public Builder numPartitions(Integer numPartitions) {
+            this.numPartitions = numPartitions;
+            return this;
+        }
+
+        public Builder consistencyLevel(ConsistencyLevel consistencyLevel) {
+            this.consistencyLevel = consistencyLevel;
+            return this;
+        }
+
+        public Builder indexParam(IndexParam indexParam) {
+            if (this.indexParams == null) {
+                this.indexParams = new ArrayList<>();
             }
             try {
-                this.indexParams$value.add(indexParam);
-            }catch (UnsupportedOperationException _e){
-                this.indexParams$value = new ArrayList<>(this.indexParams$value);
-                this.indexParams$value.add(indexParam);
+                this.indexParams.add(indexParam);
+            } catch (UnsupportedOperationException _e) {
+                this.indexParams = new ArrayList<>(this.indexParams);
+                this.indexParams.add(indexParam);
             }
-            this.indexParams$set = true;
-            return self();
+            return this;
         }
 
-        public B enableDynamicField(Boolean enableDynamicField) {
+        public Builder enableDynamicField(Boolean enableDynamicField) {
             if (this.collectionSchema != null && (this.collectionSchema.isEnableDynamicField() != enableDynamicField)) {
                 throw new MilvusClientException(ErrorCode.INVALID_PARAMS,
                         "The enableDynamicField flag has been set by CollectionSchema, not allow to set different value by enableDynamicField().");
             }
-            this.enableDynamicField$value = enableDynamicField;
-            this.enableDynamicField$set = true;
-            return self();
+            this.enableDynamicField = enableDynamicField;
+            this.enableDynamicFieldSet = true;
+            return this;
         }
 
-        public B collectionSchema(CollectionSchema collectionSchema) {
-            if (this.enableDynamicField$set && (collectionSchema.isEnableDynamicField() != this.enableDynamicField$value)) {
+        public Builder collectionSchema(CollectionSchema collectionSchema) {
+            if (this.enableDynamicFieldSet && (collectionSchema.isEnableDynamicField() != this.enableDynamicField)) {
                 throw new MilvusClientException(ErrorCode.INVALID_PARAMS,
                         "The enableDynamicField flag has been set by enableDynamicField(), not allow to set different value by collectionSchema.");
             }
             this.collectionSchema = collectionSchema;
-            this.enableDynamicField$value = collectionSchema.isEnableDynamicField();
-            this.enableDynamicField$set = true;
-            return self();
+            this.enableDynamicField = collectionSchema.isEnableDynamicField();
+            this.enableDynamicFieldSet = true;
+            return this;
         }
 
-        public B property(String key, String value) {
-            if(null == this.properties$value ){
-                this.properties$value = new HashMap<>();
+        public Builder property(String key, String value) {
+            if (this.properties == null) {
+                this.properties = new HashMap<>();
             }
-            this.properties$value.put(key, value);
-            this.properties$set = true;
-            return self();
+            this.properties.put(key, value);
+            return this;
+        }
+
+        public CreateCollectionReq build() {
+            return new CreateCollectionReq(this);
         }
     }
 
-    @Data
-    @SuperBuilder
     public static class CollectionSchema {
-        @Builder.Default
         private List<CreateCollectionReq.FieldSchema> fieldSchemaList = new ArrayList<>();
-        @Builder.Default
         private boolean enableDynamicField = false;
-        @Builder.Default
         private List<CreateCollectionReq.Function> functionList = new ArrayList<>();
 
+        private CollectionSchema(Builder builder) {
+            this.fieldSchemaList = builder.fieldSchemaList;
+            this.enableDynamicField = builder.enableDynamicField;
+            this.functionList = builder.functionList;
+        }
+
         public CollectionSchema addField(AddFieldReq addFieldReq) {
             fieldSchemaList.add(SchemaUtils.convertFieldReqToFieldSchema(addFieldReq));
             return this;
@@ -156,31 +474,106 @@ public class CreateCollectionReq {
             }
             return null;
         }
+
+        public List<CreateCollectionReq.FieldSchema> getFieldSchemaList() {
+            return fieldSchemaList;
+        }
+
+        public void setFieldSchemaList(List<CreateCollectionReq.FieldSchema> fieldSchemaList) {
+            this.fieldSchemaList = fieldSchemaList;
+        }
+
+        public boolean isEnableDynamicField() {
+            return enableDynamicField;
+        }
+
+        public void setEnableDynamicField(boolean enableDynamicField) {
+            this.enableDynamicField = enableDynamicField;
+        }
+
+        public List<CreateCollectionReq.Function> getFunctionList() {
+            return functionList;
+        }
+
+        public void setFunctionList(List<CreateCollectionReq.Function> functionList) {
+            this.functionList = functionList;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) return true;
+            if (obj == null || getClass() != obj.getClass()) return false;
+            CollectionSchema that = (CollectionSchema) obj;
+            return new EqualsBuilder()
+                    .append(enableDynamicField, that.enableDynamicField)
+                    .append(fieldSchemaList, that.fieldSchemaList)
+                    .append(functionList, that.functionList)
+                    .isEquals();
+        }
+
+        @Override
+        public int hashCode() {
+            return new HashCodeBuilder(17, 37)
+                    .append(fieldSchemaList)
+                    .append(enableDynamicField)
+                    .append(functionList)
+                    .toHashCode();
+        }
+
+        @Override
+        public String toString() {
+            return "CollectionSchema{" +
+                    "fieldSchemaList=" + fieldSchemaList +
+                    ", enableDynamicField=" + enableDynamicField +
+                    ", functionList=" + functionList +
+                    '}';
+        }
+
+        public static Builder builder() {
+            return new Builder();
+        }
+
+        public static class Builder {
+            private List<CreateCollectionReq.FieldSchema> fieldSchemaList = new ArrayList<>();
+            private boolean enableDynamicField = false;
+            private List<CreateCollectionReq.Function> functionList = new ArrayList<>();
+
+            private Builder() {}
+
+            public Builder fieldSchemaList(List<CreateCollectionReq.FieldSchema> fieldSchemaList) {
+                this.fieldSchemaList = fieldSchemaList;
+                return this;
+            }
+
+            public Builder enableDynamicField(boolean enableDynamicField) {
+                this.enableDynamicField = enableDynamicField;
+                return this;
+            }
+
+            public Builder functionList(List<CreateCollectionReq.Function> functionList) {
+                this.functionList = functionList;
+                return this;
+            }
+
+            public CollectionSchema build() {
+                return new CollectionSchema(this);
+            }
+        }
     }
 
-    @Data
-    @SuperBuilder
     public static class FieldSchema {
         private String name;
-        @Builder.Default
         private String description = "";
         private DataType dataType;
-        @Builder.Default
         private Integer maxLength = 65535;
         private Integer dimension;
-        @Builder.Default
         private Boolean isPrimaryKey = Boolean.FALSE;
-        @Builder.Default
         private Boolean isPartitionKey = Boolean.FALSE;
-        @Builder.Default
         private Boolean isClusteringKey = Boolean.FALSE;
-        @Builder.Default
         private Boolean autoID = Boolean.FALSE;
         private DataType elementType;
         private Integer maxCapacity;
-        @Builder.Default
         private Boolean isNullable = Boolean.FALSE; // only for scalar fields(not include Array fields)
-        @Builder.Default
         private Object defaultValue = null; // only for scalar fields
         private Boolean enableAnalyzer; // for BM25 tokenizer
         private Map<String, Object> analyzerParams; // for BM25 tokenizer
@@ -189,31 +582,528 @@ public class CreateCollectionReq {
         // 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;
         private Map<String, Object> multiAnalyzerParams; // for multi‑language analyzers
+
+        private FieldSchema(Builder builder) {
+            this.name = builder.name;
+            this.description = builder.description;
+            this.dataType = builder.dataType;
+            this.maxLength = builder.maxLength;
+            this.dimension = builder.dimension;
+            this.isPrimaryKey = builder.isPrimaryKey;
+            this.isPartitionKey = builder.isPartitionKey;
+            this.isClusteringKey = builder.isClusteringKey;
+            this.autoID = builder.autoID;
+            this.elementType = builder.elementType;
+            this.maxCapacity = builder.maxCapacity;
+            this.isNullable = builder.isNullable;
+            this.defaultValue = builder.defaultValue;
+            this.enableAnalyzer = builder.enableAnalyzer;
+            this.analyzerParams = builder.analyzerParams;
+            this.enableMatch = builder.enableMatch;
+            this.typeParams = builder.typeParams;
+            this.multiAnalyzerParams = builder.multiAnalyzerParams;
+        }
+
+        // Getters and Setters
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getDescription() {
+            return description;
+        }
+
+        public void setDescription(String description) {
+            this.description = description;
+        }
+
+        public DataType getDataType() {
+            return dataType;
+        }
+
+        public void setDataType(DataType dataType) {
+            this.dataType = dataType;
+        }
+
+        public Integer getMaxLength() {
+            return maxLength;
+        }
+
+        public void setMaxLength(Integer maxLength) {
+            this.maxLength = maxLength;
+        }
+
+        public Integer getDimension() {
+            return dimension;
+        }
+
+        public void setDimension(Integer dimension) {
+            this.dimension = dimension;
+        }
+
+        public Boolean getIsPrimaryKey() {
+            return isPrimaryKey;
+        }
+
+        public void setIsPrimaryKey(Boolean isPrimaryKey) {
+            this.isPrimaryKey = isPrimaryKey;
+        }
+
+        public Boolean getIsPartitionKey() {
+            return isPartitionKey;
+        }
+
+        public void setIsPartitionKey(Boolean isPartitionKey) {
+            this.isPartitionKey = isPartitionKey;
+        }
+
+        public Boolean getIsClusteringKey() {
+            return isClusteringKey;
+        }
+
+        public void setIsClusteringKey(Boolean isClusteringKey) {
+            this.isClusteringKey = isClusteringKey;
+        }
+
+        public Boolean getAutoID() {
+            return autoID;
+        }
+
+        public void setAutoID(Boolean autoID) {
+            this.autoID = autoID;
+        }
+
+        public DataType getElementType() {
+            return elementType;
+        }
+
+        public void setElementType(DataType elementType) {
+            this.elementType = elementType;
+        }
+
+        public Integer getMaxCapacity() {
+            return maxCapacity;
+        }
+
+        public void setMaxCapacity(Integer maxCapacity) {
+            this.maxCapacity = maxCapacity;
+        }
+
+        public Boolean getIsNullable() {
+            return isNullable;
+        }
+
+        public void setIsNullable(Boolean isNullable) {
+            this.isNullable = isNullable;
+        }
+
+        public Object getDefaultValue() {
+            return defaultValue;
+        }
+
+        public void setDefaultValue(Object defaultValue) {
+            this.defaultValue = defaultValue;
+        }
+
+        public Boolean getEnableAnalyzer() {
+            return enableAnalyzer;
+        }
+
+        public void setEnableAnalyzer(Boolean enableAnalyzer) {
+            this.enableAnalyzer = enableAnalyzer;
+        }
+
+        public Map<String, Object> getAnalyzerParams() {
+            return analyzerParams;
+        }
+
+        public void setAnalyzerParams(Map<String, Object> analyzerParams) {
+            this.analyzerParams = analyzerParams;
+        }
+
+        public Boolean getEnableMatch() {
+            return enableMatch;
+        }
+
+        public void setEnableMatch(Boolean enableMatch) {
+            this.enableMatch = enableMatch;
+        }
+
+        public Map<String, String> getTypeParams() {
+            return typeParams;
+        }
+
+        public void setTypeParams(Map<String, String> typeParams) {
+            this.typeParams = typeParams;
+        }
+
+        public Map<String, Object> getMultiAnalyzerParams() {
+            return multiAnalyzerParams;
+        }
+
+        public void setMultiAnalyzerParams(Map<String, Object> multiAnalyzerParams) {
+            this.multiAnalyzerParams = multiAnalyzerParams;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) return true;
+            if (obj == null || getClass() != obj.getClass()) return false;
+            FieldSchema that = (FieldSchema) obj;
+            return new EqualsBuilder()
+                    .append(name, that.name)
+                    .append(description, that.description)
+                    .append(dataType, that.dataType)
+                    .append(maxLength, that.maxLength)
+                    .append(dimension, that.dimension)
+                    .append(isPrimaryKey, that.isPrimaryKey)
+                    .append(isPartitionKey, that.isPartitionKey)
+                    .append(isClusteringKey, that.isClusteringKey)
+                    .append(autoID, that.autoID)
+                    .append(elementType, that.elementType)
+                    .append(maxCapacity, that.maxCapacity)
+                    .append(isNullable, that.isNullable)
+                    .append(defaultValue, that.defaultValue)
+                    .append(enableAnalyzer, that.enableAnalyzer)
+                    .append(analyzerParams, that.analyzerParams)
+                    .append(enableMatch, that.enableMatch)
+                    .append(typeParams, that.typeParams)
+                    .append(multiAnalyzerParams, that.multiAnalyzerParams)
+                    .isEquals();
+        }
+
+        @Override
+        public int hashCode() {
+            return new HashCodeBuilder(17, 37)
+                    .append(name)
+                    .append(description)
+                    .append(dataType)
+                    .append(maxLength)
+                    .append(dimension)
+                    .append(isPrimaryKey)
+                    .append(isPartitionKey)
+                    .append(isClusteringKey)
+                    .append(autoID)
+                    .append(elementType)
+                    .append(maxCapacity)
+                    .append(isNullable)
+                    .append(defaultValue)
+                    .append(enableAnalyzer)
+                    .append(analyzerParams)
+                    .append(enableMatch)
+                    .append(typeParams)
+                    .append(multiAnalyzerParams)
+                    .toHashCode();
+        }
+
+        @Override
+        public String toString() {
+            return "FieldSchema{" +
+                    "name='" + name + '\'' +
+                    ", description='" + description + '\'' +
+                    ", dataType=" + dataType +
+                    ", maxLength=" + maxLength +
+                    ", dimension=" + dimension +
+                    ", isPrimaryKey=" + isPrimaryKey +
+                    ", isPartitionKey=" + isPartitionKey +
+                    ", isClusteringKey=" + isClusteringKey +
+                    ", autoID=" + autoID +
+                    ", elementType=" + elementType +
+                    ", maxCapacity=" + maxCapacity +
+                    ", isNullable=" + isNullable +
+                    ", defaultValue=" + defaultValue +
+                    ", enableAnalyzer=" + enableAnalyzer +
+                    ", analyzerParams=" + analyzerParams +
+                    ", enableMatch=" + enableMatch +
+                    ", typeParams=" + typeParams +
+                    ", multiAnalyzerParams=" + multiAnalyzerParams +
+                    '}';
+        }
+
+        public static Builder builder() {
+            return new Builder();
+        }
+
+        public static class Builder {
+            private String name;
+            private String description = "";
+            private DataType dataType;
+            private Integer maxLength = 65535;
+            private Integer dimension;
+            private Boolean isPrimaryKey = Boolean.FALSE;
+            private Boolean isPartitionKey = Boolean.FALSE;
+            private Boolean isClusteringKey = Boolean.FALSE;
+            private Boolean autoID = Boolean.FALSE;
+            private DataType elementType;
+            private Integer maxCapacity;
+            private Boolean isNullable = Boolean.FALSE;
+            private Object defaultValue = null;
+            private Boolean enableAnalyzer;
+            private Map<String, Object> analyzerParams;
+            private Boolean enableMatch;
+            private Map<String, String> typeParams;
+            private Map<String, Object> multiAnalyzerParams;
+
+            private Builder() {}
+
+            public Builder name(String name) {
+                this.name = name;
+                return this;
+            }
+
+            public Builder description(String description) {
+                this.description = description;
+                return this;
+            }
+
+            public Builder dataType(DataType dataType) {
+                this.dataType = dataType;
+                return this;
+            }
+
+            public Builder maxLength(Integer maxLength) {
+                this.maxLength = maxLength;
+                return this;
+            }
+
+            public Builder dimension(Integer dimension) {
+                this.dimension = dimension;
+                return this;
+            }
+
+            public Builder isPrimaryKey(Boolean isPrimaryKey) {
+                this.isPrimaryKey = isPrimaryKey;
+                return this;
+            }
+
+            public Builder isPartitionKey(Boolean isPartitionKey) {
+                this.isPartitionKey = isPartitionKey;
+                return this;
+            }
+
+            public Builder isClusteringKey(Boolean isClusteringKey) {
+                this.isClusteringKey = isClusteringKey;
+                return this;
+            }
+
+            public Builder autoID(Boolean autoID) {
+                this.autoID = autoID;
+                return this;
+            }
+
+            public Builder elementType(DataType elementType) {
+                this.elementType = elementType;
+                return this;
+            }
+
+            public Builder maxCapacity(Integer maxCapacity) {
+                this.maxCapacity = maxCapacity;
+                return this;
+            }
+
+            public Builder isNullable(Boolean isNullable) {
+                this.isNullable = isNullable;
+                return this;
+            }
+
+            public Builder defaultValue(Object defaultValue) {
+                this.defaultValue = defaultValue;
+                return this;
+            }
+
+            public Builder enableAnalyzer(Boolean enableAnalyzer) {
+                this.enableAnalyzer = enableAnalyzer;
+                return this;
+            }
+
+            public Builder analyzerParams(Map<String, Object> analyzerParams) {
+                this.analyzerParams = analyzerParams;
+                return this;
+            }
+
+            public Builder enableMatch(Boolean enableMatch) {
+                this.enableMatch = enableMatch;
+                return this;
+            }
+
+            public Builder typeParams(Map<String, String> typeParams) {
+                this.typeParams = typeParams;
+                return this;
+            }
+
+            public Builder multiAnalyzerParams(Map<String, Object> multiAnalyzerParams) {
+                this.multiAnalyzerParams = multiAnalyzerParams;
+                return this;
+            }
+
+            public FieldSchema build() {
+                return new FieldSchema(this);
+            }
+        }
     }
 
-    @Data
-    @SuperBuilder
     public static class Function {
         private String name;
-        @Builder.Default
         private String description = "";
-        @Builder.Default
         private FunctionType functionType = FunctionType.UNKNOWN;
-        @Builder.Default
         private List<String> inputFieldNames = new ArrayList<>();
-        @Builder.Default
         private List<String> outputFieldNames = new ArrayList<>();
-        @Builder.Default
         private Map<String, String> params = new HashMap<>();
 
-        public static abstract class FunctionBuilder<C extends Function, B extends Function.FunctionBuilder<C, B>> {
-            public B param(String key, String value) {
-                if(null == this.params$value ){
-                    this.params$value = new HashMap<>();
+        protected Function(FunctionBuilder builder) {
+            this.name = builder.name;
+            this.description = builder.description;
+            this.functionType = builder.functionType;
+            this.inputFieldNames = builder.inputFieldNames;
+            this.outputFieldNames = builder.outputFieldNames;
+            this.params = builder.params;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getDescription() {
+            return description;
+        }
+
+        public void setDescription(String description) {
+            this.description = description;
+        }
+
+        public FunctionType getFunctionType() {
+            return functionType;
+        }
+
+        public void setFunctionType(FunctionType functionType) {
+            this.functionType = functionType;
+        }
+
+        public List<String> getInputFieldNames() {
+            return inputFieldNames;
+        }
+
+        public void setInputFieldNames(List<String> inputFieldNames) {
+            this.inputFieldNames = inputFieldNames;
+        }
+
+        public List<String> getOutputFieldNames() {
+            return outputFieldNames;
+        }
+
+        public void setOutputFieldNames(List<String> outputFieldNames) {
+            this.outputFieldNames = outputFieldNames;
+        }
+
+        public Map<String, String> getParams() {
+            return params;
+        }
+
+        public void setParams(Map<String, String> params) {
+            this.params = params;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) return true;
+            if (obj == null || getClass() != obj.getClass()) return false;
+            Function function = (Function) obj;
+            return new EqualsBuilder()
+                    .append(name, function.name)
+                    .append(description, function.description)
+                    .append(functionType, function.functionType)
+                    .append(inputFieldNames, function.inputFieldNames)
+                    .append(outputFieldNames, function.outputFieldNames)
+                    .append(params, function.params)
+                    .isEquals();
+        }
+
+        @Override
+        public int hashCode() {
+            return new HashCodeBuilder(17, 37)
+                    .append(name)
+                    .append(description)
+                    .append(functionType)
+                    .append(inputFieldNames)
+                    .append(outputFieldNames)
+                    .append(params)
+                    .toHashCode();
+        }
+
+        @Override
+        public String toString() {
+            return "Function{" +
+                    "name='" + name + '\'' +
+                    ", description='" + description + '\'' +
+                    ", functionType=" + functionType +
+                    ", inputFieldNames=" + inputFieldNames +
+                    ", outputFieldNames=" + outputFieldNames +
+                    ", params=" + params +
+                    '}';
+        }
+
+        public static FunctionBuilder builder() {
+            return new FunctionBuilder();
+        }
+
+        public static class FunctionBuilder {
+            private String name;
+            private String description = "";
+            private FunctionType functionType = FunctionType.UNKNOWN;
+            private List<String> inputFieldNames = new ArrayList<>();
+            private List<String> outputFieldNames = new ArrayList<>();
+            private Map<String, String> params = new HashMap<>();
+
+            protected FunctionBuilder() {}
+
+            public FunctionBuilder name(String name) {
+                this.name = name;
+                return this;
+            }
+
+            public FunctionBuilder description(String description) {
+                this.description = description;
+                return this;
+            }
+
+            public FunctionBuilder functionType(FunctionType functionType) {
+                this.functionType = functionType;
+                return this;
+            }
+
+            public FunctionBuilder inputFieldNames(List<String> inputFieldNames) {
+                this.inputFieldNames = inputFieldNames;
+                return this;
+            }
+
+            public FunctionBuilder outputFieldNames(List<String> outputFieldNames) {
+                this.outputFieldNames = outputFieldNames;
+                return this;
+            }
+
+            public FunctionBuilder params(Map<String, String> params) {
+                this.params = params;
+                return this;
+            }
+
+            public FunctionBuilder param(String key, String value) {
+                if (this.params == null) {
+                    this.params = new HashMap<>();
                 }
-                this.params$value.put(key, value);
-                this.params$set = true;
-                return self();
+                this.params.put(key, value);
+                return this;
+            }
+
+            public Function build() {
+                return new Function(this);
             }
         }
     }

+ 75 - 4
sdk-core/src/main/java/io/milvus/v2/service/collection/request/DescribeCollectionReq.java

@@ -19,12 +19,83 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
-@Data
-@SuperBuilder
 public class DescribeCollectionReq {
     private String databaseName;
     private String collectionName;
+
+    private DescribeCollectionReq(Builder builder) {
+        this.databaseName = builder.databaseName;
+        this.collectionName = builder.collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DescribeCollectionReq that = (DescribeCollectionReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(collectionName, that.collectionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(databaseName)
+                .append(collectionName)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "DescribeCollectionReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private String collectionName;
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public DescribeCollectionReq build() {
+            return new DescribeCollectionReq(this);
+        }
+    }
 }

+ 75 - 4
sdk-core/src/main/java/io/milvus/v2/service/collection/request/DescribeReplicasReq.java

@@ -1,11 +1,82 @@
 package io.milvus.v2.service.collection.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
-@Data
-@SuperBuilder
 public class DescribeReplicasReq {
     private String collectionName;
     private String databaseName;
+
+    private DescribeReplicasReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.databaseName = builder.databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DescribeReplicasReq that = (DescribeReplicasReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(databaseName, that.databaseName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .append(databaseName)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "DescribeReplicasReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String databaseName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public DescribeReplicasReq build() {
+            return new DescribeReplicasReq(this);
+        }
+    }
 }

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

@@ -19,19 +19,124 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class DropCollectionFieldPropertiesReq {
     private String collectionName;
     private String databaseName;
     private String fieldName;
-    @Builder.Default
     private List<String> propertyKeys = new ArrayList<>();
+
+    private DropCollectionFieldPropertiesReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.databaseName = builder.databaseName;
+        this.fieldName = builder.fieldName;
+        this.propertyKeys = builder.propertyKeys;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public List<String> getPropertyKeys() {
+        return propertyKeys;
+    }
+
+    public void setPropertyKeys(List<String> propertyKeys) {
+        this.propertyKeys = propertyKeys;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DropCollectionFieldPropertiesReq that = (DropCollectionFieldPropertiesReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(databaseName, that.databaseName)
+                .append(fieldName, that.fieldName)
+                .append(propertyKeys, that.propertyKeys)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .append(databaseName)
+                .append(fieldName)
+                .append(propertyKeys)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "DropCollectionFieldPropertiesReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", fieldName='" + fieldName + '\'' +
+                ", propertyKeys=" + propertyKeys +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String databaseName;
+        private String fieldName;
+        private List<String> propertyKeys = new ArrayList<>();
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder fieldName(String fieldName) {
+            this.fieldName = fieldName;
+            return this;
+        }
+
+        public Builder propertyKeys(List<String> propertyKeys) {
+            this.propertyKeys = propertyKeys;
+            return this;
+        }
+
+        public DropCollectionFieldPropertiesReq build() {
+            return new DropCollectionFieldPropertiesReq(this);
+        }
+    }
 }

+ 93 - 7
sdk-core/src/main/java/io/milvus/v2/service/collection/request/DropCollectionPropertiesReq.java

@@ -19,19 +19,105 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class DropCollectionPropertiesReq {
     private String collectionName;
     private String databaseName;
-
-    @Builder.Default
     private List<String> propertyKeys = new ArrayList<>();
+
+    private DropCollectionPropertiesReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.databaseName = builder.databaseName;
+        this.propertyKeys = builder.propertyKeys;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public List<String> getPropertyKeys() {
+        return propertyKeys;
+    }
+
+    public void setPropertyKeys(List<String> propertyKeys) {
+        this.propertyKeys = propertyKeys;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DropCollectionPropertiesReq that = (DropCollectionPropertiesReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(databaseName, that.databaseName)
+                .append(propertyKeys, that.propertyKeys)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .append(databaseName)
+                .append(propertyKeys)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "DropCollectionPropertiesReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", propertyKeys=" + propertyKeys +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String databaseName;
+        private List<String> propertyKeys = new ArrayList<>();
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder propertyKeys(List<String> propertyKeys) {
+            this.propertyKeys = propertyKeys;
+            return this;
+        }
+
+        public DropCollectionPropertiesReq build() {
+            return new DropCollectionPropertiesReq(this);
+        }
+    }
 }

+ 116 - 9
sdk-core/src/main/java/io/milvus/v2/service/collection/request/DropCollectionReq.java

@@ -19,18 +19,125 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+
+import java.util.Objects;
 
-@Data
-@SuperBuilder
 public class DropCollectionReq {
     private String databaseName;
     private String collectionName;
     @Deprecated
-    @Builder.Default
-    private Boolean async = Boolean.TRUE;
-    @Builder.Default
-    private Long timeout = 60000L;
+    private Boolean async;
+    private Long timeout;
+
+    private DropCollectionReq(Builder builder) {
+        this.databaseName = builder.databaseName;
+        this.collectionName = builder.collectionName;
+        this.async = builder.async != null ? builder.async : Boolean.TRUE;
+        this.timeout = builder.timeout != null ? builder.timeout : 60000L;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getters
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    @Deprecated
+    public Boolean getAsync() {
+        return async;
+    }
+
+    public Long getTimeout() {
+        return timeout;
+    }
+
+    // Setters
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    @Deprecated
+    public void setAsync(Boolean async) {
+        this.async = async;
+    }
+
+    public void setTimeout(Long timeout) {
+        this.timeout = timeout;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        
+        DropCollectionReq that = (DropCollectionReq) obj;
+        
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(collectionName, that.collectionName)
+                .append(async, that.async)
+                .append(timeout, that.timeout)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(databaseName, collectionName, async, timeout);
+    }
+
+    @Override
+    public String toString() {
+        return "DropCollectionReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", async=" + async +
+                ", timeout=" + timeout +
+                '}';
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private String collectionName;
+        private Boolean async;
+        private Long timeout;
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        @Deprecated
+        public Builder async(Boolean async) {
+            this.async = async;
+            return this;
+        }
+
+        public Builder timeout(Long timeout) {
+            this.timeout = timeout;
+            return this;
+        }
+
+        public DropCollectionReq build() {
+            return new DropCollectionReq(this);
+        }
+    }
 }

+ 57 - 4
sdk-core/src/main/java/io/milvus/v2/service/collection/request/GetCollectionStatsReq.java

@@ -19,11 +19,64 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
-@Data
-@SuperBuilder
 public class GetCollectionStatsReq {
     private String collectionName;
+
+    private GetCollectionStatsReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        GetCollectionStatsReq that = (GetCollectionStatsReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "GetCollectionStatsReq{" +
+                "collectionName='" + collectionName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public GetCollectionStatsReq build() {
+            return new GetCollectionStatsReq(this);
+        }
+    }
 }

+ 75 - 4
sdk-core/src/main/java/io/milvus/v2/service/collection/request/GetLoadStateReq.java

@@ -19,12 +19,83 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
-@Data
-@SuperBuilder
 public class GetLoadStateReq {
     private String collectionName;
     private String partitionName;
+
+    private GetLoadStateReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.partitionName = builder.partitionName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getPartitionName() {
+        return partitionName;
+    }
+
+    public void setPartitionName(String partitionName) {
+        this.partitionName = partitionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        GetLoadStateReq that = (GetLoadStateReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(partitionName, that.partitionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .append(partitionName)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "GetLoadStateReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", partitionName='" + partitionName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String partitionName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder partitionName(String partitionName) {
+            this.partitionName = partitionName;
+            return this;
+        }
+
+        public GetLoadStateReq build() {
+            return new GetLoadStateReq(this);
+        }
+    }
 }

+ 57 - 4
sdk-core/src/main/java/io/milvus/v2/service/collection/request/HasCollectionReq.java

@@ -19,11 +19,64 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
-@Data
-@SuperBuilder
 public class HasCollectionReq {
     private String collectionName;
+
+    private HasCollectionReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        HasCollectionReq that = (HasCollectionReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "HasCollectionReq{" +
+                "collectionName='" + collectionName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public HasCollectionReq build() {
+            return new HasCollectionReq(this);
+        }
+    }
 }

+ 221 - 26
sdk-core/src/main/java/io/milvus/v2/service/collection/request/LoadCollectionReq.java

@@ -19,51 +19,246 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class LoadCollectionReq {
     private String databaseName;
     private String collectionName;
-    @Builder.Default
     private Integer numReplicas = 1;
     @Deprecated
-    @Builder.Default
     private Boolean async = Boolean.FALSE;
-    @Builder.Default
     private Boolean sync = Boolean.TRUE; // wait the collection to be fully loaded. "async" is deprecated, use "sync" instead
-    @Builder.Default
     private Long timeout = 60000L; // timeout value for waiting the collection to be fully loaded
-    @Builder.Default
     private Boolean refresh = Boolean.FALSE;
-    @Builder.Default
     private List<String> loadFields = new ArrayList<>();
-    @Builder.Default
     private Boolean skipLoadDynamicField = Boolean.FALSE;
-    @Builder.Default
     private List<String> resourceGroups = new ArrayList<>();
 
-    public static abstract class LoadCollectionReqBuilder<C extends LoadCollectionReq, B extends LoadCollectionReq.LoadCollectionReqBuilder<C, B>> {
-        public B async(Boolean async) {
-            this.async$value = async;
-            this.async$set = true;
-            this.sync$value = !async;
-            this.sync$set = true;
-            return self();
+    private LoadCollectionReq(Builder builder) {
+        this.databaseName = builder.databaseName;
+        this.collectionName = builder.collectionName;
+        this.numReplicas = builder.numReplicas;
+        this.async = builder.async;
+        this.sync = builder.sync;
+        this.timeout = builder.timeout;
+        this.refresh = builder.refresh;
+        this.loadFields = builder.loadFields;
+        this.skipLoadDynamicField = builder.skipLoadDynamicField;
+        this.resourceGroups = builder.resourceGroups;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public Integer getNumReplicas() {
+        return numReplicas;
+    }
+
+    public void setNumReplicas(Integer numReplicas) {
+        this.numReplicas = numReplicas;
+    }
+
+    @Deprecated
+    public Boolean getAsync() {
+        return async;
+    }
+
+    @Deprecated
+    public void setAsync(Boolean async) {
+        this.async = async;
+        this.sync = !async;
+    }
+
+    public Boolean getSync() {
+        return sync;
+    }
+
+    public void setSync(Boolean sync) {
+        this.sync = sync;
+        this.async = !sync;
+    }
+
+    public Long getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(Long timeout) {
+        this.timeout = timeout;
+    }
+
+    public Boolean getRefresh() {
+        return refresh;
+    }
+
+    public void setRefresh(Boolean refresh) {
+        this.refresh = refresh;
+    }
+
+    public List<String> getLoadFields() {
+        return loadFields;
+    }
+
+    public void setLoadFields(List<String> loadFields) {
+        this.loadFields = loadFields;
+    }
+
+    public Boolean getSkipLoadDynamicField() {
+        return skipLoadDynamicField;
+    }
+
+    public void setSkipLoadDynamicField(Boolean skipLoadDynamicField) {
+        this.skipLoadDynamicField = skipLoadDynamicField;
+    }
+
+    public List<String> getResourceGroups() {
+        return resourceGroups;
+    }
+
+    public void setResourceGroups(List<String> resourceGroups) {
+        this.resourceGroups = resourceGroups;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        LoadCollectionReq that = (LoadCollectionReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(collectionName, that.collectionName)
+                .append(numReplicas, that.numReplicas)
+                .append(async, that.async)
+                .append(sync, that.sync)
+                .append(timeout, that.timeout)
+                .append(refresh, that.refresh)
+                .append(loadFields, that.loadFields)
+                .append(skipLoadDynamicField, that.skipLoadDynamicField)
+                .append(resourceGroups, that.resourceGroups)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(databaseName)
+                .append(collectionName)
+                .append(numReplicas)
+                .append(async)
+                .append(sync)
+                .append(timeout)
+                .append(refresh)
+                .append(loadFields)
+                .append(skipLoadDynamicField)
+                .append(resourceGroups)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "LoadCollectionReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", numReplicas=" + numReplicas +
+                ", async=" + async +
+                ", sync=" + sync +
+                ", timeout=" + timeout +
+                ", refresh=" + refresh +
+                ", loadFields=" + loadFields +
+                ", skipLoadDynamicField=" + skipLoadDynamicField +
+                ", resourceGroups=" + resourceGroups +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private String collectionName;
+        private Integer numReplicas = 1;
+        private Boolean async = Boolean.FALSE;
+        private Boolean sync = Boolean.TRUE;
+        private Long timeout = 60000L;
+        private Boolean refresh = Boolean.FALSE;
+        private List<String> loadFields = new ArrayList<>();
+        private Boolean skipLoadDynamicField = Boolean.FALSE;
+        private List<String> resourceGroups = new ArrayList<>();
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder numReplicas(Integer numReplicas) {
+            this.numReplicas = numReplicas;
+            return this;
+        }
+
+        @Deprecated
+        public Builder async(Boolean async) {
+            this.async = async;
+            this.sync = !async;
+            return this;
+        }
+
+        public Builder sync(Boolean sync) {
+            this.sync = sync;
+            this.async = !sync;
+            return this;
+        }
+
+        public Builder timeout(Long timeout) {
+            this.timeout = timeout;
+            return this;
+        }
+
+        public Builder refresh(Boolean refresh) {
+            this.refresh = refresh;
+            return this;
+        }
+
+        public Builder loadFields(List<String> loadFields) {
+            this.loadFields = loadFields;
+            return this;
+        }
+
+        public Builder skipLoadDynamicField(Boolean skipLoadDynamicField) {
+            this.skipLoadDynamicField = skipLoadDynamicField;
+            return this;
+        }
+
+        public Builder resourceGroups(List<String> resourceGroups) {
+            this.resourceGroups = resourceGroups;
+            return this;
         }
 
-        public B sync(Boolean sync) {
-            this.sync$value = sync;
-            this.sync$set = true;
-            this.async$value = !sync;
-            this.async$set = true;
-            return self();
+        public LoadCollectionReq build() {
+            return new LoadCollectionReq(this);
         }
     }
 }

+ 128 - 21
sdk-core/src/main/java/io/milvus/v2/service/collection/request/RefreshLoadReq.java

@@ -19,37 +19,144 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
-@Data
-@SuperBuilder
 public class RefreshLoadReq {
     private String databaseName;
     private String collectionName;
-    @Builder.Default
     private Boolean async = Boolean.TRUE;
-    @Builder.Default
     private Boolean sync = Boolean.TRUE; // wait the collection to be fully loaded. "async" is deprecated, use "sync" instead
-    @Builder.Default
     private Long timeout = 60000L; // timeout value for waiting the collection to be fully loaded
 
-    public static abstract class RefreshLoadReqBuilder<C extends RefreshLoadReq, B extends RefreshLoadReq.RefreshLoadReqBuilder<C, B>> {
-        public B async(Boolean async) {
-            this.async$value = async;
-            this.async$set = true;
-            this.sync$value = !async;
-            this.sync$set = true;
-            return self();
+    private RefreshLoadReq(Builder builder) {
+        this.databaseName = builder.databaseName;
+        this.collectionName = builder.collectionName;
+        this.async = builder.async;
+        this.sync = builder.sync;
+        this.timeout = builder.timeout;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public Boolean getAsync() {
+        return async;
+    }
+
+    public void setAsync(Boolean async) {
+        this.async = async;
+        this.sync = !async;
+    }
+
+    public Boolean getSync() {
+        return sync;
+    }
+
+    public void setSync(Boolean sync) {
+        this.sync = sync;
+        this.async = !sync;
+    }
+
+    public Long getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(Long timeout) {
+        this.timeout = timeout;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        RefreshLoadReq that = (RefreshLoadReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(collectionName, that.collectionName)
+                .append(async, that.async)
+                .append(sync, that.sync)
+                .append(timeout, that.timeout)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(databaseName)
+                .append(collectionName)
+                .append(async)
+                .append(sync)
+                .append(timeout)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "RefreshLoadReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", async=" + async +
+                ", sync=" + sync +
+                ", timeout=" + timeout +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private String collectionName;
+        private Boolean async = Boolean.TRUE;
+        private Boolean sync = Boolean.TRUE;
+        private Long timeout = 60000L;
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder async(Boolean async) {
+            this.async = async;
+            this.sync = !async;
+            return this;
+        }
+
+        public Builder sync(Boolean sync) {
+            this.sync = sync;
+            this.async = !sync;
+            return this;
+        }
+
+        public Builder timeout(Long timeout) {
+            this.timeout = timeout;
+            return this;
         }
 
-        public B sync(Boolean sync) {
-            this.sync$value = sync;
-            this.sync$set = true;
-            this.async$value = !sync;
-            this.async$set = true;
-            return self();
+        public RefreshLoadReq build() {
+            return new RefreshLoadReq(this);
         }
     }
 }

+ 96 - 7
sdk-core/src/main/java/io/milvus/v2/service/collection/request/ReleaseCollectionReq.java

@@ -19,17 +19,106 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
-@Data
-@SuperBuilder
 public class ReleaseCollectionReq {
     private String collectionName;
     @Deprecated
-    @Builder.Default
     private Boolean async = Boolean.TRUE;
-    @Builder.Default
     private Long timeout = 60000L;
+
+    private ReleaseCollectionReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.async = builder.async;
+        this.timeout = builder.timeout;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    @Deprecated
+    public Boolean getAsync() {
+        return async;
+    }
+
+    @Deprecated
+    public void setAsync(Boolean async) {
+        this.async = async;
+    }
+
+    public Long getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(Long timeout) {
+        this.timeout = timeout;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        ReleaseCollectionReq that = (ReleaseCollectionReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(async, that.async)
+                .append(timeout, that.timeout)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .append(async)
+                .append(timeout)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "ReleaseCollectionReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", async=" + async +
+                ", timeout=" + timeout +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private Boolean async = Boolean.TRUE;
+        private Long timeout = 60000L;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        @Deprecated
+        public Builder async(Boolean async) {
+            this.async = async;
+            return this;
+        }
+
+        public Builder timeout(Long timeout) {
+            this.timeout = timeout;
+            return this;
+        }
+
+        public ReleaseCollectionReq build() {
+            return new ReleaseCollectionReq(this);
+        }
+    }
 }

+ 75 - 4
sdk-core/src/main/java/io/milvus/v2/service/collection/request/RenameCollectionReq.java

@@ -19,12 +19,83 @@
 
 package io.milvus.v2.service.collection.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 
-@Data
-@SuperBuilder
 public class RenameCollectionReq {
     private String collectionName;
     private String newCollectionName;
+
+    private RenameCollectionReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.newCollectionName = builder.newCollectionName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getNewCollectionName() {
+        return newCollectionName;
+    }
+
+    public void setNewCollectionName(String newCollectionName) {
+        this.newCollectionName = newCollectionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        RenameCollectionReq that = (RenameCollectionReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(newCollectionName, that.newCollectionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(collectionName)
+                .append(newCollectionName)
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "RenameCollectionReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", newCollectionName='" + newCollectionName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String newCollectionName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder newCollectionName(String newCollectionName) {
+            this.newCollectionName = newCollectionName;
+            return this;
+        }
+
+        public RenameCollectionReq build() {
+            return new RenameCollectionReq(this);
+        }
+    }
 }

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

@@ -21,36 +21,338 @@ package io.milvus.v2.service.collection.response;
 
 import io.milvus.v2.common.ConsistencyLevel;
 import io.milvus.v2.service.collection.request.CreateCollectionReq;
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
-@Data
-@SuperBuilder
 public class DescribeCollectionResp {
     private String collectionName;
     private Long collectionID;
     private String databaseName;
     private String description;
     private Long numOfPartitions;
-    @Builder.Default
-    private List<String> fieldNames = new ArrayList<>();
-    @Builder.Default
-    private List<String> vectorFieldNames = new ArrayList<>();
+    private List<String> fieldNames;
+    private List<String> vectorFieldNames;
     private String primaryFieldName;
     private Boolean enableDynamicField;
     private Boolean autoID;
-
     private CreateCollectionReq.CollectionSchema collectionSchema;
     private Long createTime;
     private Long createUtcTime;
     private ConsistencyLevel consistencyLevel;
     private Integer shardsNum;
-    @Builder.Default
-    private final Map<String, String> properties = new HashMap<>();
+    private final Map<String, String> properties;
+
+    private DescribeCollectionResp(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.collectionID = builder.collectionID;
+        this.databaseName = builder.databaseName;
+        this.description = builder.description;
+        this.numOfPartitions = builder.numOfPartitions;
+        this.fieldNames = builder.fieldNames != null ? builder.fieldNames : new ArrayList<>();
+        this.vectorFieldNames = builder.vectorFieldNames != null ? builder.vectorFieldNames : new ArrayList<>();
+        this.primaryFieldName = builder.primaryFieldName;
+        this.enableDynamicField = builder.enableDynamicField;
+        this.autoID = builder.autoID;
+        this.collectionSchema = builder.collectionSchema;
+        this.createTime = builder.createTime;
+        this.createUtcTime = builder.createUtcTime;
+        this.consistencyLevel = builder.consistencyLevel;
+        this.shardsNum = builder.shardsNum;
+        this.properties = builder.properties != null ? builder.properties : new HashMap<>();
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getters
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public Long getCollectionID() {
+        return collectionID;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public Long getNumOfPartitions() {
+        return numOfPartitions;
+    }
+
+    public List<String> getFieldNames() {
+        return fieldNames;
+    }
+
+    public List<String> getVectorFieldNames() {
+        return vectorFieldNames;
+    }
+
+    public String getPrimaryFieldName() {
+        return primaryFieldName;
+    }
+
+    public Boolean getEnableDynamicField() {
+        return enableDynamicField;
+    }
+
+    public Boolean getAutoID() {
+        return autoID;
+    }
+
+    public CreateCollectionReq.CollectionSchema getCollectionSchema() {
+        return collectionSchema;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public Long getCreateUtcTime() {
+        return createUtcTime;
+    }
+
+    public ConsistencyLevel getConsistencyLevel() {
+        return consistencyLevel;
+    }
+
+    public Integer getShardsNum() {
+        return shardsNum;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    // Setters
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public void setCollectionID(Long collectionID) {
+        this.collectionID = collectionID;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public void setNumOfPartitions(Long numOfPartitions) {
+        this.numOfPartitions = numOfPartitions;
+    }
+
+    public void setFieldNames(List<String> fieldNames) {
+        this.fieldNames = fieldNames;
+    }
+
+    public void setVectorFieldNames(List<String> vectorFieldNames) {
+        this.vectorFieldNames = vectorFieldNames;
+    }
+
+    public void setPrimaryFieldName(String primaryFieldName) {
+        this.primaryFieldName = primaryFieldName;
+    }
+
+    public void setEnableDynamicField(Boolean enableDynamicField) {
+        this.enableDynamicField = enableDynamicField;
+    }
+
+    public void setAutoID(Boolean autoID) {
+        this.autoID = autoID;
+    }
+
+    public void setCollectionSchema(CreateCollectionReq.CollectionSchema collectionSchema) {
+        this.collectionSchema = collectionSchema;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public void setCreateUtcTime(Long createUtcTime) {
+        this.createUtcTime = createUtcTime;
+    }
+
+    public void setConsistencyLevel(ConsistencyLevel consistencyLevel) {
+        this.consistencyLevel = consistencyLevel;
+    }
+
+    public void setShardsNum(Integer shardsNum) {
+        this.shardsNum = shardsNum;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        
+        DescribeCollectionResp that = (DescribeCollectionResp) obj;
+        
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(collectionID, that.collectionID)
+                .append(databaseName, that.databaseName)
+                .append(description, that.description)
+                .append(numOfPartitions, that.numOfPartitions)
+                .append(fieldNames, that.fieldNames)
+                .append(vectorFieldNames, that.vectorFieldNames)
+                .append(primaryFieldName, that.primaryFieldName)
+                .append(enableDynamicField, that.enableDynamicField)
+                .append(autoID, that.autoID)
+                .append(collectionSchema, that.collectionSchema)
+                .append(createTime, that.createTime)
+                .append(createUtcTime, that.createUtcTime)
+                .append(consistencyLevel, that.consistencyLevel)
+                .append(shardsNum, that.shardsNum)
+                .append(properties, that.properties)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(collectionName, collectionID, databaseName, description, 
+                numOfPartitions, fieldNames, vectorFieldNames, primaryFieldName, 
+                enableDynamicField, autoID, collectionSchema, createTime, createUtcTime, 
+                consistencyLevel, shardsNum, properties);
+    }
+
+    @Override
+    public String toString() {
+        return "DescribeCollectionResp{" +
+                "collectionName='" + collectionName + '\'' +
+                ", collectionID=" + collectionID +
+                ", databaseName='" + databaseName + '\'' +
+                ", description='" + description + '\'' +
+                ", numOfPartitions=" + numOfPartitions +
+                ", fieldNames=" + fieldNames +
+                ", vectorFieldNames=" + vectorFieldNames +
+                ", primaryFieldName='" + primaryFieldName + '\'' +
+                ", enableDynamicField=" + enableDynamicField +
+                ", autoID=" + autoID +
+                ", collectionSchema=" + collectionSchema +
+                ", createTime=" + createTime +
+                ", createUtcTime=" + createUtcTime +
+                ", consistencyLevel=" + consistencyLevel +
+                ", shardsNum=" + shardsNum +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private Long collectionID;
+        private String databaseName;
+        private String description;
+        private Long numOfPartitions;
+        private List<String> fieldNames;
+        private List<String> vectorFieldNames;
+        private String primaryFieldName;
+        private Boolean enableDynamicField;
+        private Boolean autoID;
+        private CreateCollectionReq.CollectionSchema collectionSchema;
+        private Long createTime;
+        private Long createUtcTime;
+        private ConsistencyLevel consistencyLevel;
+        private Integer shardsNum;
+        private Map<String, String> properties;
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder collectionID(Long collectionID) {
+            this.collectionID = collectionID;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder description(String description) {
+            this.description = description;
+            return this;
+        }
+
+        public Builder numOfPartitions(Long numOfPartitions) {
+            this.numOfPartitions = numOfPartitions;
+            return this;
+        }
+
+        public Builder fieldNames(List<String> fieldNames) {
+            this.fieldNames = fieldNames;
+            return this;
+        }
+
+        public Builder vectorFieldNames(List<String> vectorFieldNames) {
+            this.vectorFieldNames = vectorFieldNames;
+            return this;
+        }
+
+        public Builder primaryFieldName(String primaryFieldName) {
+            this.primaryFieldName = primaryFieldName;
+            return this;
+        }
+
+        public Builder enableDynamicField(Boolean enableDynamicField) {
+            this.enableDynamicField = enableDynamicField;
+            return this;
+        }
+
+        public Builder autoID(Boolean autoID) {
+            this.autoID = autoID;
+            return this;
+        }
+
+        public Builder collectionSchema(CreateCollectionReq.CollectionSchema collectionSchema) {
+            this.collectionSchema = collectionSchema;
+            return this;
+        }
+
+        public Builder createTime(Long createTime) {
+            this.createTime = createTime;
+            return this;
+        }
+
+        public Builder createUtcTime(Long createUtcTime) {
+            this.createUtcTime = createUtcTime;
+            return this;
+        }
+
+        public Builder consistencyLevel(ConsistencyLevel consistencyLevel) {
+            this.consistencyLevel = consistencyLevel;
+            return this;
+        }
+
+        public Builder shardsNum(Integer shardsNum) {
+            this.shardsNum = shardsNum;
+            return this;
+        }
+
+        public Builder properties(Map<String, String> properties) {
+            this.properties = properties;
+            return this;
+        }
+
+        public DescribeCollectionResp build() {
+            return new DescribeCollectionResp(this);
+        }
+    }
 }

+ 58 - 7
sdk-core/src/main/java/io/milvus/v2/service/collection/response/DescribeReplicasResp.java

@@ -1,16 +1,67 @@
 package io.milvus.v2.service.collection.response;
 
 import io.milvus.v2.service.collection.ReplicaInfo;
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
-@Data
-@SuperBuilder
 public class DescribeReplicasResp {
-    @Builder.Default
-    private List<ReplicaInfo> replicas = new ArrayList<>();
+    private List<ReplicaInfo> replicas;
+
+    private DescribeReplicasResp(Builder builder) {
+        this.replicas = builder.replicas != null ? builder.replicas : new ArrayList<>();
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getter
+    public List<ReplicaInfo> getReplicas() {
+        return replicas;
+    }
+
+    // Setter
+    public void setReplicas(List<ReplicaInfo> replicas) {
+        this.replicas = replicas;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        
+        DescribeReplicasResp that = (DescribeReplicasResp) obj;
+        
+        return new EqualsBuilder()
+                .append(replicas, that.replicas)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(replicas);
+    }
+
+    @Override
+    public String toString() {
+        return "DescribeReplicasResp{" +
+                "replicas=" + replicas +
+                '}';
+    }
+
+    public static class Builder {
+        private List<ReplicaInfo> replicas;
+
+        public Builder replicas(List<ReplicaInfo> replicas) {
+            this.replicas = replicas;
+            return this;
+        }
+
+        public DescribeReplicasResp build() {
+            return new DescribeReplicasResp(this);
+        }
+    }
 }

+ 58 - 4
sdk-core/src/main/java/io/milvus/v2/service/collection/response/GetCollectionStatsResp.java

@@ -19,11 +19,65 @@
 
 package io.milvus.v2.service.collection.response;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+
+import java.util.Objects;
 
-@Data
-@SuperBuilder
 public class GetCollectionStatsResp {
     private Long numOfEntities;
+
+    private GetCollectionStatsResp(Builder builder) {
+        this.numOfEntities = builder.numOfEntities;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getter
+    public Long getNumOfEntities() {
+        return numOfEntities;
+    }
+
+    // Setter
+    public void setNumOfEntities(Long numOfEntities) {
+        this.numOfEntities = numOfEntities;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        
+        GetCollectionStatsResp that = (GetCollectionStatsResp) obj;
+        
+        return new EqualsBuilder()
+                .append(numOfEntities, that.numOfEntities)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(numOfEntities);
+    }
+
+    @Override
+    public String toString() {
+        return "GetCollectionStatsResp{" +
+                "numOfEntities=" + numOfEntities +
+                '}';
+    }
+
+    public static class Builder {
+        private Long numOfEntities;
+
+        public Builder numOfEntities(Long numOfEntities) {
+            this.numOfEntities = numOfEntities;
+            return this;
+        }
+
+        public GetCollectionStatsResp build() {
+            return new GetCollectionStatsResp(this);
+        }
+    }
 }

+ 58 - 7
sdk-core/src/main/java/io/milvus/v2/service/collection/response/ListCollectionsResp.java

@@ -19,16 +19,67 @@
 
 package io.milvus.v2.service.collection.response;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
-@Data
-@SuperBuilder
 public class ListCollectionsResp {
-    @Builder.Default
-    private List<String> collectionNames = new ArrayList<>();
+    private List<String> collectionNames;
+
+    private ListCollectionsResp(Builder builder) {
+        this.collectionNames = builder.collectionNames != null ? builder.collectionNames : new ArrayList<>();
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    // Getter
+    public List<String> getCollectionNames() {
+        return collectionNames;
+    }
+
+    // Setter
+    public void setCollectionNames(List<String> collectionNames) {
+        this.collectionNames = collectionNames;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        
+        ListCollectionsResp that = (ListCollectionsResp) obj;
+        
+        return new EqualsBuilder()
+                .append(collectionNames, that.collectionNames)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(collectionNames);
+    }
+
+    @Override
+    public String toString() {
+        return "ListCollectionsResp{" +
+                "collectionNames=" + collectionNames +
+                '}';
+    }
+
+    public static class Builder {
+        private List<String> collectionNames;
+
+        public Builder collectionNames(List<String> collectionNames) {
+            this.collectionNames = collectionNames;
+            return this;
+        }
+
+        public ListCollectionsResp build() {
+            return new ListCollectionsResp(this);
+        }
+    }
 }

+ 78 - 14
sdk-core/src/main/java/io/milvus/v2/service/database/request/AlterDatabasePropertiesReq.java

@@ -19,28 +19,92 @@
 
 package io.milvus.v2.service.database.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 public class AlterDatabasePropertiesReq {
     private String databaseName;
-    @Builder.Default
-    private Map<String, String> properties = new HashMap<>();
+    private Map<String, String> properties;
 
-    public static abstract class AlterDatabasePropertiesReqBuilder<C extends AlterDatabasePropertiesReq, B extends AlterDatabasePropertiesReq.AlterDatabasePropertiesReqBuilder<C, B>> {
-        public B property(String key, String value) {
-            if(null == this.properties$value ){
-                this.properties$value = new HashMap<>();
+    private AlterDatabasePropertiesReq(Builder builder) {
+        this.databaseName = builder.databaseName;
+        this.properties = builder.properties;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Map<String, String> properties) {
+        this.properties = properties;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        AlterDatabasePropertiesReq that = (AlterDatabasePropertiesReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(properties, that.properties)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = databaseName != null ? databaseName.hashCode() : 0;
+        result = 31 * result + (properties != null ? properties.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "AlterDatabasePropertiesReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private Map<String, String> properties = new HashMap<>();
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder properties(Map<String, String> properties) {
+            this.properties = properties;
+            return this;
+        }
+
+        public Builder property(String key, String value) {
+            if (this.properties == null) {
+                this.properties = new HashMap<>();
             }
-            this.properties$value.put(key, value);
-            this.properties$set = true;
-            return self();
+            this.properties.put(key, value);
+            return this;
+        }
+
+        public AlterDatabasePropertiesReq build() {
+            return new AlterDatabasePropertiesReq(this);
         }
     }
 }

+ 73 - 6
sdk-core/src/main/java/io/milvus/v2/service/database/request/AlterDatabaseReq.java

@@ -19,18 +19,85 @@
 
 package io.milvus.v2.service.database.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 @Deprecated
 public class AlterDatabaseReq {
     private String databaseName;
-    @Builder.Default
     private Map<String, String> properties = new HashMap<>();
+
+    private AlterDatabaseReq(Builder builder) {
+        this.databaseName = builder.databaseName;
+        this.properties = builder.properties;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Map<String, String> properties) {
+        this.properties = properties;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        AlterDatabaseReq that = (AlterDatabaseReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(properties, that.properties)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = databaseName != null ? databaseName.hashCode() : 0;
+        result = 31 * result + (properties != null ? properties.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "AlterDatabaseReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private Map<String, String> properties = new HashMap<>();
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder properties(Map<String, String> properties) {
+            this.properties = properties;
+            return this;
+        }
+
+        public AlterDatabaseReq build() {
+            return new AlterDatabaseReq(this);
+        }
+    }
 }

+ 74 - 7
sdk-core/src/main/java/io/milvus/v2/service/database/request/CreateDatabaseReq.java

@@ -19,17 +19,84 @@
 
 package io.milvus.v2.service.database.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 public class CreateDatabaseReq {
     private String databaseName;
-    @Builder.Default
-    private Map<String, String> properties = new HashMap<>();
+    private Map<String, String> properties;
+
+    private CreateDatabaseReq(Builder builder) {
+        this.databaseName = builder.databaseName;
+        this.properties = builder.properties;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Map<String, String> properties) {
+        this.properties = properties;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        CreateDatabaseReq that = (CreateDatabaseReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(properties, that.properties)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = databaseName != null ? databaseName.hashCode() : 0;
+        result = 31 * result + (properties != null ? properties.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "CreateDatabaseReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private Map<String, String> properties = new HashMap<>();
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder properties(Map<String, String> properties) {
+            this.properties = properties;
+            return this;
+        }
+
+        public CreateDatabaseReq build() {
+            return new CreateDatabaseReq(this);
+        }
+    }
 }

+ 54 - 4
sdk-core/src/main/java/io/milvus/v2/service/database/request/DescribeDatabaseReq.java

@@ -19,11 +19,61 @@
 
 package io.milvus.v2.service.database.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class DescribeDatabaseReq {
     private String databaseName;
+
+    private DescribeDatabaseReq(Builder builder) {
+        this.databaseName = builder.databaseName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DescribeDatabaseReq that = (DescribeDatabaseReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return databaseName != null ? databaseName.hashCode() : 0;
+    }
+
+    @Override
+    public String toString() {
+        return "DescribeDatabaseReq{" +
+                "databaseName='" + databaseName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public DescribeDatabaseReq build() {
+            return new DescribeDatabaseReq(this);
+        }
+    }
 }

+ 74 - 8
sdk-core/src/main/java/io/milvus/v2/service/database/request/DropDatabasePropertiesReq.java

@@ -19,18 +19,84 @@
 
 package io.milvus.v2.service.database.request;
 
-
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class DropDatabasePropertiesReq {
     private String databaseName;
-    @Builder.Default
-    private List<String> propertyKeys = new ArrayList<>();
+    private List<String> propertyKeys;
+
+    private DropDatabasePropertiesReq(Builder builder) {
+        this.databaseName = builder.databaseName;
+        this.propertyKeys = builder.propertyKeys;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public List<String> getPropertyKeys() {
+        return propertyKeys;
+    }
+
+    public void setPropertyKeys(List<String> propertyKeys) {
+        this.propertyKeys = propertyKeys;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DropDatabasePropertiesReq that = (DropDatabasePropertiesReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(propertyKeys, that.propertyKeys)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = databaseName != null ? databaseName.hashCode() : 0;
+        result = 31 * result + (propertyKeys != null ? propertyKeys.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "DropDatabasePropertiesReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", propertyKeys=" + propertyKeys +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private List<String> propertyKeys = new ArrayList<>();
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder propertyKeys(List<String> propertyKeys) {
+            this.propertyKeys = propertyKeys;
+            return this;
+        }
+
+        public DropDatabasePropertiesReq build() {
+            return new DropDatabasePropertiesReq(this);
+        }
+    }
 }

+ 54 - 4
sdk-core/src/main/java/io/milvus/v2/service/database/request/DropDatabaseReq.java

@@ -19,11 +19,61 @@
 
 package io.milvus.v2.service.database.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class DropDatabaseReq {
     private String databaseName;
+
+    private DropDatabaseReq(Builder builder) {
+        this.databaseName = builder.databaseName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DropDatabaseReq that = (DropDatabaseReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return databaseName != null ? databaseName.hashCode() : 0;
+    }
+
+    @Override
+    public String toString() {
+        return "DropDatabaseReq{" +
+                "databaseName='" + databaseName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public DropDatabaseReq build() {
+            return new DropDatabaseReq(this);
+        }
+    }
 }

+ 74 - 7
sdk-core/src/main/java/io/milvus/v2/service/database/response/DescribeDatabaseResp.java

@@ -19,17 +19,84 @@
 
 package io.milvus.v2.service.database.response;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 public class DescribeDatabaseResp {
     private String databaseName;
-    @Builder.Default
-    private Map<String, String> properties = new HashMap<>();
+    private Map<String, String> properties;
+
+    private DescribeDatabaseResp(Builder builder) {
+        this.databaseName = builder.databaseName;
+        this.properties = builder.properties;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Map<String, String> properties) {
+        this.properties = properties;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DescribeDatabaseResp that = (DescribeDatabaseResp) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(properties, that.properties)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = databaseName != null ? databaseName.hashCode() : 0;
+        result = 31 * result + (properties != null ? properties.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "DescribeDatabaseResp{" +
+                "databaseName='" + databaseName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private Map<String, String> properties = new HashMap<>();
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder properties(Map<String, String> properties) {
+            this.properties = properties;
+            return this;
+        }
+
+        public DescribeDatabaseResp build() {
+            return new DescribeDatabaseResp(this);
+        }
+    }
 }

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

@@ -19,16 +19,64 @@
 
 package io.milvus.v2.service.database.response;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class ListDatabasesResp {
-    @Builder.Default
-    private List<String> databaseNames = new ArrayList<>();
+    private List<String> databaseNames;
+
+    private ListDatabasesResp(Builder builder) {
+        this.databaseNames = builder.databaseNames;
+    }
+
+    public List<String> getDatabaseNames() {
+        return databaseNames;
+    }
+
+    public void setDatabaseNames(List<String> databaseNames) {
+        this.databaseNames = databaseNames;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        ListDatabasesResp that = (ListDatabasesResp) obj;
+        return new EqualsBuilder()
+                .append(databaseNames, that.databaseNames)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return databaseNames != null ? databaseNames.hashCode() : 0;
+    }
+
+    @Override
+    public String toString() {
+        return "ListDatabasesResp{" +
+                "databaseNames=" + databaseNames +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private List<String> databaseNames = new ArrayList<>();
+
+        private Builder() {}
+
+        public Builder databaseNames(List<String> databaseNames) {
+            this.databaseNames = databaseNames;
+            return this;
+        }
+
+        public ListDatabasesResp build() {
+            return new ListDatabasesResp(this);
+        }
+    }
 }

+ 113 - 14
sdk-core/src/main/java/io/milvus/v2/service/index/request/AlterIndexPropertiesReq.java

@@ -19,31 +19,130 @@
 
 package io.milvus.v2.service.index.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 public class AlterIndexPropertiesReq {
     private String collectionName;
     private String databaseName;
     private String indexName;
-    @Builder.Default
-    private Map<String, String> properties = new HashMap<>();
+    private Map<String, String> properties;
 
+    private AlterIndexPropertiesReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.databaseName = builder.databaseName;
+        this.indexName = builder.indexName;
+        this.properties = builder.properties;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public String getIndexName() {
+        return indexName;
+    }
+
+    public void setIndexName(String indexName) {
+        this.indexName = indexName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Map<String, String> properties) {
+        this.properties = properties;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        AlterIndexPropertiesReq that = (AlterIndexPropertiesReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(databaseName, that.databaseName)
+                .append(indexName, that.indexName)
+                .append(properties, that.properties)
+                .isEquals();
+    }
 
-    public static abstract class AlterIndexPropertiesReqBuilder<C extends AlterIndexPropertiesReq, B extends AlterIndexPropertiesReq.AlterIndexPropertiesReqBuilder<C, B>> {
-        public B property(String key, String value) {
-            if(null == this.properties$value ){
-                this.properties$value = new HashMap<>();
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (databaseName != null ? databaseName.hashCode() : 0);
+        result = 31 * result + (indexName != null ? indexName.hashCode() : 0);
+        result = 31 * result + (properties != null ? properties.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "AlterIndexPropertiesReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", indexName='" + indexName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String databaseName;
+        private String indexName;
+        private Map<String, String> properties = new HashMap<>();
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder indexName(String indexName) {
+            this.indexName = indexName;
+            return this;
+        }
+
+        public Builder properties(Map<String, String> properties) {
+            this.properties = properties;
+            return this;
+        }
+
+        public Builder property(String key, String value) {
+            if (this.properties == null) {
+                this.properties = new HashMap<>();
             }
-            this.properties$value.put(key, value);
-            this.properties$set = true;
-            return self();
+            this.properties.put(key, value);
+            return this;
+        }
+
+        public AlterIndexPropertiesReq build() {
+            return new AlterIndexPropertiesReq(this);
         }
     }
 }

+ 110 - 7
sdk-core/src/main/java/io/milvus/v2/service/index/request/AlterIndexReq.java

@@ -1,19 +1,122 @@
 package io.milvus.v2.service.index.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 @Deprecated
 public class AlterIndexReq {
     private String collectionName;
     private String databaseName;
     private String indexName;
-    @Builder.Default
-    private Map<String, String> properties = new HashMap<>();
+    private Map<String, String> properties;
+
+    private AlterIndexReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.databaseName = builder.databaseName;
+        this.indexName = builder.indexName;
+        this.properties = builder.properties;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public String getIndexName() {
+        return indexName;
+    }
+
+    public void setIndexName(String indexName) {
+        this.indexName = indexName;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Map<String, String> properties) {
+        this.properties = properties;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        AlterIndexReq that = (AlterIndexReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(databaseName, that.databaseName)
+                .append(indexName, that.indexName)
+                .append(properties, that.properties)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (databaseName != null ? databaseName.hashCode() : 0);
+        result = 31 * result + (indexName != null ? indexName.hashCode() : 0);
+        result = 31 * result + (properties != null ? properties.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "AlterIndexReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", indexName='" + indexName + '\'' +
+                ", properties=" + properties +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String databaseName;
+        private String indexName;
+        private Map<String, String> properties = new HashMap<>();
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder indexName(String indexName) {
+            this.indexName = indexName;
+            return this;
+        }
+
+        public Builder properties(Map<String, String> properties) {
+            this.properties = properties;
+            return this;
+        }
+
+        public AlterIndexReq build() {
+            return new AlterIndexReq(this);
+        }
+    }
 }

+ 136 - 9
sdk-core/src/main/java/io/milvus/v2/service/index/request/CreateIndexReq.java

@@ -20,22 +20,149 @@
 package io.milvus.v2.service.index.request;
 
 import io.milvus.v2.common.IndexParam;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NonNull;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class CreateIndexReq {
     private String databaseName;
-    @NonNull
     private String collectionName;
     private List<IndexParam> indexParams;
-    @Builder.Default
     private Boolean sync = Boolean.TRUE; // wait the index to complete
-    @Builder.Default
     private Long timeout = 60000L; // timeout value for waiting the index to complete
+
+    private CreateIndexReq(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        this.databaseName = builder.databaseName;
+        this.collectionName = builder.collectionName;
+        this.indexParams = builder.indexParams;
+        this.sync = builder.sync;
+        this.timeout = builder.timeout;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        if (collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        this.collectionName = collectionName;
+    }
+
+    public List<IndexParam> getIndexParams() {
+        return indexParams;
+    }
+
+    public void setIndexParams(List<IndexParam> indexParams) {
+        this.indexParams = indexParams;
+    }
+
+    public Boolean getSync() {
+        return sync;
+    }
+
+    public void setSync(Boolean sync) {
+        this.sync = sync;
+    }
+
+    public Long getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(Long timeout) {
+        this.timeout = timeout;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        CreateIndexReq that = (CreateIndexReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(collectionName, that.collectionName)
+                .append(indexParams, that.indexParams)
+                .append(sync, that.sync)
+                .append(timeout, that.timeout)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = databaseName != null ? databaseName.hashCode() : 0;
+        result = 31 * result + (collectionName != null ? collectionName.hashCode() : 0);
+        result = 31 * result + (indexParams != null ? indexParams.hashCode() : 0);
+        result = 31 * result + (sync != null ? sync.hashCode() : 0);
+        result = 31 * result + (timeout != null ? timeout.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "CreateIndexReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", indexParams=" + indexParams +
+                ", sync=" + sync +
+                ", timeout=" + timeout +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private String collectionName;
+        private List<IndexParam> indexParams;
+        private Boolean sync = Boolean.TRUE; // wait the index to complete
+        private Long timeout = 60000L; // timeout value for waiting the index to complete
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder collectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("Collection name cannot be null");
+            }
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder indexParams(List<IndexParam> indexParams) {
+            this.indexParams = indexParams;
+            return this;
+        }
+
+        public Builder sync(Boolean sync) {
+            this.sync = sync;
+            return this;
+        }
+
+        public Builder timeout(Long timeout) {
+            this.timeout = timeout;
+            return this;
+        }
+
+        public CreateIndexReq build() {
+            return new CreateIndexReq(this);
+        }
+    }
 }

+ 136 - 8
sdk-core/src/main/java/io/milvus/v2/service/index/request/DescribeIndexReq.java

@@ -19,19 +19,147 @@
 
 package io.milvus.v2.service.index.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.NonNull;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class DescribeIndexReq {
     private String databaseName;
-    @NonNull
     private String collectionName;
     private String fieldName;
     private String indexName;
-    @Builder.Default
     private Long timestamp = 0L; // only check segments generated before this timestamp. all the segments will be checked if this value is zero.
+
+    private DescribeIndexReq(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        this.databaseName = builder.databaseName;
+        this.collectionName = builder.collectionName;
+        this.fieldName = builder.fieldName;
+        this.indexName = builder.indexName;
+        this.timestamp = builder.timestamp;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        if (collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        this.collectionName = collectionName;
+    }
+
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public String getIndexName() {
+        return indexName;
+    }
+
+    public void setIndexName(String indexName) {
+        this.indexName = indexName;
+    }
+
+    public Long getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(Long timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DescribeIndexReq that = (DescribeIndexReq) obj;
+        return new EqualsBuilder()
+                .append(databaseName, that.databaseName)
+                .append(collectionName, that.collectionName)
+                .append(fieldName, that.fieldName)
+                .append(indexName, that.indexName)
+                .append(timestamp, that.timestamp)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = databaseName != null ? databaseName.hashCode() : 0;
+        result = 31 * result + (collectionName != null ? collectionName.hashCode() : 0);
+        result = 31 * result + (fieldName != null ? fieldName.hashCode() : 0);
+        result = 31 * result + (indexName != null ? indexName.hashCode() : 0);
+        result = 31 * result + (timestamp != null ? timestamp.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "DescribeIndexReq{" +
+                "databaseName='" + databaseName + '\'' +
+                ", collectionName='" + collectionName + '\'' +
+                ", fieldName='" + fieldName + '\'' +
+                ", indexName='" + indexName + '\'' +
+                ", timestamp=" + timestamp +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String databaseName;
+        private String collectionName;
+        private String fieldName;
+        private String indexName;
+        private Long timestamp = 0L; // only check segments generated before this timestamp. all the segments will be checked if this value is zero.
+
+        private Builder() {}
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder collectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("Collection name cannot be null");
+            }
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder fieldName(String fieldName) {
+            this.fieldName = fieldName;
+            return this;
+        }
+
+        public Builder indexName(String indexName) {
+            this.indexName = indexName;
+            return this;
+        }
+
+        public Builder timestamp(Long timestamp) {
+            this.timestamp = timestamp;
+            return this;
+        }
+
+        public DescribeIndexReq build() {
+            return new DescribeIndexReq(this);
+        }
+    }
 }

+ 109 - 7
sdk-core/src/main/java/io/milvus/v2/service/index/request/DropIndexPropertiesReq.java

@@ -19,20 +19,122 @@
 
 package io.milvus.v2.service.index.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class DropIndexPropertiesReq {
     private String collectionName;
     private String databaseName;
     private String indexName;
+    private List<String> propertyKeys;
 
-    @Builder.Default
-    private List<String> propertyKeys = new ArrayList<>();
+    private DropIndexPropertiesReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.databaseName = builder.databaseName;
+        this.indexName = builder.indexName;
+        this.propertyKeys = builder.propertyKeys;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    public String getIndexName() {
+        return indexName;
+    }
+
+    public void setIndexName(String indexName) {
+        this.indexName = indexName;
+    }
+
+    public List<String> getPropertyKeys() {
+        return propertyKeys;
+    }
+
+    public void setPropertyKeys(List<String> propertyKeys) {
+        this.propertyKeys = propertyKeys;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DropIndexPropertiesReq that = (DropIndexPropertiesReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(databaseName, that.databaseName)
+                .append(indexName, that.indexName)
+                .append(propertyKeys, that.propertyKeys)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (databaseName != null ? databaseName.hashCode() : 0);
+        result = 31 * result + (indexName != null ? indexName.hashCode() : 0);
+        result = 31 * result + (propertyKeys != null ? propertyKeys.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "DropIndexPropertiesReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", databaseName='" + databaseName + '\'' +
+                ", indexName='" + indexName + '\'' +
+                ", propertyKeys=" + propertyKeys +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String databaseName;
+        private String indexName;
+        private List<String> propertyKeys = new ArrayList<>();
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder databaseName(String databaseName) {
+            this.databaseName = databaseName;
+            return this;
+        }
+
+        public Builder indexName(String indexName) {
+            this.indexName = indexName;
+            return this;
+        }
+
+        public Builder propertyKeys(List<String> propertyKeys) {
+            this.propertyKeys = propertyKeys;
+            return this;
+        }
+
+        public DropIndexPropertiesReq build() {
+            return new DropIndexPropertiesReq(this);
+        }
+    }
 }

+ 100 - 6
sdk-core/src/main/java/io/milvus/v2/service/index/request/DropIndexReq.java

@@ -19,15 +19,109 @@
 
 package io.milvus.v2.service.index.request;
 
-import lombok.Data;
-import lombok.NonNull;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class DropIndexReq {
-    @NonNull
     private String collectionName;
     private String fieldName;
     private String indexName;
+
+    private DropIndexReq(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        this.collectionName = builder.collectionName;
+        this.fieldName = builder.fieldName;
+        this.indexName = builder.indexName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        if (collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        this.collectionName = collectionName;
+    }
+
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public String getIndexName() {
+        return indexName;
+    }
+
+    public void setIndexName(String indexName) {
+        this.indexName = indexName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DropIndexReq that = (DropIndexReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(fieldName, that.fieldName)
+                .append(indexName, that.indexName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (fieldName != null ? fieldName.hashCode() : 0);
+        result = 31 * result + (indexName != null ? indexName.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "DropIndexReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", fieldName='" + fieldName + '\'' +
+                ", indexName='" + indexName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String fieldName;
+        private String indexName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("Collection name cannot be null");
+            }
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder fieldName(String fieldName) {
+            this.fieldName = fieldName;
+            return this;
+        }
+
+        public Builder indexName(String indexName) {
+            this.indexName = indexName;
+            return this;
+        }
+
+        public DropIndexReq build() {
+            return new DropIndexReq(this);
+        }
+    }
 }

+ 82 - 6
sdk-core/src/main/java/io/milvus/v2/service/index/request/ListIndexesReq.java

@@ -19,14 +19,90 @@
 
 package io.milvus.v2.service.index.request;
 
-import lombok.Data;
-import lombok.NonNull;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class ListIndexesReq {
-    @NonNull
     private String collectionName;
     private String fieldName;
+
+    private ListIndexesReq(Builder builder) {
+        if (builder.collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        this.collectionName = builder.collectionName;
+        this.fieldName = builder.fieldName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        if (collectionName == null) {
+            throw new IllegalArgumentException("Collection name cannot be null");
+        }
+        this.collectionName = collectionName;
+    }
+
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        ListIndexesReq that = (ListIndexesReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(fieldName, that.fieldName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (fieldName != null ? fieldName.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "ListIndexesReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", fieldName='" + fieldName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String fieldName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            if (collectionName == null) {
+                throw new IllegalArgumentException("Collection name cannot be null");
+            }
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder fieldName(String fieldName) {
+            this.fieldName = fieldName;
+            return this;
+        }
+
+        public ListIndexesReq build() {
+            return new ListIndexesReq(this);
+        }
+    }
 }

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

@@ -21,62 +21,105 @@ package io.milvus.v2.service.index.response;
 
 import io.milvus.v2.common.IndexBuildState;
 import io.milvus.v2.common.IndexParam;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NonNull;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-@Data
-@SuperBuilder
 public class DescribeIndexResp {
-    @Builder.Default
-    private List<IndexDesc> indexDescriptions = new ArrayList<>();
+    private List<IndexDesc> indexDescriptions;
 
-    public IndexDesc getIndexDescByFieldName(@NonNull String fieldName) {
+    private DescribeIndexResp(Builder builder) {
+        this.indexDescriptions = builder.indexDescriptions;
+    }
+
+    public List<IndexDesc> getIndexDescriptions() {
+        return indexDescriptions;
+    }
+
+    public void setIndexDescriptions(List<IndexDesc> indexDescriptions) {
+        this.indexDescriptions = indexDescriptions;
+    }
+
+    public IndexDesc getIndexDescByFieldName(String fieldName) {
+        if (fieldName == null) {
+            throw new IllegalArgumentException("Field name cannot be null");
+        }
         for (IndexDesc desc : indexDescriptions) {
-            if (desc.fieldName.equals(fieldName)) {
+            if (desc.getFieldName().equals(fieldName)) {
                 return desc;
             }
         }
         return null;
     }
 
-    public IndexDesc getIndexDescByIndexName(@NonNull String indexName) {
+    public IndexDesc getIndexDescByIndexName(String indexName) {
+        if (indexName == null) {
+            throw new IllegalArgumentException("Index name cannot be null");
+        }
         for (IndexDesc desc : indexDescriptions) {
-            if (desc.indexName.equals(indexName)) {
+            if (desc.getIndexName().equals(indexName)) {
                 return desc;
             }
         }
         return null;
     }
 
-    @Data
-    @SuperBuilder
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DescribeIndexResp that = (DescribeIndexResp) obj;
+        return new EqualsBuilder()
+                .append(indexDescriptions, that.indexDescriptions)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return indexDescriptions != null ? indexDescriptions.hashCode() : 0;
+    }
+
+    @Override
+    public String toString() {
+        return "DescribeIndexResp{" +
+                "indexDescriptions=" + indexDescriptions +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private List<IndexDesc> indexDescriptions = new ArrayList<>();
+
+        private Builder() {}
+
+        public Builder indexDescriptions(List<IndexDesc> indexDescriptions) {
+            this.indexDescriptions = indexDescriptions;
+            return this;
+        }
+
+        public DescribeIndexResp build() {
+            return new DescribeIndexResp(this);
+        }
+    }
+
     public static final class IndexDesc {
         private String fieldName;
         private String indexName;
         private long id;
-        @Builder.Default
-        private IndexParam.IndexType indexType = IndexParam.IndexType.None;
-        @Builder.Default
-        private IndexParam.MetricType metricType = IndexParam.MetricType.INVALID;
-        @Builder.Default
-        private Map<String, String> extraParams = new HashMap<>();
-        @Builder.Default
-        private long indexedRows = 0;
-        @Builder.Default
-        private long totalRows = 0;
-        @Builder.Default
-        private long pendingIndexRows = 0;
-        @Builder.Default
-        private IndexBuildState indexState = IndexBuildState.IndexStateNone;
-        @Builder.Default
-        private String indexFailedReason = "";
+        private IndexParam.IndexType indexType;
+        private IndexParam.MetricType metricType;
+        private Map<String, String> extraParams;
+        private long indexedRows;
+        private long totalRows;
+        private long pendingIndexRows;
+        private IndexBuildState indexState;
+        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,
@@ -86,8 +129,259 @@ public class DescribeIndexResp {
         //  (3) now the "mmap.enabled" is dispatched to "properties" by ConvertUtils.convertToDescribeIndexResp(),
         //      once there are new property available, the new property will be dispatched to "extraParams",
         //      the "properties" member is not maintainable.
-        @Builder.Default
         @Deprecated
-        private Map<String, String> properties = new HashMap<>();
+        private Map<String, String> properties;
+
+        private IndexDesc(Builder builder) {
+            this.fieldName = builder.fieldName;
+            this.indexName = builder.indexName;
+            this.id = builder.id;
+            this.indexType = builder.indexType;
+            this.metricType = builder.metricType;
+            this.extraParams = builder.extraParams;
+            this.indexedRows = builder.indexedRows;
+            this.totalRows = builder.totalRows;
+            this.pendingIndexRows = builder.pendingIndexRows;
+            this.indexState = builder.indexState;
+            this.indexFailedReason = builder.indexFailedReason;
+            this.properties = builder.properties;
+        }
+
+        public String getFieldName() {
+            return fieldName;
+        }
+
+        public void setFieldName(String fieldName) {
+            this.fieldName = fieldName;
+        }
+
+        public String getIndexName() {
+            return indexName;
+        }
+
+        public void setIndexName(String indexName) {
+            this.indexName = indexName;
+        }
+
+        public long getId() {
+            return id;
+        }
+
+        public void setId(long id) {
+            this.id = id;
+        }
+
+        public IndexParam.IndexType getIndexType() {
+            return indexType;
+        }
+
+        public void setIndexType(IndexParam.IndexType indexType) {
+            this.indexType = indexType;
+        }
+
+        public IndexParam.MetricType getMetricType() {
+            return metricType;
+        }
+
+        public void setMetricType(IndexParam.MetricType metricType) {
+            this.metricType = metricType;
+        }
+
+        public Map<String, String> getExtraParams() {
+            return extraParams;
+        }
+
+        public void setExtraParams(Map<String, String> extraParams) {
+            this.extraParams = extraParams;
+        }
+
+        public long getIndexedRows() {
+            return indexedRows;
+        }
+
+        public void setIndexedRows(long indexedRows) {
+            this.indexedRows = indexedRows;
+        }
+
+        public long getTotalRows() {
+            return totalRows;
+        }
+
+        public void setTotalRows(long totalRows) {
+            this.totalRows = totalRows;
+        }
+
+        public long getPendingIndexRows() {
+            return pendingIndexRows;
+        }
+
+        public void setPendingIndexRows(long pendingIndexRows) {
+            this.pendingIndexRows = pendingIndexRows;
+        }
+
+        public IndexBuildState getIndexState() {
+            return indexState;
+        }
+
+        public void setIndexState(IndexBuildState indexState) {
+            this.indexState = indexState;
+        }
+
+        public String getIndexFailedReason() {
+            return indexFailedReason;
+        }
+
+        public void setIndexFailedReason(String indexFailedReason) {
+            this.indexFailedReason = indexFailedReason;
+        }
+
+        public Map<String, String> getProperties() {
+            return properties;
+        }
+
+        public void setProperties(Map<String, String> properties) {
+            this.properties = properties;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) return true;
+            if (obj == null || getClass() != obj.getClass()) return false;
+            IndexDesc indexDesc = (IndexDesc) obj;
+            return new EqualsBuilder()
+                    .append(id, indexDesc.id)
+                    .append(indexedRows, indexDesc.indexedRows)
+                    .append(totalRows, indexDesc.totalRows)
+                    .append(pendingIndexRows, indexDesc.pendingIndexRows)
+                    .append(fieldName, indexDesc.fieldName)
+                    .append(indexName, indexDesc.indexName)
+                    .append(indexType, indexDesc.indexType)
+                    .append(metricType, indexDesc.metricType)
+                    .append(extraParams, indexDesc.extraParams)
+                    .append(indexState, indexDesc.indexState)
+                    .append(indexFailedReason, indexDesc.indexFailedReason)
+                    .append(properties, indexDesc.properties)
+                    .isEquals();
+        }
+
+        @Override
+        public int hashCode() {
+            int result = fieldName != null ? fieldName.hashCode() : 0;
+            result = 31 * result + (indexName != null ? indexName.hashCode() : 0);
+            result = 31 * result + (int) (id ^ (id >>> 32));
+            result = 31 * result + (indexType != null ? indexType.hashCode() : 0);
+            result = 31 * result + (metricType != null ? metricType.hashCode() : 0);
+            result = 31 * result + (extraParams != null ? extraParams.hashCode() : 0);
+            result = 31 * result + (int) (indexedRows ^ (indexedRows >>> 32));
+            result = 31 * result + (int) (totalRows ^ (totalRows >>> 32));
+            result = 31 * result + (int) (pendingIndexRows ^ (pendingIndexRows >>> 32));
+            result = 31 * result + (indexState != null ? indexState.hashCode() : 0);
+            result = 31 * result + (indexFailedReason != null ? indexFailedReason.hashCode() : 0);
+            result = 31 * result + (properties != null ? properties.hashCode() : 0);
+            return result;
+        }
+
+        @Override
+        public String toString() {
+            return "IndexDesc{" +
+                    "fieldName='" + fieldName + '\'' +
+                    ", indexName='" + indexName + '\'' +
+                    ", id=" + id +
+                    ", indexType=" + indexType +
+                    ", metricType=" + metricType +
+                    ", extraParams=" + extraParams +
+                    ", indexedRows=" + indexedRows +
+                    ", totalRows=" + totalRows +
+                    ", pendingIndexRows=" + pendingIndexRows +
+                    ", indexState=" + indexState +
+                    ", indexFailedReason='" + indexFailedReason + '\'' +
+                    ", properties=" + properties +
+                    '}';
+        }
+
+        public static Builder builder() {
+            return new Builder();
+        }
+
+        public static class Builder {
+            private String fieldName;
+            private String indexName;
+            private long id;
+            private IndexParam.IndexType indexType = IndexParam.IndexType.None;
+            private IndexParam.MetricType metricType = IndexParam.MetricType.INVALID;
+            private Map<String, String> extraParams = new HashMap<>();
+            private long indexedRows = 0;
+            private long totalRows = 0;
+            private long pendingIndexRows = 0;
+            private IndexBuildState indexState = IndexBuildState.IndexStateNone;
+            private String indexFailedReason = "";
+            private Map<String, String> properties = new HashMap<>();
+
+            private Builder() {}
+
+            public Builder fieldName(String fieldName) {
+                this.fieldName = fieldName;
+                return this;
+            }
+
+            public Builder indexName(String indexName) {
+                this.indexName = indexName;
+                return this;
+            }
+
+            public Builder id(long id) {
+                this.id = id;
+                return this;
+            }
+
+            public Builder indexType(IndexParam.IndexType indexType) {
+                this.indexType = indexType;
+                return this;
+            }
+
+            public Builder metricType(IndexParam.MetricType metricType) {
+                this.metricType = metricType;
+                return this;
+            }
+
+            public Builder extraParams(Map<String, String> extraParams) {
+                this.extraParams = extraParams;
+                return this;
+            }
+
+            public Builder indexedRows(long indexedRows) {
+                this.indexedRows = indexedRows;
+                return this;
+            }
+
+            public Builder totalRows(long totalRows) {
+                this.totalRows = totalRows;
+                return this;
+            }
+
+            public Builder pendingIndexRows(long pendingIndexRows) {
+                this.pendingIndexRows = pendingIndexRows;
+                return this;
+            }
+
+            public Builder indexState(IndexBuildState indexState) {
+                this.indexState = indexState;
+                return this;
+            }
+
+            public Builder indexFailedReason(String indexFailedReason) {
+                this.indexFailedReason = indexFailedReason;
+                return this;
+            }
+
+            public Builder properties(Map<String, String> properties) {
+                this.properties = properties;
+                return this;
+            }
+
+            public IndexDesc build() {
+                return new IndexDesc(this);
+            }
+        }
     }
 }

+ 73 - 4
sdk-core/src/main/java/io/milvus/v2/service/partition/request/CreatePartitionReq.java

@@ -19,12 +19,81 @@
 
 package io.milvus.v2.service.partition.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class CreatePartitionReq {
     private String collectionName;
     private String partitionName;
+
+    private CreatePartitionReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.partitionName = builder.partitionName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getPartitionName() {
+        return partitionName;
+    }
+
+    public void setPartitionName(String partitionName) {
+        this.partitionName = partitionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        CreatePartitionReq that = (CreatePartitionReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(partitionName, that.partitionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (partitionName != null ? partitionName.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "CreatePartitionReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", partitionName='" + partitionName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String partitionName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder partitionName(String partitionName) {
+            this.partitionName = partitionName;
+            return this;
+        }
+
+        public CreatePartitionReq build() {
+            return new CreatePartitionReq(this);
+        }
+    }
 }

+ 73 - 4
sdk-core/src/main/java/io/milvus/v2/service/partition/request/DropPartitionReq.java

@@ -19,12 +19,81 @@
 
 package io.milvus.v2.service.partition.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class DropPartitionReq {
     private String collectionName;
     private String partitionName;
+
+    private DropPartitionReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.partitionName = builder.partitionName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getPartitionName() {
+        return partitionName;
+    }
+
+    public void setPartitionName(String partitionName) {
+        this.partitionName = partitionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DropPartitionReq that = (DropPartitionReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(partitionName, that.partitionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (partitionName != null ? partitionName.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "DropPartitionReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", partitionName='" + partitionName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String partitionName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder partitionName(String partitionName) {
+            this.partitionName = partitionName;
+            return this;
+        }
+
+        public DropPartitionReq build() {
+            return new DropPartitionReq(this);
+        }
+    }
 }

+ 73 - 4
sdk-core/src/main/java/io/milvus/v2/service/partition/request/GetPartitionStatsReq.java

@@ -19,12 +19,81 @@
 
 package io.milvus.v2.service.partition.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class GetPartitionStatsReq {
     private String collectionName;
     private String partitionName;
+
+    private GetPartitionStatsReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.partitionName = builder.partitionName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getPartitionName() {
+        return partitionName;
+    }
+
+    public void setPartitionName(String partitionName) {
+        this.partitionName = partitionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        GetPartitionStatsReq that = (GetPartitionStatsReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(partitionName, that.partitionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (partitionName != null ? partitionName.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "GetPartitionStatsReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", partitionName='" + partitionName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String partitionName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder partitionName(String partitionName) {
+            this.partitionName = partitionName;
+            return this;
+        }
+
+        public GetPartitionStatsReq build() {
+            return new GetPartitionStatsReq(this);
+        }
+    }
 }

+ 73 - 4
sdk-core/src/main/java/io/milvus/v2/service/partition/request/HasPartitionReq.java

@@ -19,12 +19,81 @@
 
 package io.milvus.v2.service.partition.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class HasPartitionReq {
     private String collectionName;
     private String partitionName;
+
+    private HasPartitionReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.partitionName = builder.partitionName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public String getPartitionName() {
+        return partitionName;
+    }
+
+    public void setPartitionName(String partitionName) {
+        this.partitionName = partitionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        HasPartitionReq that = (HasPartitionReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(partitionName, that.partitionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (partitionName != null ? partitionName.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "HasPartitionReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", partitionName='" + partitionName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private String partitionName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder partitionName(String partitionName) {
+            this.partitionName = partitionName;
+            return this;
+        }
+
+        public HasPartitionReq build() {
+            return new HasPartitionReq(this);
+        }
+    }
 }

+ 54 - 4
sdk-core/src/main/java/io/milvus/v2/service/partition/request/ListPartitionsReq.java

@@ -19,11 +19,61 @@
 
 package io.milvus.v2.service.partition.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class ListPartitionsReq {
     private String collectionName;
+
+    private ListPartitionsReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        ListPartitionsReq that = (ListPartitionsReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return collectionName != null ? collectionName.hashCode() : 0;
+    }
+
+    @Override
+    public String toString() {
+        return "ListPartitionsReq{" +
+                "collectionName='" + collectionName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public ListPartitionsReq build() {
+            return new ListPartitionsReq(this);
+        }
+    }
 }

+ 207 - 21
sdk-core/src/main/java/io/milvus/v2/service/partition/request/LoadPartitionsReq.java

@@ -19,31 +19,217 @@
 
 package io.milvus.v2.service.partition.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class LoadPartitionsReq {
     private String collectionName;
-    @Builder.Default
-    private List<String> partitionNames = new ArrayList<>();
-    @Builder.Default
-    private Integer numReplicas = 1;
-    @Builder.Default
-    private Boolean sync = Boolean.TRUE; // wait the partitions to be fully loaded
-    @Builder.Default
-    private Long timeout = 60000L; // timeout value for waiting the partitions to be fully loaded
-    @Builder.Default
-    private Boolean refresh = Boolean.FALSE;
-    @Builder.Default
-    private List<String> loadFields = new ArrayList<>();
-    @Builder.Default
-    private Boolean skipLoadDynamicField = Boolean.FALSE;
-    @Builder.Default
-    private List<String> resourceGroups = new ArrayList<>();
+    private List<String> partitionNames;
+    private Integer numReplicas;
+    private Boolean sync; // wait the partitions to be fully loaded
+    private Long timeout; // timeout value for waiting the partitions to be fully loaded
+    private Boolean refresh;
+    private List<String> loadFields;
+    private Boolean skipLoadDynamicField;
+    private List<String> resourceGroups;
+
+    private LoadPartitionsReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.partitionNames = builder.partitionNames;
+        this.numReplicas = builder.numReplicas;
+        this.sync = builder.sync;
+        this.timeout = builder.timeout;
+        this.refresh = builder.refresh;
+        this.loadFields = builder.loadFields;
+        this.skipLoadDynamicField = builder.skipLoadDynamicField;
+        this.resourceGroups = builder.resourceGroups;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public List<String> getPartitionNames() {
+        return partitionNames;
+    }
+
+    public void setPartitionNames(List<String> partitionNames) {
+        this.partitionNames = partitionNames;
+    }
+
+    public Integer getNumReplicas() {
+        return numReplicas;
+    }
+
+    public void setNumReplicas(Integer numReplicas) {
+        this.numReplicas = numReplicas;
+    }
+
+    public Boolean getSync() {
+        return sync;
+    }
+
+    public void setSync(Boolean sync) {
+        this.sync = sync;
+    }
+
+    public Long getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(Long timeout) {
+        this.timeout = timeout;
+    }
+
+    public Boolean getRefresh() {
+        return refresh;
+    }
+
+    public void setRefresh(Boolean refresh) {
+        this.refresh = refresh;
+    }
+
+    public List<String> getLoadFields() {
+        return loadFields;
+    }
+
+    public void setLoadFields(List<String> loadFields) {
+        this.loadFields = loadFields;
+    }
+
+    public Boolean getSkipLoadDynamicField() {
+        return skipLoadDynamicField;
+    }
+
+    public void setSkipLoadDynamicField(Boolean skipLoadDynamicField) {
+        this.skipLoadDynamicField = skipLoadDynamicField;
+    }
+
+    public List<String> getResourceGroups() {
+        return resourceGroups;
+    }
+
+    public void setResourceGroups(List<String> resourceGroups) {
+        this.resourceGroups = resourceGroups;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        LoadPartitionsReq that = (LoadPartitionsReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(partitionNames, that.partitionNames)
+                .append(numReplicas, that.numReplicas)
+                .append(sync, that.sync)
+                .append(timeout, that.timeout)
+                .append(refresh, that.refresh)
+                .append(loadFields, that.loadFields)
+                .append(skipLoadDynamicField, that.skipLoadDynamicField)
+                .append(resourceGroups, that.resourceGroups)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (partitionNames != null ? partitionNames.hashCode() : 0);
+        result = 31 * result + (numReplicas != null ? numReplicas.hashCode() : 0);
+        result = 31 * result + (sync != null ? sync.hashCode() : 0);
+        result = 31 * result + (timeout != null ? timeout.hashCode() : 0);
+        result = 31 * result + (refresh != null ? refresh.hashCode() : 0);
+        result = 31 * result + (loadFields != null ? loadFields.hashCode() : 0);
+        result = 31 * result + (skipLoadDynamicField != null ? skipLoadDynamicField.hashCode() : 0);
+        result = 31 * result + (resourceGroups != null ? resourceGroups.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "LoadPartitionsReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", partitionNames=" + partitionNames +
+                ", numReplicas=" + numReplicas +
+                ", sync=" + sync +
+                ", timeout=" + timeout +
+                ", refresh=" + refresh +
+                ", loadFields=" + loadFields +
+                ", skipLoadDynamicField=" + skipLoadDynamicField +
+                ", resourceGroups=" + resourceGroups +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private List<String> partitionNames = new ArrayList<>();
+        private Integer numReplicas = 1;
+        private Boolean sync = Boolean.TRUE; // wait the partitions to be fully loaded
+        private Long timeout = 60000L; // timeout value for waiting the partitions to be fully loaded
+        private Boolean refresh = Boolean.FALSE;
+        private List<String> loadFields = new ArrayList<>();
+        private Boolean skipLoadDynamicField = Boolean.FALSE;
+        private List<String> resourceGroups = new ArrayList<>();
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder partitionNames(List<String> partitionNames) {
+            this.partitionNames = partitionNames;
+            return this;
+        }
+
+        public Builder numReplicas(Integer numReplicas) {
+            this.numReplicas = numReplicas;
+            return this;
+        }
+
+        public Builder sync(Boolean sync) {
+            this.sync = sync;
+            return this;
+        }
+
+        public Builder timeout(Long timeout) {
+            this.timeout = timeout;
+            return this;
+        }
+
+        public Builder refresh(Boolean refresh) {
+            this.refresh = refresh;
+            return this;
+        }
+
+        public Builder loadFields(List<String> loadFields) {
+            this.loadFields = loadFields;
+            return this;
+        }
+
+        public Builder skipLoadDynamicField(Boolean skipLoadDynamicField) {
+            this.skipLoadDynamicField = skipLoadDynamicField;
+            return this;
+        }
+
+        public Builder resourceGroups(List<String> resourceGroups) {
+            this.resourceGroups = resourceGroups;
+            return this;
+        }
+
+        public LoadPartitionsReq build() {
+            return new LoadPartitionsReq(this);
+        }
+    }
 }

+ 73 - 4
sdk-core/src/main/java/io/milvus/v2/service/partition/request/ReleasePartitionsReq.java

@@ -19,14 +19,83 @@
 
 package io.milvus.v2.service.partition.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class ReleasePartitionsReq {
     private String collectionName;
     private List<String> partitionNames;
+
+    private ReleasePartitionsReq(Builder builder) {
+        this.collectionName = builder.collectionName;
+        this.partitionNames = builder.partitionNames;
+    }
+
+    public String getCollectionName() {
+        return collectionName;
+    }
+
+    public void setCollectionName(String collectionName) {
+        this.collectionName = collectionName;
+    }
+
+    public List<String> getPartitionNames() {
+        return partitionNames;
+    }
+
+    public void setPartitionNames(List<String> partitionNames) {
+        this.partitionNames = partitionNames;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        ReleasePartitionsReq that = (ReleasePartitionsReq) obj;
+        return new EqualsBuilder()
+                .append(collectionName, that.collectionName)
+                .append(partitionNames, that.partitionNames)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = collectionName != null ? collectionName.hashCode() : 0;
+        result = 31 * result + (partitionNames != null ? partitionNames.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "ReleasePartitionsReq{" +
+                "collectionName='" + collectionName + '\'' +
+                ", partitionNames=" + partitionNames +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String collectionName;
+        private List<String> partitionNames;
+
+        private Builder() {}
+
+        public Builder collectionName(String collectionName) {
+            this.collectionName = collectionName;
+            return this;
+        }
+
+        public Builder partitionNames(List<String> partitionNames) {
+            this.partitionNames = partitionNames;
+            return this;
+        }
+
+        public ReleasePartitionsReq build() {
+            return new ReleasePartitionsReq(this);
+        }
+    }
 }

+ 54 - 4
sdk-core/src/main/java/io/milvus/v2/service/partition/response/GetPartitionStatsResp.java

@@ -20,11 +20,61 @@
 
 package io.milvus.v2.service.partition.response;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class GetPartitionStatsResp {
     private Long numOfEntities;
+
+    private GetPartitionStatsResp(Builder builder) {
+        this.numOfEntities = builder.numOfEntities;
+    }
+
+    public Long getNumOfEntities() {
+        return numOfEntities;
+    }
+
+    public void setNumOfEntities(Long numOfEntities) {
+        this.numOfEntities = numOfEntities;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        GetPartitionStatsResp that = (GetPartitionStatsResp) obj;
+        return new EqualsBuilder()
+                .append(numOfEntities, that.numOfEntities)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return numOfEntities != null ? numOfEntities.hashCode() : 0;
+    }
+
+    @Override
+    public String toString() {
+        return "GetPartitionStatsResp{" +
+                "numOfEntities=" + numOfEntities +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private Long numOfEntities;
+
+        private Builder() {}
+
+        public Builder numOfEntities(Long numOfEntities) {
+            this.numOfEntities = numOfEntities;
+            return this;
+        }
+
+        public GetPartitionStatsResp build() {
+            return new GetPartitionStatsResp(this);
+        }
+    }
 }

+ 74 - 7
sdk-core/src/main/java/io/milvus/v2/service/rbac/PrivilegeGroup.java

@@ -19,17 +19,84 @@
 
 package io.milvus.v2.service.rbac;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class PrivilegeGroup {
     private String groupName;
-    @Builder.Default
-    private List<String> privileges = new ArrayList<>();
+    private List<String> privileges;
+
+    private PrivilegeGroup(Builder builder) {
+        this.groupName = builder.groupName;
+        this.privileges = builder.privileges;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public List<String> getPrivileges() {
+        return privileges;
+    }
+
+    public void setPrivileges(List<String> privileges) {
+        this.privileges = privileges;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        PrivilegeGroup that = (PrivilegeGroup) obj;
+        return new EqualsBuilder()
+                .append(groupName, that.groupName)
+                .append(privileges, that.privileges)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = groupName != null ? groupName.hashCode() : 0;
+        result = 31 * result + (privileges != null ? privileges.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "PrivilegeGroup{" +
+                "groupName='" + groupName + '\'' +
+                ", privileges=" + privileges +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String groupName;
+        private List<String> privileges = new ArrayList<>();
+
+        private Builder() {}
+
+        public Builder groupName(String groupName) {
+            this.groupName = groupName;
+            return this;
+        }
+
+        public Builder privileges(List<String> privileges) {
+            this.privileges = privileges;
+            return this;
+        }
+
+        public PrivilegeGroup build() {
+            return new PrivilegeGroup(this);
+        }
+    }
 }

+ 73 - 6
sdk-core/src/main/java/io/milvus/v2/service/rbac/request/AddPrivilegesToGroupReq.java

@@ -19,17 +19,84 @@
 
 package io.milvus.v2.service.rbac.request;
 
-import lombok.Builder;
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@Data
-@SuperBuilder
 public class AddPrivilegesToGroupReq {
     private String groupName;
-    @Builder.Default
     private List<String> privileges = new ArrayList<>();
+
+    private AddPrivilegesToGroupReq(Builder builder) {
+        this.groupName = builder.groupName;
+        this.privileges = builder.privileges;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public List<String> getPrivileges() {
+        return privileges;
+    }
+
+    public void setPrivileges(List<String> privileges) {
+        this.privileges = privileges;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        AddPrivilegesToGroupReq that = (AddPrivilegesToGroupReq) obj;
+        return new EqualsBuilder()
+                .append(groupName, that.groupName)
+                .append(privileges, that.privileges)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = groupName != null ? groupName.hashCode() : 0;
+        result = 31 * result + (privileges != null ? privileges.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "AddPrivilegesToGroupReq{" +
+                "groupName='" + groupName + '\'' +
+                ", privileges=" + privileges +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String groupName;
+        private List<String> privileges = new ArrayList<>();
+
+        private Builder() {}
+
+        public Builder groupName(String groupName) {
+            this.groupName = groupName;
+            return this;
+        }
+
+        public Builder privileges(List<String> privileges) {
+            this.privileges = privileges;
+            return this;
+        }
+
+        public AddPrivilegesToGroupReq build() {
+            return new AddPrivilegesToGroupReq(this);
+        }
+    }
 }

+ 54 - 4
sdk-core/src/main/java/io/milvus/v2/service/rbac/request/CreatePrivilegeGroupReq.java

@@ -19,11 +19,61 @@
 
 package io.milvus.v2.service.rbac.request;
 
-import lombok.Data;
-import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
 
-@Data
-@SuperBuilder
 public class CreatePrivilegeGroupReq {
     private String groupName;
+
+    private CreatePrivilegeGroupReq(Builder builder) {
+        this.groupName = builder.groupName;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        CreatePrivilegeGroupReq that = (CreatePrivilegeGroupReq) obj;
+        return new EqualsBuilder()
+                .append(groupName, that.groupName)
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return groupName != null ? groupName.hashCode() : 0;
+    }
+
+    @Override
+    public String toString() {
+        return "CreatePrivilegeGroupReq{" +
+                "groupName='" + groupName + '\'' +
+                '}';
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String groupName;
+
+        private Builder() {}
+
+        public Builder groupName(String groupName) {
+            this.groupName = groupName;
+            return this;
+        }
+
+        public CreatePrivilegeGroupReq build() {
+            return new CreatePrivilegeGroupReq(this);
+        }
+    }
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов