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

shenlin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git


The following commit(s) were added to refs/heads/main by this push:
     new c1f7877  Update api destination (#28)
c1f7877 is described below

commit c1f7877502057791ec27385755031e0272f5dc01
Author: zhaohai <[email protected]>
AuthorDate: Wed Oct 12 20:56:39 2022 +0800

    Update api destination (#28)
    
    update api destination service
---
 .../api/controller/ConnectionController.java       | 261 ++++++++++++---------
 .../api/dto/connection/ConnectionResponse.java     |   9 +
 .../api/dto/connection/GetConnectionResponse.java  |  17 +-
 .../api/controller/ConnectionControllerTest.java   |  48 +++-
 .../mybatis/converter/ApiDestinationConverter.java |   2 +-
 .../mybatis/mapper/EventApiDestinationMapper.java  |   2 +-
 .../MybatisApiDestinationRepository.java           |   2 +-
 .../mybatis/converter/ConnectConverter.java        |   3 +
 .../connect/mybatis/dataobject/ConnectionDO.java   |   3 +-
 .../mybatis/mapper/EventConnectionMapper.java      |   4 +-
 .../repository/MybatisConnectRepository.java       |  25 +-
 .../main/resources/db/migration/V2__baseline.sql   |  52 ++--
 .../resources/mybatis/EventConnectionMapper.xml    |  85 ++++---
 .../adapter/rpc/impl/SecretManagerAPIImpl.java     |   2 -
 .../common/exception/EventBridgeErrorCode.java     |   1 +
 .../apidestination/ApiDestinationService.java      |   4 +-
 .../domain/model/connection/ConnectionDTO.java     |  16 +-
 .../domain/model/connection/ConnectionService.java | 159 ++++++++-----
 .../connection/parameter/OAuthParameters.java      |   2 +-
 .../domain/repository/ConnectionRepository.java    |   6 +-
 .../domain/service/ConnectionServiceTest.java      |   8 +-
 21 files changed, 435 insertions(+), 276 deletions(-)

diff --git 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionController.java
 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionController.java
index 63be555..5fca028 100644
--- 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionController.java
+++ 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionController.java
@@ -17,44 +17,34 @@
 
 package org.apache.rocketmq.eventbridge.adapter.api.controller;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import javax.annotation.Resource;
-import javax.validation.ConstraintViolation;
-import javax.validation.Validator;
-
 import com.google.common.collect.Lists;
 import org.apache.rocketmq.eventbridge.adapter.api.annotations.WebLog;
 import org.apache.rocketmq.eventbridge.adapter.api.dto.BaseRequest;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.ConnectionResponse;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.CreateConnectionRequest;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.CreateConnectionResponse;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.DeleteConnectionRequest;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.DeleteConnectionResponse;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.GetConnectionRequest;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.GetConnectionResponse;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.ListConnectionRequest;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.ListConnectionResponse;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.ListEnumsResponse;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.UpdateConnectionRequest;
-import 
org.apache.rocketmq.eventbridge.adapter.api.dto.connection.UpdateConnectionResponse;
+import org.apache.rocketmq.eventbridge.adapter.api.dto.connection.*;
 import 
org.apache.rocketmq.eventbridge.domain.common.enums.AuthorizationTypeEnum;
 import org.apache.rocketmq.eventbridge.domain.common.enums.NetworkTypeEnum;
 import org.apache.rocketmq.eventbridge.domain.model.PaginationResult;
 import org.apache.rocketmq.eventbridge.domain.model.connection.ConnectionDTO;
 import 
org.apache.rocketmq.eventbridge.domain.model.connection.ConnectionService;
+import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.ApiKeyAuthParameters;
+import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.BasicAuthParameters;
+import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.OAuthParameters;
 import org.apache.rocketmq.eventbridge.domain.rpc.AccountAPI;
 import org.springframework.beans.BeanUtils;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import reactor.core.publisher.Mono;
 import reactor.util.context.Context;
 
+import javax.annotation.Resource;
+import javax.validation.ConstraintViolation;
+import javax.validation.Validator;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
 @RestController
 @RequestMapping("/connection/")
 public class ConnectionController {
@@ -69,122 +59,153 @@ public class ConnectionController {
     @WebLog
     @PostMapping("createConnection")
     public Mono<CreateConnectionResponse> createConnection(
-        @RequestBody CreateConnectionRequest createConnectionRequest) {
+            @RequestBody CreateConnectionRequest createConnectionRequest) {
         return Mono.subscriberContext()
-            .map(ctx -> {
-                final Set<ConstraintViolation<CreateConnectionRequest>> 
validate = validator.validate(
-                    createConnectionRequest);
-                List<String> errMessage = validate.stream()
-                    .map(ConstraintViolation::getMessage)
-                    .collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(errMessage)) {
-                    return new 
CreateConnectionResponse(null).parameterCheckFailRes(errMessage.toString());
-                }
-                ConnectionDTO connectionDTO = getEventConnectionWithBLOBs(ctx, 
createConnectionRequest);
-                return new 
CreateConnectionResponse(connectionService.createConnection(connectionDTO)).success();
-            });
+                .map(ctx -> {
+                    final Set<ConstraintViolation<CreateConnectionRequest>> 
validate = validator.validate(
+                            createConnectionRequest);
+                    List<String> errMessage = validate.stream()
+                            .map(ConstraintViolation::getMessage)
+                            .collect(Collectors.toList());
+                    if (!CollectionUtils.isEmpty(errMessage)) {
+                        return new 
CreateConnectionResponse(null).parameterCheckFailRes(errMessage.toString());
+                    }
+                    ConnectionDTO connectionDTO = 
getEventConnectionWithBLOBs(ctx, createConnectionRequest);
+                    return new 
CreateConnectionResponse(connectionService.createConnection(connectionDTO)).success();
+                });
     }
 
     @WebLog
     @PostMapping("deleteConnection")
     public Mono<DeleteConnectionResponse> deleteConnection(
-        @RequestBody DeleteConnectionRequest deleteConnectionRequest) {
+            @RequestBody DeleteConnectionRequest deleteConnectionRequest) {
         return Mono.subscriberContext()
-            .map(ctx -> {
-                final Set<ConstraintViolation<DeleteConnectionRequest>> 
validate = validator.validate(
-                    deleteConnectionRequest);
-                List<String> errMessage = validate.stream()
-                    .map(ConstraintViolation::getMessage)
-                    .collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(errMessage)) {
-                    return new 
DeleteConnectionResponse().parameterCheckFailRes(errMessage.toString());
-                }
-                
connectionService.deleteConnection(accountAPI.getResourceOwnerAccountId(ctx),
-                    deleteConnectionRequest.getConnectionName());
-                return new DeleteConnectionResponse().success();
-            });
+                .map(ctx -> {
+                    final Set<ConstraintViolation<DeleteConnectionRequest>> 
validate = validator.validate(
+                            deleteConnectionRequest);
+                    List<String> errMessage = validate.stream()
+                            .map(ConstraintViolation::getMessage)
+                            .collect(Collectors.toList());
+                    if (!CollectionUtils.isEmpty(errMessage)) {
+                        return new 
DeleteConnectionResponse().parameterCheckFailRes(errMessage.toString());
+                    }
+                    
connectionService.deleteConnection(accountAPI.getResourceOwnerAccountId(ctx),
+                            deleteConnectionRequest.getConnectionName());
+                    return new DeleteConnectionResponse().success();
+                });
     }
 
     @WebLog
     @PostMapping("updateConnection")
     public Mono<UpdateConnectionResponse> updateConnection(
-        @RequestBody UpdateConnectionRequest updateConnectionRequest) {
+            @RequestBody UpdateConnectionRequest updateConnectionRequest) {
         return Mono.subscriberContext()
-            .map(ctx -> {
-                final Set<ConstraintViolation<UpdateConnectionRequest>> 
validate = validator.validate(
-                    updateConnectionRequest);
-                List<String> errMessage = validate.stream()
-                    .map(ConstraintViolation::getMessage)
-                    .collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(errMessage)) {
-                    return new 
UpdateConnectionResponse().parameterCheckFailRes(errMessage.toString());
-                }
-                ConnectionDTO connectionDTO = getEventConnectionWithBLOBs(ctx, 
updateConnectionRequest);
-                connectionService.updateConnection(connectionDTO, 
accountAPI.getResourceOwnerAccountId(ctx));
-                return new UpdateConnectionResponse().success();
-            });
+                .map(ctx -> {
+                    final Set<ConstraintViolation<UpdateConnectionRequest>> 
validate = validator.validate(
+                            updateConnectionRequest);
+                    List<String> errMessage = validate.stream()
+                            .map(ConstraintViolation::getMessage)
+                            .collect(Collectors.toList());
+                    if (!CollectionUtils.isEmpty(errMessage)) {
+                        return new 
UpdateConnectionResponse().parameterCheckFailRes(errMessage.toString());
+                    }
+                    ConnectionDTO connectionDTO = 
getEventConnectionWithBLOBs(ctx, updateConnectionRequest);
+                    connectionService.updateConnection(connectionDTO, 
accountAPI.getResourceOwnerAccountId(ctx));
+                    return new UpdateConnectionResponse().success();
+                });
     }
 
     @WebLog
     @PostMapping("getConnection")
     public Mono<GetConnectionResponse> getConnection(@RequestBody 
GetConnectionRequest getConnectionRequest) {
         return Mono.subscriberContext()
-            .map(ctx -> {
-                final Set<ConstraintViolation<GetConnectionRequest>> validate 
= validator.validate(
-                    getConnectionRequest);
-                List<String> errMessage = validate.stream()
-                    .map(ConstraintViolation::getMessage)
-                    .collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(errMessage)) {
-                    return new GetConnectionResponse(null, null, null, 
null).parameterCheckFailRes(
-                        errMessage.toString());
-                }
-                final ConnectionDTO connectionDTO = 
connectionService.getConnection(
-                    accountAPI.getResourceOwnerAccountId(ctx), 
getConnectionRequest.getConnectionName());
-                return new 
GetConnectionResponse(connectionDTO.getConnectionName(), 
connectionDTO.getDescription(),
-                    connectionDTO.getNetworkParameters(), 
connectionDTO.getAuthParameters()).success();
-            });
+                .map(ctx -> {
+                    final Set<ConstraintViolation<GetConnectionRequest>> 
validate = validator.validate(
+                            getConnectionRequest);
+                    List<String> errMessage = validate.stream()
+                            .map(ConstraintViolation::getMessage)
+                            .collect(Collectors.toList());
+                    if (!CollectionUtils.isEmpty(errMessage)) {
+                        return new 
GetConnectionResponse(null).parameterCheckFailRes(
+                                errMessage.toString());
+                    }
+                    final List<ConnectionDTO> connectionDTOS = 
connectionService.getConnection(accountAPI.getResourceOwnerAccountId(ctx), 
getConnectionRequest.getConnectionName());
+                    List<ConnectionResponse> connectionResponses = 
Lists.newArrayList();
+                    connectionDTOS.forEach(connectionDTO -> {
+                        ConnectionResponse connectionResponse = new 
ConnectionResponse();
+                        BeanUtils.copyProperties(connectionDTO, 
connectionResponse);
+                        
connectionResponse.setGmtCreate(connectionDTO.getGmtCreate().getTime());
+                        
connectionResponse.setApiDestinationName(connectionDTO.getApiDestinationName());
+                        connectionResponse.setId(connectionDTO.getId());
+                        
connectionResponses.add(dataMasking(connectionResponse));
+                    });
+                    return new 
GetConnectionResponse(connectionResponses).success();
+                });
     }
 
     @WebLog
-    @PostMapping("listConnections")
-    public Mono<ListConnectionResponse> listConnections(@RequestBody 
ListConnectionRequest listConnectionRequest) {
+    @PostMapping("selectOneConnection")
+    public Mono<GetConnectionResponse> selectOneConnection(@RequestBody 
GetConnectionRequest getConnectionRequest) {
         return Mono.subscriberContext()
-            .map(ctx -> {
-                final Set<ConstraintViolation<ListConnectionRequest>> validate 
= validator.validate(
-                    listConnectionRequest);
-                List<String> errMessage = validate.stream()
-                    .map(ConstraintViolation::getMessage)
-                    .collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(errMessage)) {
-                    return new ListConnectionResponse(null, null, null, 
0).parameterCheckFailRes(errMessage.toString());
-                }
-                final PaginationResult<List<ConnectionDTO>> 
listPaginationResult = connectionService.listConnections(
-                    accountAPI.getResourceOwnerAccountId(ctx), 
listConnectionRequest.getConnectionNamePrefix(),
-                    listConnectionRequest.getNextToken(), 
listConnectionRequest.getMaxResults());
-                List<ConnectionResponse> connectionResponses = 
Lists.newArrayList();
-                listPaginationResult.getData()
-                    .forEach(connectionDTO -> {
+                .map(ctx -> {
+                    final Set<ConstraintViolation<GetConnectionRequest>> 
validate = validator.validate(getConnectionRequest);
+                    List<String> errMessage = 
validate.stream().map(ConstraintViolation::getMessage).collect(Collectors.toList());
+                    if (!CollectionUtils.isEmpty(errMessage)) {
+                        return new 
GetConnectionResponse(null).parameterCheckFailRes(errMessage.toString());
+                    }
+                    final List<ConnectionDTO> connectionDTOS = 
connectionService.getConnection(accountAPI.getResourceOwnerAccountId(ctx), 
getConnectionRequest.getConnectionName());
+                    List<ConnectionResponse> connectionResponses = 
Lists.newArrayList();
+                    connectionDTOS.forEach(connectionDTO -> {
                         ConnectionResponse connectionResponse = new 
ConnectionResponse();
                         BeanUtils.copyProperties(connectionDTO, 
connectionResponse);
+                        
connectionResponse.setGmtCreate(connectionDTO.getGmtCreate().getTime());
+                        
connectionResponse.setApiDestinationName(connectionDTO.getApiDestinationName());
+                        connectionResponse.setId(connectionDTO.getId());
                         connectionResponses.add(connectionResponse);
                     });
-                return new ListConnectionResponse(connectionResponses, 
listPaginationResult.getNextToken(),
-                    listPaginationResult.getTotal(), 
listConnectionRequest.getMaxResults()).success();
-            });
+                    return new 
GetConnectionResponse(connectionResponses).success();
+                });
+    }
+
+    @WebLog
+    @PostMapping("listConnections")
+    public Mono<ListConnectionResponse> listConnections(@RequestBody 
ListConnectionRequest listConnectionRequest) {
+        return Mono.subscriberContext()
+                .map(ctx -> {
+                    final Set<ConstraintViolation<ListConnectionRequest>> 
validate = validator.validate(
+                            listConnectionRequest);
+                    List<String> errMessage = validate.stream()
+                            .map(ConstraintViolation::getMessage)
+                            .collect(Collectors.toList());
+                    if (!CollectionUtils.isEmpty(errMessage)) {
+                        return new ListConnectionResponse(null, null, null, 
0).parameterCheckFailRes(errMessage.toString());
+                    }
+                    final PaginationResult<List<ConnectionDTO>> 
listPaginationResult = connectionService.listConnections(
+                            accountAPI.getResourceOwnerAccountId(ctx), 
listConnectionRequest.getConnectionNamePrefix(),
+                            listConnectionRequest.getNextToken(), 
listConnectionRequest.getMaxResults());
+                    List<ConnectionResponse> connectionResponses = 
Lists.newArrayList();
+                    listPaginationResult.getData()
+                            .forEach(connectionDTO -> {
+                                ConnectionResponse connectionResponse = new 
ConnectionResponse();
+                                BeanUtils.copyProperties(connectionDTO, 
connectionResponse);
+                                connectionResponses.add(connectionResponse);
+                            });
+                    return new ListConnectionResponse(connectionResponses, 
listPaginationResult.getNextToken(),
+                            listPaginationResult.getTotal(), 
listConnectionRequest.getMaxResults()).success();
+                });
     }
 
     @PostMapping("listEnumsResponse")
     public Mono<ListEnumsResponse> listEnumsResponse() {
         return Mono.subscriberContext()
-            .map(ctx -> {
-                ListEnumsResponse listEnumsResponse = new ListEnumsResponse();
-                
listEnumsResponse.setAuthorizationTypeEnums(Arrays.stream(AuthorizationTypeEnum.values())
-                    .collect(Collectors.toList()));
-                
listEnumsResponse.setNetworkTypeEnums(Arrays.stream(NetworkTypeEnum.values())
-                    .collect(Collectors.toList()));
-                return listEnumsResponse.success();
-            });
+                .map(ctx -> {
+                    ListEnumsResponse listEnumsResponse = new 
ListEnumsResponse();
+                    
listEnumsResponse.setAuthorizationTypeEnums(Arrays.stream(AuthorizationTypeEnum.values())
+                            .collect(Collectors.toList()));
+                    
listEnumsResponse.setNetworkTypeEnums(Arrays.stream(NetworkTypeEnum.values())
+                            .collect(Collectors.toList()));
+                    return listEnumsResponse.success();
+                });
     }
 
     private ConnectionDTO getEventConnectionWithBLOBs(Context ctx, BaseRequest 
baseRequest) {
@@ -194,4 +215,28 @@ public class ConnectionController {
         return connectionDTO;
     }
 
+    private ConnectionResponse dataMasking(ConnectionResponse 
connectionResponse) {
+        if (connectionResponse.getAuthParameters() == null) {
+            return connectionResponse;
+        }
+        ApiKeyAuthParameters apiKeyAuthParameters = 
connectionResponse.getAuthParameters().getApiKeyAuthParameters();
+        BasicAuthParameters basicAuthParameters = 
connectionResponse.getAuthParameters().getBasicAuthParameters();
+        OAuthParameters oauthParameters = 
connectionResponse.getAuthParameters().getOauthParameters();
+        if (apiKeyAuthParameters != null) {
+            apiKeyAuthParameters.setApiKeyValue("**");
+            
connectionResponse.getAuthParameters().setApiKeyAuthParameters(apiKeyAuthParameters);
+            return connectionResponse;
+        }
+        if (basicAuthParameters != null) {
+            basicAuthParameters.setPassword("**");
+            
connectionResponse.getAuthParameters().setBasicAuthParameters(basicAuthParameters);
+            return connectionResponse;
+        }
+        if (oauthParameters != null) {
+            OAuthParameters.ClientParameters clientParameters = 
oauthParameters.getClientParameters();
+            clientParameters.setClientSecret("**");
+            oauthParameters.setClientParameters(clientParameters);
+        }
+        return connectionResponse;
+    }
 }
diff --git 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/ConnectionResponse.java
 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/ConnectionResponse.java
index 9f06bf5..6d34fd3 100644
--- 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/ConnectionResponse.java
+++ 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/ConnectionResponse.java
@@ -42,4 +42,13 @@ public class ConnectionResponse extends BaseDTO {
     @SerializedName("AuthParameters")
     private AuthParameters authParameters;
 
+    @SerializedName("GmtCreate")
+    private Long gmtCreate;
+
+    @SerializedName("ApiDestinationName")
+    private String apiDestinationName;
+
+    @SerializedName("Id")
+    private Integer id;
+
 }
diff --git 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/GetConnectionResponse.java
 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/GetConnectionResponse.java
index ea7e192..ab0ed57 100644
--- 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/GetConnectionResponse.java
+++ 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/connection/GetConnectionResponse.java
@@ -24,8 +24,8 @@ import lombok.Setter;
 import lombok.ToString;
 import org.apache.rocketmq.eventbridge.adapter.api.dto.BaseResponse;
 import 
org.apache.rocketmq.eventbridge.domain.common.exception.EventBridgeErrorCode;
-import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.AuthParameters;
-import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.NetworkParameters;
+
+import java.util.List;
 
 @AllArgsConstructor
 @Getter
@@ -33,17 +33,8 @@ import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.Network
 @ToString
 public class GetConnectionResponse extends BaseResponse {
 
-    @SerializedName("ConnectionName")
-    private String connectionName;
-
-    @SerializedName("Description")
-    private String description;
-
-    @SerializedName("NetworkParameters")
-    private NetworkParameters networkParameters;
-
-    @SerializedName("AuthParameters")
-    private AuthParameters authParameters;
+    @SerializedName("Connections")
+    private List<ConnectionResponse> connections;
 
     public GetConnectionResponse success() {
         setCode(EventBridgeErrorCode.Success.getCode());
diff --git 
a/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionControllerTest.java
 
b/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionControllerTest.java
index e765868..ee0c0d3 100644
--- 
a/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionControllerTest.java
+++ 
b/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ConnectionControllerTest.java
@@ -52,10 +52,7 @@ import reactor.core.publisher.Mono;
 
 import javax.validation.ConstraintViolation;
 import javax.validation.Validator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.UUID;
+import java.util.*;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -186,6 +183,9 @@ public class ConnectionControllerTest {
         networkParameters.setVswitcheId(UUID.randomUUID()
             .toString());
         connectionDTO.setNetworkParameters(networkParameters);
+        connectionDTO.setGmtCreate(new Date());
+        List<ConnectionDTO> list = Lists.newArrayList();
+        list.add(connectionDTO);
         AuthParameters authParameters = new AuthParameters();
         BasicAuthParameters basicAuthParameters = new BasicAuthParameters();
         basicAuthParameters.setPassword(UUID.randomUUID()
@@ -196,7 +196,7 @@ public class ConnectionControllerTest {
         
authParameters.setAuthorizationType(AuthorizationTypeEnum.BASIC_AUTH.getType());
         connectionDTO.setAuthParameters(authParameters);
         BDDMockito.given(connectionService.getConnection(any(), any()))
-            .willReturn(connectionDTO);
+            .willReturn(list);
         GetConnectionRequest getConnectionRequest = new GetConnectionRequest();
         getConnectionRequest.setConnectionName(UUID.randomUUID()
             .toString());
@@ -206,6 +206,44 @@ public class ConnectionControllerTest {
             .getCode(), EventBridgeErrorCode.Success.getCode());
     }
 
+    @Test
+    public void testSelectOneConnection() {
+        Set<ConstraintViolation<GetConnectionRequest>> constraintViolations = 
new HashSet<>();
+        Mockito.when(validator.validate(any(GetConnectionRequest.class)))
+                .thenReturn(constraintViolations);
+        final ConnectionDTO connectionDTO = new ConnectionDTO();
+        NetworkParameters networkParameters = new NetworkParameters();
+        
networkParameters.setNetworkType(NetworkTypeEnum.PUBLIC_NETWORK.getNetworkType());
+        networkParameters.setSecurityGroupId(UUID.randomUUID()
+                .toString());
+        networkParameters.setVpcId(UUID.randomUUID()
+                .toString());
+        networkParameters.setVswitcheId(UUID.randomUUID()
+                .toString());
+        connectionDTO.setNetworkParameters(networkParameters);
+        connectionDTO.setGmtCreate(new Date());
+        List<ConnectionDTO> list = Lists.newArrayList();
+        list.add(connectionDTO);
+        AuthParameters authParameters = new AuthParameters();
+        BasicAuthParameters basicAuthParameters = new BasicAuthParameters();
+        basicAuthParameters.setPassword(UUID.randomUUID()
+                .toString());
+        basicAuthParameters.setUsername(UUID.randomUUID()
+                .toString());
+        authParameters.setBasicAuthParameters(basicAuthParameters);
+        
authParameters.setAuthorizationType(AuthorizationTypeEnum.BASIC_AUTH.getType());
+        connectionDTO.setAuthParameters(authParameters);
+        BDDMockito.given(connectionService.getConnection(any(), any()))
+                .willReturn(list);
+        GetConnectionRequest getConnectionRequest = new GetConnectionRequest();
+        getConnectionRequest.setConnectionName(UUID.randomUUID()
+                .toString());
+        final Mono<GetConnectionResponse> getConnectionResponse = 
connectionController.selectOneConnection(
+                getConnectionRequest);
+        Assert.assertEquals(getConnectionResponse.block()
+                .getCode(), EventBridgeErrorCode.Success.getCode());
+    }
+
     @Test
     public void testListConnections() {
         PaginationResult<List<ConnectionDTO>> result = new PaginationResult();
diff --git 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/converter/ApiDestinationConverter.java
 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/converter/ApiDestinationConverter.java
index a2a50d5..bb4e1af 100644
--- 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/converter/ApiDestinationConverter.java
+++ 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/converter/ApiDestinationConverter.java
@@ -48,7 +48,7 @@ public class ApiDestinationConverter {
         return apiDestinationDTO;
     }
 
-    public static List<ApiDestinationDTO> 
doListConverterDtoList(List<ApiDestinationDO> apiDestinationDOS) {
+    public static List<ApiDestinationDTO> 
doListCoverterDtoList(List<ApiDestinationDO> apiDestinationDOS) {
         return 
apiDestinationDOS.stream().map(ApiDestinationConverter::doConverterDto).collect(Collectors.toList());
     }
 
diff --git 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/mapper/EventApiDestinationMapper.java
 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/mapper/EventApiDestinationMapper.java
index 783c5cc..df64f1d 100644
--- 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/mapper/EventApiDestinationMapper.java
+++ 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/mapper/EventApiDestinationMapper.java
@@ -63,7 +63,7 @@ public interface EventApiDestinationMapper {
      * @mbggenerated
      */
     List<ApiDestinationDO> listApiDestinations(@Param("accountId") String 
accountId, @Param("name") String name,
-                                                @Param("nextToken") int 
nextToken, @Param("maxResults") int maxResults);
+                                               @Param("nextToken") int 
nextToken, @Param("maxResults") int maxResults);
 
     /**
      * 通过用户id和名称查询
diff --git 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/repository/MybatisApiDestinationRepository.java
 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/repository/MybatisApiDestinationRepository.java
index 195b1a5..1258391 100644
--- 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/repository/MybatisApiDestinationRepository.java
+++ 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/apidestination/mybatis/repository/MybatisApiDestinationRepository.java
@@ -65,7 +65,7 @@ public class MybatisApiDestinationRepository implements 
ApiDestinationRepository
     @Override
     public List<ApiDestinationDTO> listApiDestinations(String accountId, 
String apiDestinationName, String nextToken,
                                                        int maxResults) {
-        return 
ApiDestinationConverter.doListConverterDtoList(eventApiDestinationMapper.listApiDestinations(accountId,
 apiDestinationName, Integer.parseInt(nextToken), maxResults));
+        return 
ApiDestinationConverter.doListCoverterDtoList(eventApiDestinationMapper.listApiDestinations(accountId,
 apiDestinationName, Integer.parseInt(nextToken), maxResults));
     }
 
     @Override
diff --git 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/converter/ConnectConverter.java
 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/converter/ConnectConverter.java
index 5eca675..60a5bd4 100644
--- 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/converter/ConnectConverter.java
+++ 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/converter/ConnectConverter.java
@@ -38,6 +38,9 @@ public class ConnectConverter {
         connectionDTO.setAuthParameters(new 
Gson().fromJson(connectionDO.getAuthParameters(), AuthParameters.class));
         connectionDTO.setNetworkParameters(
             new Gson().fromJson(connectionDO.getNetworkParameters(), 
NetworkParameters.class));
+        connectionDTO.setGmtCreate(connectionDO.getGmtCreate());
+        connectionDTO.setId(connectionDO.getId());
+        
connectionDTO.setApiDestinationName(connectionDO.getApiDestinationName());
         return connectionDTO;
     }
 
diff --git 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/dataobject/ConnectionDO.java
 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/dataobject/ConnectionDO.java
index 3c44d53..5433921 100644
--- 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/dataobject/ConnectionDO.java
+++ 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/dataobject/ConnectionDO.java
@@ -110,6 +110,7 @@ public class ConnectionDO implements Serializable {
      */
     private Date gmtModify;
 
+    private String apiDestinationName;
 
-
+    private Integer id;
 }
diff --git 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/mapper/EventConnectionMapper.java
 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/mapper/EventConnectionMapper.java
index 55c37a7..c8b43b0 100644
--- 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/mapper/EventConnectionMapper.java
+++ 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/mapper/EventConnectionMapper.java
@@ -63,6 +63,8 @@ public interface EventConnectionMapper {
      */
     ConnectionDO selectByPrimaryKey(Integer id);
 
+    ConnectionDO selectByName(String name);
+
     /**
      * 分页查询
      *
@@ -81,7 +83,7 @@ public interface EventConnectionMapper {
      *
      * @mbggenerated
      */
-    ConnectionDO selectByNameAndAccountId(@Param("accountId") String 
accountId, @Param("name") String name);
+    List<ConnectionDO> selectByNameAndAccountId(@Param("accountId") String 
accountId, @Param("name") String name);
 
     /**
      * This method was generated by MyBatis Generator.
diff --git 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/repository/MybatisConnectRepository.java
 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/repository/MybatisConnectRepository.java
index 691f1fa..cdb8e51 100644
--- 
a/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/repository/MybatisConnectRepository.java
+++ 
b/adapter/persistence/src/main/java/org/apache/rocketmq/eventbridge/adapter/persistence/connect/mybatis/repository/MybatisConnectRepository.java
@@ -17,6 +17,8 @@
 
 package 
org.apache.rocketmq.eventbridge.adapter.persistence.connect.mybatis.repository;
 
+import com.google.gson.Gson;
+import lombok.extern.slf4j.Slf4j;
 import 
org.apache.rocketmq.eventbridge.adapter.persistence.connect.mybatis.converter.ConnectConverter;
 import 
org.apache.rocketmq.eventbridge.adapter.persistence.connect.mybatis.dataobject.ConnectionDO;
 import 
org.apache.rocketmq.eventbridge.adapter.persistence.connect.mybatis.mapper.EventConnectionMapper;
@@ -27,7 +29,7 @@ import org.springframework.stereotype.Repository;
 import java.util.Date;
 import java.util.List;
 
-
+@Slf4j
 @Repository
 public class MybatisConnectRepository implements ConnectionRepository {
 
@@ -58,19 +60,32 @@ public class MybatisConnectRepository implements 
ConnectionRepository {
     }
 
     @Override
-    public ConnectionDTO getConnection(String accountId, String 
connectionName) {
-        final ConnectionDO connectionDO = 
eventConnectionMapper.selectByNameAndAccountId(accountId, connectionName);
-        return ConnectConverter.doConvertDto(connectionDO);
+    public List<ConnectionDTO> getConnection(String accountId, String 
connectionName) {
+        final List<ConnectionDO> connectionDO = 
eventConnectionMapper.selectByNameAndAccountId(accountId, connectionName);
+        log.info("MybatisConnectRepository | connectionDO :{}", new 
Gson().toJson(connectionDO));
+        return ConnectConverter.doListConvertDtoList(connectionDO);
     }
 
     @Override
     public List<ConnectionDTO> listConnections(String accountId, String 
connectionName, String nextToken,
                                                int maxResults) {
-        return 
ConnectConverter.doListConvertDtoList(eventConnectionMapper.listConnections(accountId,
 connectionName, Integer.parseInt(nextToken), maxResults));
+        List<ConnectionDO> connectionDOS = 
eventConnectionMapper.listConnections(accountId, connectionName, 
Integer.parseInt(nextToken), maxResults);
+        return ConnectConverter.doListConvertDtoList(connectionDOS);
     }
 
     @Override
     public int getConnectionCount(String accountId) {
         return eventConnectionMapper.getConnectionCount(accountId);
     }
+
+    @Override
+    public ConnectionDTO getConnectionById(Integer id) {
+        ConnectionDO connectionDO = 
eventConnectionMapper.selectByPrimaryKey(id);
+        return ConnectConverter.doConvertDto(connectionDO);
+    }
+
+    @Override
+    public ConnectionDTO getConnectionByName(String name) {
+        return 
ConnectConverter.doConvertDto(eventConnectionMapper.selectByName(name));
+    }
 }
diff --git 
a/adapter/persistence/src/main/resources/db/migration/V2__baseline.sql 
b/adapter/persistence/src/main/resources/db/migration/V2__baseline.sql
index 4a104e0..1d04ec5 100644
--- a/adapter/persistence/src/main/resources/db/migration/V2__baseline.sql
+++ b/adapter/persistence/src/main/resources/db/migration/V2__baseline.sql
@@ -14,34 +14,34 @@
 # limitations under the License.
 
 CREATE TABLE IF NOT EXISTS `event_connection` (
-  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
-  `account_id` varchar(255) NOT NULL COMMENT 'event_connection account id',
-  `name` varchar(128) NOT NULL DEFAULT '' COMMENT '名称',
-  `authorization_type` varchar(128) NOT NULL DEFAULT '' COMMENT '授权类型',
-  `auth_parameters` text NOT NULL COMMENT '',
-  `network_type` varchar(128) NOT NULL DEFAULT '' COMMENT '网络类型',
-  `network_parameters` text DEFAULT NULL COMMENT '网络配置',
-  `description` varchar(255) DEFAULT NULL COMMENT 'a description about the 
event_connection',
-  `gmt_create` datetime DEFAULT NULL COMMENT 'create time',
-  `gmt_modify` datetime DEFAULT NULL COMMENT 'modify time',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name_uniq_key` (`name`)
-) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='event connection meta'
+    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+    `account_id` varchar(255) NOT NULL COMMENT 'event_connection account id',
+    `name` varchar(128) NOT NULL DEFAULT '' COMMENT '名称',
+    `authorization_type` varchar(128) DEFAULT NULL COMMENT '授权类型',
+    `auth_parameters` text DEFAULT NULL COMMENT '',
+    `network_type` varchar(128) NOT NULL DEFAULT '' COMMENT '网络类型',
+    `network_parameters` text DEFAULT NULL COMMENT '网络配置',
+    `description` varchar(255) DEFAULT NULL COMMENT 'a description about the 
event_connection',
+    `gmt_create` datetime DEFAULT NULL COMMENT 'create time',
+    `gmt_modify` datetime DEFAULT NULL COMMENT 'modify time',
+    PRIMARY KEY (`id`),
+    UNIQUE KEY `name_uniq_key` (`name`)
+    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='event connection meta'
 ;
 
 
 CREATE TABLE IF NOT EXISTS `event_api_destination` (
-  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
-  `account_id` varchar(255) NOT NULL COMMENT 'event_api_destination account 
id',
-  `name` varchar(128) NOT NULL DEFAULT '' COMMENT '名称',
-  `protocol` varchar(128) NOT NULL DEFAULT '' COMMENT '类型',
-  `api_params` text NOT NULL COMMENT 'API 参数',
-  `connection_name` varchar(128) DEFAULT NULL COMMENT '连接信息',
-  `invocation_rate_limit_per_second` int(11) COMMENT '每秒推送速率',
-  `description` varchar(255) DEFAULT NULL COMMENT 'a description about the 
event_api_destination',
-  `gmt_create` datetime DEFAULT NULL COMMENT 'create time',
-  `gmt_modify` datetime DEFAULT NULL COMMENT 'modify time',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name_uniq_key` (`name`)
-) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='event api destination meta'
+    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+    `account_id` varchar(255) NOT NULL COMMENT 'event_api_destination account 
id',
+    `name` varchar(128) NOT NULL DEFAULT '' COMMENT '名称',
+    `protocol` varchar(128) NOT NULL DEFAULT '' COMMENT '类型',
+    `api_params` text NOT NULL COMMENT 'API 参数',
+    `connection_name` varchar(128) DEFAULT NULL COMMENT '连接信息',
+    `invocation_rate_limit_per_second` int(11) COMMENT '每秒推送速率',
+    `description` varchar(255) DEFAULT NULL COMMENT 'a description about the 
event_api_destination',
+    `gmt_create` datetime DEFAULT NULL COMMENT 'create time',
+    `gmt_modify` datetime DEFAULT NULL COMMENT 'modify time',
+    PRIMARY KEY (`id`),
+    UNIQUE KEY `name_uniq_key` (`name`)
+    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='event api destination meta'
 ;
diff --git 
a/adapter/persistence/src/main/resources/mybatis/EventConnectionMapper.xml 
b/adapter/persistence/src/main/resources/mybatis/EventConnectionMapper.xml
index d17ac40..bfb37d0 100644
--- a/adapter/persistence/src/main/resources/mybatis/EventConnectionMapper.xml
+++ b/adapter/persistence/src/main/resources/mybatis/EventConnectionMapper.xml
@@ -17,6 +17,7 @@
       This element is automatically generated by MyBatis Generator, do not 
modify.
     -->
     <result column="account_id" property="accountId" jdbcType="VARCHAR" />
+    <result column="id" property="id" jdbcType="INTEGER" />
     <result column="name" property="name" jdbcType="VARCHAR" />
     <result column="authorization_type" property="authorizationType" 
jdbcType="VARCHAR" />
     <result column="network_type" property="networkType" jdbcType="VARCHAR" />
@@ -31,6 +32,7 @@
     -->
     <result column="auth_parameters" property="authParameters" 
jdbcType="LONGVARCHAR" />
     <result column="network_parameters" property="networkParameters" 
jdbcType="LONGVARCHAR" />
+    <result column="apiDestinationName" property="apiDestinationName" 
jdbcType="VARCHAR" />
   </resultMap>
   <sql id="Base_Column_List" >
     <!--
@@ -51,32 +53,49 @@
       WARNING - @mbggenerated
       This element is automatically generated by MyBatis Generator, do not 
modify.
     -->
-    select 
+    select
     <include refid="Base_Column_List" />
     ,
     <include refid="Blob_Column_List" />
     from event_connection
     where id = #{id,jdbcType=INTEGER}
   </select>
-  <select id="listConnections" resultMap="ResultMapWithBLOBs" 
parameterType="java.util.Map" >
+  <select id="selectByName" resultMap="ResultMapWithBLOBs" 
parameterType="java.lang.String" >
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not 
modify.
+    -->
     select
     <include refid="Base_Column_List" />
     ,
     <include refid="Blob_Column_List" />
     from event_connection
+    where name = #{name,jdbcType=VARCHAR}
+  </select>
+  <select id="listConnections" resultMap="ResultMapWithBLOBs" 
parameterType="java.util.Map" >
+    select
+    ec.id, ec.account_id, ec.name, ec.authorization_type, ec.network_type, 
ec.description, ec.gmt_create, ec.gmt_modify,
+    ec.auth_parameters, ec.network_parameters, ead.name as apiDestinationName
+    from event_connection ec
+    left join event_api_destination ead
+    on ec.name = ead.connection_name
     <where>
-      <if test="accountId != null and accountId != ''"> account_id = 
#{accountId}</if>
-      <if test="name != null and name != ''">and name like 
concat('%',#{name},'%')</if>
+      <if test="accountId != null and accountId != ''"> ec.account_id = 
#{accountId}</if>
+      <if test="name != null and name != ''">and ec.name like 
concat('%',#{name},'%')</if>
     </where>
-    order by gmt_modify desc LIMIT #{nextToken} , #{maxResults}
+    order by ec.gmt_modify desc LIMIT #{nextToken} , #{maxResults}
   </select>
   <select id="selectByNameAndAccountId" resultMap="ResultMapWithBLOBs">
     select
-    <include refid="Base_Column_List" />
-    ,
-    <include refid="Blob_Column_List" />
-    from event_connection
-    where account_id = #{accountId,jdbcType=VARCHAR} AND name = 
#{name,jdbcType=VARCHAR}
+    ec.id, ec.account_id, ec.name, ec.authorization_type, ec.network_type, 
ec.description, ec.gmt_create, ec.gmt_modify,
+    ec.auth_parameters, ec.network_parameters, ead.name as apiDestinationName
+    from event_connection ec
+    left join event_api_destination ead
+    on ec.name = ead.connection_name
+    <where>
+      <if test="accountId != null and accountId != ''"> ec.account_id = 
#{accountId}</if>
+      <if test="name != null and name != ''">and ec.name = 
#{name,jdbcType=VARCHAR}</if>
+    </where>
   </select>
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
     <!--
@@ -96,13 +115,13 @@
       This element is automatically generated by MyBatis Generator, do not 
modify.
     -->
     insert into event_connection (id, account_id, name,
-    authorization_type, network_type, description, 
-      gmt_create, gmt_modify, auth_parameters, 
-      network_parameters)
-    values (#{id,jdbcType=INTEGER}, #{accountId,jdbcType=VARCHAR}, 
#{name,jdbcType=VARCHAR}, 
-      #{authorizationType,jdbcType=VARCHAR}, #{networkType,jdbcType=VARCHAR}, 
#{description,jdbcType=VARCHAR},
-      #{gmtCreate,jdbcType=TIMESTAMP}, #{gmtModify,jdbcType=TIMESTAMP}, 
#{authParameters,jdbcType=LONGVARCHAR}, 
-      #{networkParameters,jdbcType=LONGVARCHAR})
+    authorization_type, network_type, description,
+    gmt_create, gmt_modify, auth_parameters,
+    network_parameters)
+    values (#{id,jdbcType=INTEGER}, #{accountId,jdbcType=VARCHAR}, 
#{name,jdbcType=VARCHAR},
+    #{authorizationType,jdbcType=VARCHAR}, #{networkType,jdbcType=VARCHAR}, 
#{description,jdbcType=VARCHAR},
+    #{gmtCreate,jdbcType=TIMESTAMP}, #{gmtModify,jdbcType=TIMESTAMP}, 
#{authParameters,jdbcType=LONGVARCHAR},
+    #{networkParameters,jdbcType=LONGVARCHAR})
   </insert>
   <insert id="insertSelective" 
parameterType="org.apache.rocketmq.eventbridge.adapter.persistence.connect.mybatis.dataobject.ConnectionDO"
 >
     <!--
@@ -215,9 +234,7 @@
       <if test="name != null" >
         name = #{name,jdbcType=VARCHAR},
       </if>
-      <if test="authorizationType != null" >
-        authorization_type = #{authorizationType,jdbcType=VARCHAR},
-      </if>
+      authorization_type = #{authorizationType,jdbcType=VARCHAR},
       <if test="networkType != null" >
         network_type = #{networkType,jdbcType=VARCHAR},
       </if>
@@ -230,9 +247,7 @@
       <if test="gmtModify != null" >
         gmt_modify = #{gmtModify,jdbcType=TIMESTAMP},
       </if>
-      <if test="authParameters != null" >
-        auth_parameters = #{authParameters,jdbcType=LONGVARCHAR},
-      </if>
+      auth_parameters = #{authParameters,jdbcType=LONGVARCHAR},
       <if test="networkParameters != null" >
         network_parameters = #{networkParameters,jdbcType=LONGVARCHAR},
       </if>
@@ -254,14 +269,14 @@
     -->
     update event_connection
     set account_id = #{accountId,jdbcType=VARCHAR},
-      name = #{name,jdbcType=VARCHAR},
+    name = #{name,jdbcType=VARCHAR},
     authorization_type = #{authorizationType,jdbcType=VARCHAR},
-      network_type = #{networkType,jdbcType=VARCHAR},
-      description = #{description,jdbcType=VARCHAR},
-      gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},
-      gmt_modify = #{gmtModify,jdbcType=TIMESTAMP},
-      auth_parameters = #{authParameters,jdbcType=LONGVARCHAR},
-      network_parameters = #{networkParameters,jdbcType=LONGVARCHAR}
+    network_type = #{networkType,jdbcType=VARCHAR},
+    description = #{description,jdbcType=VARCHAR},
+    gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},
+    gmt_modify = #{gmtModify,jdbcType=TIMESTAMP},
+    auth_parameters = #{authParameters,jdbcType=LONGVARCHAR},
+    network_parameters = #{networkParameters,jdbcType=LONGVARCHAR}
     where id = #{id,jdbcType=INTEGER}
   </update>
   <update id="updateByPrimaryKey" 
parameterType="org.apache.rocketmq.eventbridge.adapter.persistence.connect.mybatis.dataobject.ConnectionDO"
 >
@@ -271,12 +286,12 @@
     -->
     update event_connection
     set account_id = #{accountId,jdbcType=VARCHAR},
-      name = #{name,jdbcType=VARCHAR},
+    name = #{name,jdbcType=VARCHAR},
     authorization_type = #{authorizationType,jdbcType=VARCHAR},
-      network_type = #{networkType,jdbcType=VARCHAR},
-      description = #{description,jdbcType=VARCHAR},
-      gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},
-      gmt_modify = #{gmtModify,jdbcType=TIMESTAMP}
+    network_type = #{networkType,jdbcType=VARCHAR},
+    description = #{description,jdbcType=VARCHAR},
+    gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},
+    gmt_modify = #{gmtModify,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=INTEGER}
   </update>
 </mapper>
\ No newline at end of file
diff --git 
a/adapter/rpc/src/main/java/org/apache/rocketmq/eventbridge/adapter/rpc/impl/SecretManagerAPIImpl.java
 
b/adapter/rpc/src/main/java/org/apache/rocketmq/eventbridge/adapter/rpc/impl/SecretManagerAPIImpl.java
index e25c104..49886be 100644
--- 
a/adapter/rpc/src/main/java/org/apache/rocketmq/eventbridge/adapter/rpc/impl/SecretManagerAPIImpl.java
+++ 
b/adapter/rpc/src/main/java/org/apache/rocketmq/eventbridge/adapter/rpc/impl/SecretManagerAPIImpl.java
@@ -17,11 +17,9 @@
 
 package org.apache.rocketmq.eventbridge.adapter.rpc.impl;
 
-import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.eventbridge.domain.rpc.SecretManagerAPI;
 import org.springframework.stereotype.Component;
 
-@Slf4j
 @Component
 public class SecretManagerAPIImpl implements SecretManagerAPI {
 
diff --git 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/common/exception/EventBridgeErrorCode.java
 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/common/exception/EventBridgeErrorCode.java
index 766aa3b..504de20 100644
--- 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/common/exception/EventBridgeErrorCode.java
+++ 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/common/exception/EventBridgeErrorCode.java
@@ -96,6 +96,7 @@ public enum EventBridgeErrorCode implements BaseErrorCode {
     ConnectionNotExist(409, "ConnectionNotExist", "The Connection [{0}] not 
existed!"),
     LimitSizeInvalid(409, "LimitSizeInvalid", "The limit size of page is 
invalid, which must greater than 0 and less than [{0}]."),
     NextTokenInvalid(409, "NextTokenInvalid", "The next token of page is 
invalid. which should be {[0]}."),
+    OauthHttpParametersEmpty(409, "OauthHttpParametersEmpty", 
"OauthHttpParameters is Empty."),
 
     //API Destination
     ApiDestinationNameInvalid(409, "ApiDestinationNameInvalid", "The 
api-destination name [{0}] is invalid! Which should match the pattern [{1}]."),
diff --git 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
index 77e25e4..1a09ad6 100644
--- 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
+++ 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/apidestination/ApiDestinationService.java
@@ -77,7 +77,7 @@ public class ApiDestinationService extends 
AbstractResourceService {
     public ApiDestinationDTO getApiDestination(String accountId, String 
apiDestinationName) {
         try {
             if (checkApiDestination(accountId, apiDestinationName) == null) {
-                throw new 
EventBridgeException(EventBridgeErrorCode.ApiDestinationNotExist, accountId);
+                throw new 
EventBridgeException(EventBridgeErrorCode.ApiDestinationNotExist, 
apiDestinationName);
             }
             return apiDestinationRepository.getApiDestination(accountId, 
apiDestinationName);
         } catch (Exception e) {
@@ -94,7 +94,7 @@ public class ApiDestinationService extends 
AbstractResourceService {
     public Boolean deleteApiDestination(String accountId, String 
apiDestinationName) {
         try {
             if (checkApiDestination(accountId, apiDestinationName) == null) {
-                throw new 
EventBridgeException(EventBridgeErrorCode.ApiDestinationNotExist, accountId);
+                throw new 
EventBridgeException(EventBridgeErrorCode.ApiDestinationNotExist, 
apiDestinationName);
             }
             return apiDestinationRepository.deleteApiDestination(accountId, 
apiDestinationName);
         } catch (Exception e) {
diff --git 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionDTO.java
 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionDTO.java
index 5dfb26e..0c26896 100644
--- 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionDTO.java
+++ 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionDTO.java
@@ -17,29 +17,33 @@
 
 package org.apache.rocketmq.eventbridge.domain.model.connection;
 
-import com.google.gson.annotations.SerializedName;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.AuthParameters;
 import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.NetworkParameters;
 
+import java.io.Serializable;
+import java.util.Date;
+
 @Getter
 @Setter
 @ToString
-public class ConnectionDTO {
+public class ConnectionDTO implements Serializable {
 
+    private static final long serialVersionUID = 7351924623576926203L;
+    private Integer id;
     private String accountId;
 
-    @SerializedName("ConnectionName")
     private String connectionName;
 
-    @SerializedName("Description")
     private String description;
 
-    @SerializedName("NetworkParameters")
     private NetworkParameters networkParameters;
 
-    @SerializedName("AuthParameters")
     private AuthParameters authParameters;
+
+    private Date gmtCreate;
+
+    private String apiDestinationName;
 }
diff --git 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
index e5d5f8b..8a0e5a5 100644
--- 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
+++ 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/ConnectionService.java
@@ -20,19 +20,13 @@ package 
org.apache.rocketmq.eventbridge.domain.model.connection;
 import com.google.common.collect.Maps;
 import com.google.gson.Gson;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.eventbridge.domain.common.EventBridgeConstants;
 import org.apache.rocketmq.eventbridge.domain.common.enums.NetworkTypeEnum;
 import 
org.apache.rocketmq.eventbridge.domain.common.exception.EventBridgeErrorCode;
 import org.apache.rocketmq.eventbridge.domain.model.AbstractResourceService;
 import org.apache.rocketmq.eventbridge.domain.model.PaginationResult;
-import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.ApiKeyAuthParameters;
-import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.AuthParameters;
-import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.BasicAuthParameters;
-import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.BodyParameter;
-import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.HeaderParameter;
-import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.OAuthHttpParameters;
-import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.OAuthParameters;
-import 
org.apache.rocketmq.eventbridge.domain.model.connection.parameter.QueryStringParameter;
+import org.apache.rocketmq.eventbridge.domain.model.connection.parameter.*;
 import org.apache.rocketmq.eventbridge.domain.repository.ConnectionRepository;
 import org.apache.rocketmq.eventbridge.domain.rpc.NetworkServiceAPI;
 import org.apache.rocketmq.eventbridge.domain.rpc.SecretManagerAPI;
@@ -64,13 +58,14 @@ public class ConnectionService extends 
AbstractResourceService {
     @Transactional(rollbackFor = Exception.class, propagation = 
Propagation.REQUIRED)
     public String createConnection(ConnectionDTO connectionDTO) {
         try {
-            if (checkConnection(connectionDTO.getAccountId(), 
connectionDTO.getConnectionName()) != null) {
+            if 
(!CollectionUtils.isEmpty(checkConnection(connectionDTO.getAccountId(), 
connectionDTO.getConnectionName()))) {
                 throw new 
EventBridgeException(EventBridgeErrorCode.ConnectionAlreadyExist, 
connectionDTO.getConnectionName());
             }
             
super.checkQuota(this.getConnectionCount(connectionDTO.getAccountId()), 
EventBridgeConstants.CONNECTION_COUNT_LIMIT, ConnectionCountExceedLimit);
-            checkAuth(connectionDTO.getAuthParameters());
             
checkNetworkType(connectionDTO.getNetworkParameters().getNetworkType());
-            
connectionDTO.setAuthParameters(setSecretData(connectionDTO.getAuthParameters(),
 connectionDTO.getAccountId(), connectionDTO.getConnectionName()));
+            if (connectionDTO.getAuthParameters() != null) {
+                
connectionDTO.setAuthParameters(setSecretData(connectionDTO.getAuthParameters(),
 connectionDTO.getAccountId(), connectionDTO.getConnectionName()));
+            }
             if (connectionRepository.createConnection(connectionDTO)) {
                 if 
(NetworkTypeEnum.PRIVATE_NETWORK.getNetworkType().equals(connectionDTO.getNetworkParameters().getNetworkType()))
 {
                     networkServiceAPI.createPrivateNetwork();
@@ -87,15 +82,15 @@ public class ConnectionService extends 
AbstractResourceService {
     @Transactional(rollbackFor = Exception.class, propagation = 
Propagation.REQUIRED)
     public void deleteConnection(String accountId, String connectionName) {
         try {
-            if (checkConnection(accountId, connectionName) == null) {
+            if (CollectionUtils.isEmpty(checkConnection(accountId, 
connectionName))) {
                 throw new 
EventBridgeException(EventBridgeErrorCode.ConnectionNotExist, connectionName);
             }
-            final ConnectionDTO connection = getConnection(accountId, 
connectionName);
-            if 
(NetworkTypeEnum.PRIVATE_NETWORK.getNetworkType().equals(connection.getNetworkParameters().getNetworkType()))
 {
+            List<ConnectionDTO> connection = getConnection(accountId, 
connectionName);
+            ConnectionDTO connectionDTO = connection.get(0);
+            if 
(NetworkTypeEnum.PRIVATE_NETWORK.getNetworkType().equals(connectionDTO.getNetworkParameters().getNetworkType()))
 {
                 networkServiceAPI.deletePrivateNetwork();
             }
             connectionRepository.deleteConnection(accountId, connectionName);
-            
secretManagerAPI.deleteSecretName(secretManagerAPI.getSecretName(accountId, 
connectionName));
         } catch (Exception e) {
             log.error("ConnectionService | deleteConnection | error", e);
             throw new EventBridgeException(e);
@@ -105,12 +100,13 @@ public class ConnectionService extends 
AbstractResourceService {
     @Transactional(rollbackFor = Exception.class, propagation = 
Propagation.REQUIRED)
     public void updateConnection(ConnectionDTO connectionDTO, String 
accountId) {
         try {
-            if (checkConnection(accountId, connectionDTO.getConnectionName()) 
== null) {
+            if (CollectionUtils.isEmpty(checkConnection(accountId, 
connectionDTO.getConnectionName()))) {
                 throw new 
EventBridgeException(EventBridgeErrorCode.ConnectionNotExist, 
connectionDTO.getConnectionName());
             }
-            checkAuth(connectionDTO.getAuthParameters());
             
checkNetworkType(connectionDTO.getNetworkParameters().getNetworkType());
-            
connectionDTO.setAuthParameters(setSecretData(connectionDTO.getAuthParameters(),
 accountId, connectionDTO.getConnectionName()));
+            if (connectionDTO.getAuthParameters() != null) {
+                
connectionDTO.setAuthParameters(updateSecretData(connectionDTO.getAuthParameters(),
 accountId, connectionDTO.getConnectionName(), 
connectionDTO.getConnectionName()));
+            }
             connectionRepository.updateConnection(connectionDTO);
         } catch (Exception e) {
             log.error("ConnectionService | updateConnection | error", e);
@@ -118,9 +114,9 @@ public class ConnectionService extends 
AbstractResourceService {
         }
     }
 
-    public ConnectionDTO getConnection(String accountId, String 
connectionName) {
+    public List<ConnectionDTO> getConnection(String accountId, String 
connectionName) {
         try {
-            final ConnectionDTO connectionDTO = 
connectionRepository.getConnection(accountId, connectionName);
+            final List<ConnectionDTO> connectionDTO = 
connectionRepository.getConnection(accountId, connectionName);
             if (connectionDTO == null) {
                 throw new 
EventBridgeException(EventBridgeErrorCode.ConnectionNotExist, connectionName);
             }
@@ -131,7 +127,7 @@ public class ConnectionService extends 
AbstractResourceService {
         }
     }
 
-    public ConnectionDTO checkConnection(String accountId, String 
connectionName) {
+    public List<ConnectionDTO> checkConnection(String accountId, String 
connectionName) {
         return connectionRepository.getConnection(accountId, connectionName);
     }
 
@@ -153,16 +149,6 @@ public class ConnectionService extends 
AbstractResourceService {
         return connectionRepository.getConnectionCount(accountId);
     }
 
-    private void checkAuth(AuthParameters authParameters) {
-        final BasicAuthParameters basicAuthParameters = 
authParameters.getBasicAuthParameters();
-        final ApiKeyAuthParameters apiKeyAuthParameters = 
authParameters.getApiKeyAuthParameters();
-        final OAuthParameters oauthParameters = 
authParameters.getOauthParameters();
-        boolean check = (apiKeyAuthParameters != null || basicAuthParameters 
!= null) && (apiKeyAuthParameters != null || oauthParameters != null) && 
(basicAuthParameters != null || oauthParameters != null);
-        if (check) {
-            throw new 
EventBridgeException(EventBridgeErrorCode.ConnectionAuthParametersInvalid);
-        }
-    }
-
     private AuthParameters setSecretData(AuthParameters authParameters, String 
accountId, String connectionName) throws Exception {
         final BasicAuthParameters basicAuthParameters = 
authParameters.getBasicAuthParameters();
         final ApiKeyAuthParameters apiKeyAuthParameters = 
authParameters.getApiKeyAuthParameters();
@@ -171,61 +157,104 @@ public class ConnectionService extends 
AbstractResourceService {
             Map<String, String> basicAuthParametersMap = Maps.newHashMap();
             basicAuthParametersMap.put("username", 
basicAuthParameters.getUsername());
             basicAuthParametersMap.put("password", 
basicAuthParameters.getPassword());
-            secretManagerAPI.createSecretName(accountId, connectionName, new 
Gson().toJson(basicAuthParametersMap));
+            final String secretName = 
secretManagerAPI.createSecretName(accountId, connectionName, new 
Gson().toJson(basicAuthParametersMap));
+            basicAuthParameters.setPassword(secretName);
             return authParameters;
         }
         if (apiKeyAuthParameters != null) {
             Map<String, String> apiKeyAuthParametersMap = Maps.newHashMap();
             apiKeyAuthParametersMap.put("apiKeyName", 
apiKeyAuthParameters.getApiKeyName());
             apiKeyAuthParametersMap.put("apiKeyValue", 
apiKeyAuthParameters.getApiKeyValue());
-            secretManagerAPI.createSecretName(accountId, connectionName, new 
Gson().toJson(apiKeyAuthParametersMap));
+            final String secretName = 
secretManagerAPI.createSecretName(accountId, connectionName, new 
Gson().toJson(apiKeyAuthParametersMap));
+            apiKeyAuthParameters.setApiKeyValue(secretName);
             return authParameters;
         }
+        final OAuthHttpParameters oauthHttpParameters = 
oauthParameters.getOauthHttpParameters();
+        if (oauthHttpParameters == null) {
+            throw new 
EventBridgeException(EventBridgeErrorCode.OauthHttpParametersEmpty);
+        }
+        saveClientByKms(accountId, connectionName, oauthParameters);
         return authParameters;
     }
 
-    private OAuthHttpParameters getValueSecret(OAuthHttpParameters 
oauthHttpParameters, String accountId, String connectionName) throws Exception {
-        final List<BodyParameter> bodyParameters = 
oauthHttpParameters.getBodyParameters();
-        final List<QueryStringParameter> queryStringParameters = 
oauthHttpParameters.getQueryStringParameters();
-        final List<HeaderParameter> headerParameters = 
oauthHttpParameters.getHeaderParameters();
-        if (!CollectionUtils.isEmpty(bodyParameters)) {
-            for (BodyParameter bodyParameter : bodyParameters) {
-                if (Boolean.parseBoolean(bodyParameter.getIsValueSecret())) {
-                    getString(accountId, connectionName, 
bodyParameter.getKey(), bodyParameter.getValue());
-                    oauthHttpParameters.setBodyParameters(bodyParameters);
-                    return oauthHttpParameters;
-                }
-            }
+    private void saveClientByKms(String accountId, String connectionName, 
OAuthParameters oauthParameters) throws Exception {
+        OAuthParameters.ClientParameters clientParameters = 
oauthParameters.getClientParameters();
+        String clientID = clientParameters.getClientID();
+        String clientSecret = clientParameters.getClientSecret();
+        Map<String, String> secretValue = Maps.newHashMap();
+        secretValue.put("client_id", clientID);
+        secretValue.put("client_secret", clientSecret);
+        clientParameters.setClientSecret(getString(accountId, connectionName, 
secretValue));
+        oauthParameters.setClientParameters(clientParameters);
+    }
+
+    private AuthParameters updateSecretData(AuthParameters authParameters, 
String accountId, String connectionName, String name) throws Exception {
+        ConnectionDTO connection = 
connectionRepository.getConnectionByName(name);
+        if (authParameters == null) {
+            return null;
         }
-        if (!CollectionUtils.isEmpty(queryStringParameters)) {
-            for (QueryStringParameter queryStringParameter : 
queryStringParameters) {
-                if 
(Boolean.parseBoolean(queryStringParameter.getIsValueSecret())) {
-                    final String secretName = getString(accountId, 
connectionName, queryStringParameter.getKey(), queryStringParameter.getValue());
-                    queryStringParameter.setValue(secretName);
-                    
oauthHttpParameters.setQueryStringParameters(queryStringParameters);
-                    return oauthHttpParameters;
-                }
+        final BasicAuthParameters basicAuthParameters = 
authParameters.getBasicAuthParameters();
+        final ApiKeyAuthParameters apiKeyAuthParameters = 
authParameters.getApiKeyAuthParameters();
+        final OAuthParameters oauthParameters = 
authParameters.getOauthParameters();
+        if (basicAuthParameters != null) {
+            String secretName = null;
+            if (connection.getAuthParameters() != null && 
connection.getAuthParameters().getBasicAuthParameters() != null) {
+                BasicAuthParameters oldBasicAuthParameters = 
connection.getAuthParameters().getBasicAuthParameters();
+            } else {
+                Map<String, String> stringMap = Maps.newHashMap();
+                stringMap.put("username", basicAuthParameters.getUsername());
+                stringMap.put("password", basicAuthParameters.getPassword());
+                secretName = secretManagerAPI.createSecretName(accountId, 
connectionName, new Gson().toJson(stringMap));
             }
+
+            basicAuthParameters.setPassword(secretName);
+            return authParameters;
         }
-        for (HeaderParameter headerParameter : headerParameters) {
-            if (Boolean.parseBoolean(headerParameter.getIsValueSecret())) {
-                final String secretName = getString(accountId, connectionName, 
headerParameter.getKey(), headerParameter.getValue());
-                headerParameter.setValue(secretName);
-                break;
+        if (apiKeyAuthParameters != null) {
+            String secretName = null;
+            if (connection.getAuthParameters() != null && 
connection.getAuthParameters().getApiKeyAuthParameters() != null) {
+                ApiKeyAuthParameters oldApiKeyAuthParameters = 
connection.getAuthParameters().getApiKeyAuthParameters();
+            } else {
+                Map<String, String> apiKeyMap = Maps.newHashMap();
+                apiKeyMap.put("apiKeyName", 
apiKeyAuthParameters.getApiKeyName());
+                apiKeyMap.put("apiKeyValue", 
apiKeyAuthParameters.getApiKeyValue());
+                secretName = secretManagerAPI.createSecretName(accountId, 
connectionName, new Gson().toJson(apiKeyMap));
             }
+            apiKeyAuthParameters.setApiKeyValue(secretName);
+            return authParameters;
         }
-        oauthHttpParameters.setHeaderParameters(headerParameters);
-        return oauthHttpParameters;
+        if (oauthParameters == null) {
+            return authParameters;
+        }
+        updateClientByKms(accountId, connectionName, oauthParameters, 
connection);
+        return authParameters;
     }
 
-    private String getString(String accountId, String connectionName, String 
key, String value) throws Exception {
-        Map<String, String> queryStringParameterMap = Maps.newHashMap();
-        queryStringParameterMap.put("oauthHttpParameterKey", key);
-        queryStringParameterMap.put("oauthHttpParameterValue", value);
-        return secretManagerAPI.createSecretName(accountId, connectionName, 
new Gson().toJson(queryStringParameterMap));
+    private void updateClientByKms(String accountId, String connectionName, 
OAuthParameters oauthParameters, ConnectionDTO connection) throws Exception {
+        OAuthParameters.ClientParameters clientParameters = 
oauthParameters.getClientParameters();
+        String clientID = clientParameters.getClientID();
+        String clientSecret = clientParameters.getClientSecret();
+        String clientSecretSecretValue = null;
+        if (connection.getAuthParameters() != null && 
connection.getAuthParameters().getOauthParameters() != null) {
+            OAuthParameters.ClientParameters oldClientParameters = 
connection.getAuthParameters().getOauthParameters().getClientParameters();
+        } else {
+            Map<String, String> secretValue = Maps.newHashMap();
+            secretValue.put("client_id", clientID);
+            secretValue.put("client_secret", clientSecret);
+            clientSecretSecretValue = getString(accountId, connectionName, 
secretValue);
+        }
+        clientParameters.setClientSecret(clientSecretSecretValue);
+        oauthParameters.setClientParameters(clientParameters);
+    }
+
+    private String getString(String accountId, String connectionName, 
Map<String, String> secretValues) throws Exception {
+        return secretManagerAPI.createSecretName(accountId, connectionName, 
new Gson().toJson(secretValues));
     }
 
     private void checkNetworkType(String type) {
+        if (StringUtils.isBlank(type)) {
+            return;
+        }
         boolean check = true;
         for (NetworkTypeEnum networkTypeEnum : NetworkTypeEnum.values()) {
             if (networkTypeEnum.getNetworkType().equals(type)) {
diff --git 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/parameter/OAuthParameters.java
 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/parameter/OAuthParameters.java
index 1cb96f7..3fe2298 100644
--- 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/parameter/OAuthParameters.java
+++ 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/model/connection/parameter/OAuthParameters.java
@@ -38,7 +38,7 @@ public class OAuthParameters {
     @Getter
     @Setter
     @ToString
-    static class ClientParameters {
+    public static class ClientParameters {
         @SerializedName("ClientID")
         private String clientID;
 
diff --git 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ConnectionRepository.java
 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ConnectionRepository.java
index 2b2c61a..e7f0307 100644
--- 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ConnectionRepository.java
+++ 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ConnectionRepository.java
@@ -29,10 +29,14 @@ public interface ConnectionRepository {
 
     boolean updateConnection(ConnectionDTO connectionDTO);
 
-    ConnectionDTO getConnection(String accountId, String connectionName);
+    List<ConnectionDTO> getConnection(String accountId, String connectionName);
 
     List<ConnectionDTO> listConnections(String accountId, String 
connectionName, String nextToken,
                                         int maxResults);
 
     int getConnectionCount(String accountId);
+
+    ConnectionDTO getConnectionById(Integer id);
+
+    ConnectionDTO getConnectionByName(String name);
 }
diff --git 
a/domain/src/test/java/org/apache/rocketmq/eventbridge/domain/service/ConnectionServiceTest.java
 
b/domain/src/test/java/org/apache/rocketmq/eventbridge/domain/service/ConnectionServiceTest.java
index eafaa76..591a9b5 100644
--- 
a/domain/src/test/java/org/apache/rocketmq/eventbridge/domain/service/ConnectionServiceTest.java
+++ 
b/domain/src/test/java/org/apache/rocketmq/eventbridge/domain/service/ConnectionServiceTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.rocketmq.eventbridge.domain.service;
 
+import com.google.common.collect.Lists;
 import 
org.apache.rocketmq.eventbridge.domain.common.enums.AuthorizationTypeEnum;
 import org.apache.rocketmq.eventbridge.domain.common.enums.NetworkTypeEnum;
 import org.apache.rocketmq.eventbridge.domain.model.PaginationResult;
@@ -67,7 +68,9 @@ public class ConnectionServiceTest {
         NetworkParameters networkParameters = new NetworkParameters();
         
networkParameters.setNetworkType(NetworkTypeEnum.PUBLIC_NETWORK.getNetworkType());
         connectionDTO.setNetworkParameters(networkParameters);
-        Mockito.when(connectionRepository.getConnection(any(), 
any())).thenReturn(connectionDTO);
+        List<ConnectionDTO> connectionDTOS = Lists.newArrayList();
+        connectionDTOS.add(connectionDTO);
+        Mockito.when(connectionRepository.getConnection(any(), 
any())).thenReturn(connectionDTOS);
     }
 
     @Test
@@ -102,6 +105,7 @@ public class ConnectionServiceTest {
     @Test
     public void testUpdateConnection() {
         
Mockito.when(connectionRepository.updateConnection(any())).thenReturn(Boolean.TRUE);
+        
Mockito.when(connectionRepository.getConnectionByName(anyString())).thenReturn(new
 ConnectionDTO());
         ConnectionDTO connectionDTO = new ConnectionDTO();
         connectionDTO.setConnectionName(UUID.randomUUID().toString());
         NetworkParameters networkParameters = new NetworkParameters();
@@ -122,7 +126,7 @@ public class ConnectionServiceTest {
 
     @Test
     public void testGetConnection() {
-        final ConnectionDTO connectionDTO = 
connectionService.getConnection(UUID.randomUUID().toString(), 
UUID.randomUUID().toString());
+        final List<ConnectionDTO> connectionDTO = 
connectionService.getConnection(UUID.randomUUID().toString(), 
UUID.randomUUID().toString());
         Assert.assertNotNull(connectionDTO);
     }
 

Reply via email to