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 b507a79  update connection (#35)
b507a79 is described below

commit b507a7954d7542150cbd8b27d5e80ca633b09548
Author: zhaohai <[email protected]>
AuthorDate: Thu Oct 13 16:41:46 2022 +0800

    update connection (#35)
    
    update connection
---
 .../api/controller/ApiDestinationController.java   |  9 ++--
 .../api/controller/ConnectionController.java       |  5 +-
 .../apidestination/ApiDestinationsResponse.java    |  3 ++
 .../apidestination/GetApiDestinationResponse.java  |  2 +
 .../ApiDestinationDTOControllerTest.java           |  7 ++-
 .../api/controller/ConnectionControllerTest.java   |  1 +
 .../mybatis/mapper/EventApiDestinationMapper.java  |  2 +
 .../MybatisApiDestinationRepository.java           |  5 ++
 .../mybatis/converter/ConnectConverter.java        | 21 ++++----
 .../mybatis/EventApiDestinationMapper.xml          | 11 ++++
 .../adapter/rpc/impl/SecretManagerAPIImpl.java     | 17 +++++++
 .../common/exception/EventBridgeErrorCode.java     |  1 +
 .../domain/model/connection/ConnectionService.java | 58 +++++++++-------------
 .../repository/ApiDestinationRepository.java       |  2 +
 .../eventbridge/domain/rpc/SecretManagerAPI.java   |  8 +++
 .../domain/service/ConnectionServiceTest.java      |  4 ++
 .../eventbridge/handler/ExceptionHandler.java      |  2 +-
 17 files changed, 103 insertions(+), 55 deletions(-)

diff --git 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationController.java
 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationController.java
index f18e6db..9e85783 100644
--- 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationController.java
+++ 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationController.java
@@ -122,14 +122,15 @@ public class ApiDestinationController {
                     .map(ConstraintViolation::getMessage)
                     .collect(Collectors.toList());
                 if (!CollectionUtils.isEmpty(errMessage)) {
-                    return new GetApiDestinationResponse(null, null, null, 
null, null).parameterCheckFailRes(
+                    return new GetApiDestinationResponse(null, null, null, 
null, null, null).parameterCheckFailRes(
                         errMessage.toString());
                 }
                 final ApiDestinationDTO apiDestinationDTO = 
apiDestinationService.getApiDestination(
                     accountAPI.getResourceOwnerAccountId(ctx), 
getApiDestinationRequest.getApiDestinationName());
                 return new 
GetApiDestinationResponse(apiDestinationDTO.getName(), 
apiDestinationDTO.getConnectionName(),
-                    apiDestinationDTO.getDescription(), 
apiDestinationDTO.getApiParams(),
-                    
apiDestinationDTO.getInvocationRateLimitPerSecond()).success();
+                        apiDestinationDTO.getDescription(), 
apiDestinationDTO.getApiParams(),
+                        apiDestinationDTO.getInvocationRateLimitPerSecond(), 
apiDestinationDTO.getGmtCreate()
+                        .getTime()).success();
             });
     }
 
@@ -179,6 +180,8 @@ public class ApiDestinationController {
                         BeanUtils.copyProperties(eventApiDestination, 
apiDestinationsResponse);
                         
apiDestinationsResponse.setApiDestinationName(eventApiDestination.getName());
                         
apiDestinationsResponse.setHttpApiParameters(eventApiDestination.getApiParams());
+                        
apiDestinationsResponse.setGmtCreate(eventApiDestination.getGmtCreate()
+                                .getTime());
                         apiDestinationsResponses.add(apiDestinationsResponse);
                     });
                 return new 
ListApiDestinationsResponse(apiDestinationsResponses, 
listPaginationResult.getNextToken(),
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 5fca028..8b3318d 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
@@ -188,7 +188,10 @@ public class ConnectionController {
                             .forEach(connectionDTO -> {
                                 ConnectionResponse connectionResponse = new 
ConnectionResponse();
                                 BeanUtils.copyProperties(connectionDTO, 
connectionResponse);
-                                connectionResponses.add(connectionResponse);
+                                
connectionResponse.setGmtCreate(connectionDTO.getGmtCreate().getTime());
+                                
connectionResponse.setApiDestinationName(connectionDTO.getApiDestinationName());
+                                
connectionResponse.setId(connectionDTO.getId());
+                                
connectionResponses.add(dataMasking(connectionResponse));
                             });
                     return new ListConnectionResponse(connectionResponses, 
listPaginationResult.getNextToken(),
                             listPaginationResult.getTotal(), 
listConnectionRequest.getMaxResults()).success();
diff --git 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/ApiDestinationsResponse.java
 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/ApiDestinationsResponse.java
index d7dcd13..1393892 100644
--- 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/ApiDestinationsResponse.java
+++ 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/ApiDestinationsResponse.java
@@ -42,4 +42,7 @@ public class ApiDestinationsResponse {
 
     @SerializedName("InvocationRateLimitPerSecond")
     private Integer invocationRateLimitPerSecond;
+
+    @SerializedName("GmtCreate")
+    private Long gmtCreate;
 }
diff --git 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/GetApiDestinationResponse.java
 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/GetApiDestinationResponse.java
index 0753e28..388f88f 100644
--- 
a/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/GetApiDestinationResponse.java
+++ 
b/adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/dto/apidestination/GetApiDestinationResponse.java
@@ -47,6 +47,8 @@ public class GetApiDestinationResponse extends BaseResponse {
     @SerializedName("InvocationRateLimitPerSecond")
     private Integer invocationRateLimitPerSecond;
 
+    @SerializedName("GmtCreate")
+    private Long gmtCreate;
     public GetApiDestinationResponse success() {
         setCode(EventBridgeErrorCode.Success.getCode());
         setMessage(EventBridgeErrorCode.Success.getMsg());
diff --git 
a/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationDTOControllerTest.java
 
b/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationDTOControllerTest.java
index e15fccc..04f09de 100644
--- 
a/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationDTOControllerTest.java
+++ 
b/adapter/api/src/test/java/org/apache/rocketmq/eventbridge/adapter/api/controller/ApiDestinationDTOControllerTest.java
@@ -46,10 +46,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;
@@ -129,6 +126,7 @@ public class ApiDestinationDTOControllerTest {
         ApiDestinationDTO eventApiDestinationDTO = new ApiDestinationDTO();
         eventApiDestinationDTO.setName(UUID.randomUUID()
             .toString());
+        eventApiDestinationDTO.setGmtCreate(new Date());
         Mockito.when(apiDestinationService.getApiDestination(any(), any()))
             .thenReturn(eventApiDestinationDTO);
         GetApiDestinationRequest getApiDestinationRequest = new 
GetApiDestinationRequest();
@@ -166,6 +164,7 @@ public class ApiDestinationDTOControllerTest {
         ApiDestinationDTO apiDestinationDTO = new ApiDestinationDTO();
         apiDestinationDTO.setName(UUID.randomUUID()
             .toString());
+        apiDestinationDTO.setGmtCreate(new Date());
         apiDestinationDTOList.add(apiDestinationDTO);
         result.setData(apiDestinationDTOList);
         result.setTotal(9);
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 ee0c0d3..32128a5 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
@@ -251,6 +251,7 @@ public class ConnectionControllerTest {
         ConnectionDTO eventConnection = new ConnectionDTO();
         eventConnection.setConnectionName(UUID.randomUUID()
             .toString());
+        eventConnection.setGmtCreate(new Date());
         eventConnectionWithBLOBs.add(eventConnection);
         result.setData(eventConnectionWithBLOBs);
         result.setTotal(9);
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 df64f1d..f456fab 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
@@ -119,4 +119,6 @@ public interface EventApiDestinationMapper {
      * @return
      */
     int getApiDestinationCount(@Param("accountId") String accountId);
+
+    List<ApiDestinationDO> 
queryApiDestinationByConnectionName(@Param("accountId") String accountId, 
@Param("connectionName") String connectionName);
 }
\ No newline at end of file
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 1258391..7b682bf 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
@@ -72,4 +72,9 @@ public class MybatisApiDestinationRepository implements 
ApiDestinationRepository
     public int getApiDestinationCount(String accountId) {
         return eventApiDestinationMapper.getApiDestinationCount(accountId);
     }
+
+    @Override
+    public List<ApiDestinationDTO> queryApiDestinationByConnectionName(String 
accountId, String connectionName) {
+        return 
ApiDestinationConverter.doListCoverterDtoList(eventApiDestinationMapper.queryApiDestinationByConnectionName(accountId,
 connectionName));
+    }
 }
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 60a5bd4..bbe8045 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
@@ -35,9 +35,10 @@ public class ConnectConverter {
         ConnectionDTO connectionDTO = new ConnectionDTO();
         connectionDTO.setConnectionName(connectionDO.getName());
         connectionDTO.setDescription(connectionDO.getDescription());
-        connectionDTO.setAuthParameters(new 
Gson().fromJson(connectionDO.getAuthParameters(), AuthParameters.class));
-        connectionDTO.setNetworkParameters(
-            new Gson().fromJson(connectionDO.getNetworkParameters(), 
NetworkParameters.class));
+        if (connectionDO.getAuthParameters() != null) {
+            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());
@@ -50,20 +51,18 @@ public class ConnectConverter {
         }
         ConnectionDO connectionDO = new ConnectionDO();
         connectionDO.setAccountId(connectionDTO.getAccountId());
-        connectionDO.setAuthorizationType(connectionDTO.getAuthParameters()
-            .getAuthorizationType());
+        if (connectionDTO.getAuthParameters() != null) {
+            
connectionDO.setAuthorizationType(connectionDTO.getAuthParameters().getAuthorizationType());
+            connectionDO.setAuthParameters(new 
Gson().toJson(connectionDTO.getAuthParameters()));
+        }
         connectionDO.setName(connectionDTO.getConnectionName());
         connectionDO.setNetworkParameters(new 
Gson().toJson(connectionDTO.getNetworkParameters()));
         connectionDO.setDescription(connectionDTO.getDescription());
-        connectionDO.setNetworkType(connectionDTO.getNetworkParameters()
-            .getNetworkType());
-        connectionDO.setAuthParameters(new 
Gson().toJson(connectionDTO.getAuthParameters()));
+        
connectionDO.setNetworkType(connectionDTO.getNetworkParameters().getNetworkType());
         return connectionDO;
     }
 
     public static List<ConnectionDTO> doListConvertDtoList(List<ConnectionDO> 
connectionDOS) {
-        return connectionDOS.stream()
-            .map(ConnectConverter::doConvertDto)
-            .collect(Collectors.toList());
+        return 
connectionDOS.stream().map(ConnectConverter::doConvertDto).collect(Collectors.toList());
     }
 }
diff --git 
a/adapter/persistence/src/main/resources/mybatis/EventApiDestinationMapper.xml 
b/adapter/persistence/src/main/resources/mybatis/EventApiDestinationMapper.xml
index 8328b66..4e8615e 100644
--- 
a/adapter/persistence/src/main/resources/mybatis/EventApiDestinationMapper.xml
+++ 
b/adapter/persistence/src/main/resources/mybatis/EventApiDestinationMapper.xml
@@ -289,4 +289,15 @@
       <if test="accountId != null and accountId != ''"> account_id = 
#{accountId}</if>
     </where>
   </select>
+  <select id="queryApiDestinationByConnectionName" 
resultMap="ResultMapWithBLOBs" parameterType="java.util.Map" >
+    select
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from event_api_destination
+    <where>
+      <if test="accountId != null and accountId != ''"> account_id = 
#{accountId}</if>
+      <if test="connectionName != null and connectionName != ''">and 
connection_name = #{connectionName}</if>
+    </where>
+  </select>
 </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 49886be..36f13fc 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
@@ -20,6 +20,8 @@ package org.apache.rocketmq.eventbridge.adapter.rpc.impl;
 import org.apache.rocketmq.eventbridge.domain.rpc.SecretManagerAPI;
 import org.springframework.stereotype.Component;
 
+import java.util.Map;
+
 @Component
 public class SecretManagerAPIImpl implements SecretManagerAPI {
 
@@ -38,4 +40,19 @@ public class SecretManagerAPIImpl implements 
SecretManagerAPI {
     public String getSecretName(String accountId, String connectionName) {
         return null;
     }
+
+    @Override
+    public Boolean querySecretName(String secretName) {
+        return Boolean.TRUE;
+    }
+
+    @Override
+    public Object getSecretValue(String secretName) {
+        return null;
+    }
+
+    @Override
+    public String updateSecretValue(String oldSecretName, String accountId, 
String connectionName, String key, String value) throws Exception {
+        return null;
+    }
 }
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 504de20..3b21949 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
@@ -88,6 +88,7 @@ public enum EventBridgeErrorCode implements BaseErrorCode {
     EventRuleAlreadyExist(409, "EventRuleAlreadyExist", "The event rule [{0}] 
of event bus [{1}] already existed!"),
 
     //Connection
+    ConnectionBoundApiDestination(409, "ConnectionBoundApiDestination", "The 
Connection [{0}] has bound API Destination, deletion is not allowed."),
     ConnectionAlreadyExist(409, "ConnectionAlreadyExist", "The Connection 
[{0}]  already existed!"),
     ConnectionNameInvalid(409, "ConnectionNameInvalid", "The Connection name 
[{0}] is invalid! Which should match the pattern [{1}]."),
     ConnectionCountExceedLimit(409, "ConnectionCountExceedLimit", "The current 
count of Connection is [{0}], which will exceed the limit quota [{1}]."),
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 8a0e5a5..7f30029 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
@@ -17,7 +17,6 @@
 
 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;
@@ -27,6 +26,7 @@ import 
org.apache.rocketmq.eventbridge.domain.common.exception.EventBridgeErrorC
 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.*;
+import 
org.apache.rocketmq.eventbridge.domain.repository.ApiDestinationRepository;
 import org.apache.rocketmq.eventbridge.domain.repository.ConnectionRepository;
 import org.apache.rocketmq.eventbridge.domain.rpc.NetworkServiceAPI;
 import org.apache.rocketmq.eventbridge.domain.rpc.SecretManagerAPI;
@@ -37,7 +37,6 @@ import 
org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.List;
-import java.util.Map;
 
 import static 
org.apache.rocketmq.eventbridge.domain.common.exception.EventBridgeErrorCode.ConnectionCountExceedLimit;
 
@@ -49,10 +48,14 @@ public class ConnectionService extends 
AbstractResourceService {
     protected SecretManagerAPI secretManagerAPI;
     protected NetworkServiceAPI networkServiceAPI;
 
-    public ConnectionService(ConnectionRepository connectionRepository, 
SecretManagerAPI secretManagerAPI, NetworkServiceAPI networkServiceAPI) {
+    protected ApiDestinationRepository apiDestinationRepository;
+
+    public ConnectionService(ConnectionRepository connectionRepository,
+                             SecretManagerAPI secretManagerAPI, 
NetworkServiceAPI networkServiceAPI, ApiDestinationRepository 
apiDestinationRepository) {
         this.connectionRepository = connectionRepository;
         this.secretManagerAPI = secretManagerAPI;
         this.networkServiceAPI = networkServiceAPI;
+        this.apiDestinationRepository = apiDestinationRepository;
     }
 
     @Transactional(rollbackFor = Exception.class, propagation = 
Propagation.REQUIRED)
@@ -85,12 +88,18 @@ public class ConnectionService extends 
AbstractResourceService {
             if (CollectionUtils.isEmpty(checkConnection(accountId, 
connectionName))) {
                 throw new 
EventBridgeException(EventBridgeErrorCode.ConnectionNotExist, connectionName);
             }
+            if 
(!CollectionUtils.isEmpty(apiDestinationRepository.queryApiDestinationByConnectionName(accountId,
 connectionName))) {
+                throw new 
EventBridgeException(EventBridgeErrorCode.ConnectionBoundApiDestination, 
connectionName);
+            }
             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);
+            if 
(secretManagerAPI.querySecretName(secretManagerAPI.getSecretName(accountId, 
connectionName))) {
+                
secretManagerAPI.deleteSecretName(secretManagerAPI.getSecretName(accountId, 
connectionName));
+            }
         } catch (Exception e) {
             log.error("ConnectionService | deleteConnection | error", e);
             throw new EventBridgeException(e);
@@ -154,18 +163,12 @@ public class ConnectionService extends 
AbstractResourceService {
         final ApiKeyAuthParameters apiKeyAuthParameters = 
authParameters.getApiKeyAuthParameters();
         final OAuthParameters oauthParameters = 
authParameters.getOauthParameters();
         if (basicAuthParameters != null) {
-            Map<String, String> basicAuthParametersMap = Maps.newHashMap();
-            basicAuthParametersMap.put("username", 
basicAuthParameters.getUsername());
-            basicAuthParametersMap.put("password", 
basicAuthParameters.getPassword());
-            final String secretName = 
secretManagerAPI.createSecretName(accountId, connectionName, new 
Gson().toJson(basicAuthParametersMap));
+            final String secretName = 
secretManagerAPI.createSecretName(accountId, connectionName, new 
Gson().toJson(basicAuthParameters));
             basicAuthParameters.setPassword(secretName);
             return authParameters;
         }
         if (apiKeyAuthParameters != null) {
-            Map<String, String> apiKeyAuthParametersMap = Maps.newHashMap();
-            apiKeyAuthParametersMap.put("apiKeyName", 
apiKeyAuthParameters.getApiKeyName());
-            apiKeyAuthParametersMap.put("apiKeyValue", 
apiKeyAuthParameters.getApiKeyValue());
-            final String secretName = 
secretManagerAPI.createSecretName(accountId, connectionName, new 
Gson().toJson(apiKeyAuthParametersMap));
+            final String secretName = 
secretManagerAPI.createSecretName(accountId, connectionName, new 
Gson().toJson(apiKeyAuthParameters));
             apiKeyAuthParameters.setApiKeyValue(secretName);
             return authParameters;
         }
@@ -179,12 +182,7 @@ public class ConnectionService extends 
AbstractResourceService {
 
     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));
+        
clientParameters.setClientSecret(secretManagerAPI.createSecretName(accountId, 
connectionName, new Gson().toJson(clientParameters)));
         oauthParameters.setClientParameters(clientParameters);
     }
 
@@ -200,11 +198,9 @@ public class ConnectionService extends 
AbstractResourceService {
             String secretName = null;
             if (connection.getAuthParameters() != null && 
connection.getAuthParameters().getBasicAuthParameters() != null) {
                 BasicAuthParameters oldBasicAuthParameters = 
connection.getAuthParameters().getBasicAuthParameters();
+                secretName = 
secretManagerAPI.updateSecretValue(oldBasicAuthParameters.getPassword(), 
accountId, connectionName, basicAuthParameters.getUsername(), 
basicAuthParameters.getPassword());
             } 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));
+                secretName = secretManagerAPI.createSecretName(accountId, 
connectionName, new Gson().toJson(basicAuthParameters));
             }
 
             basicAuthParameters.setPassword(secretName);
@@ -214,11 +210,9 @@ public class ConnectionService extends 
AbstractResourceService {
             String secretName = null;
             if (connection.getAuthParameters() != null && 
connection.getAuthParameters().getApiKeyAuthParameters() != null) {
                 ApiKeyAuthParameters oldApiKeyAuthParameters = 
connection.getAuthParameters().getApiKeyAuthParameters();
+                secretName = 
secretManagerAPI.updateSecretValue(oldApiKeyAuthParameters.getApiKeyValue(), 
accountId, connectionName, apiKeyAuthParameters.getApiKeyName(), 
apiKeyAuthParameters.getApiKeyValue());
             } 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));
+                secretName = secretManagerAPI.createSecretName(accountId, 
connectionName, new Gson().toJson(apiKeyAuthParameters));
             }
             apiKeyAuthParameters.setApiKeyValue(secretName);
             return authParameters;
@@ -232,25 +226,19 @@ public class ConnectionService extends 
AbstractResourceService {
 
     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();
+            clientSecretSecretValue = 
secretManagerAPI.updateSecretValue(oldClientParameters.getClientSecret(),
+                    accountId, connectionName, 
connection.getAuthParameters().getOauthParameters().getClientParameters().getClientID(),
+                    
connection.getAuthParameters().getOauthParameters().getClientParameters().getClientSecret());
         } else {
-            Map<String, String> secretValue = Maps.newHashMap();
-            secretValue.put("client_id", clientID);
-            secretValue.put("client_secret", clientSecret);
-            clientSecretSecretValue = getString(accountId, connectionName, 
secretValue);
+            clientSecretSecretValue = 
secretManagerAPI.createSecretName(accountId, connectionName, new 
Gson().toJson(clientParameters));
         }
         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;
diff --git 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ApiDestinationRepository.java
 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ApiDestinationRepository.java
index a66b43f..b52f7df 100644
--- 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ApiDestinationRepository.java
+++ 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/repository/ApiDestinationRepository.java
@@ -35,4 +35,6 @@ public interface ApiDestinationRepository {
                                                 int maxResults);
 
     int getApiDestinationCount(String accountId);
+
+    List<ApiDestinationDTO> queryApiDestinationByConnectionName(String 
accountId, String connectionName);
 }
diff --git 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/rpc/SecretManagerAPI.java
 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/rpc/SecretManagerAPI.java
index 4ca8882..eba68eb 100644
--- 
a/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/rpc/SecretManagerAPI.java
+++ 
b/domain/src/main/java/org/apache/rocketmq/eventbridge/domain/rpc/SecretManagerAPI.java
@@ -17,6 +17,8 @@
 
 package org.apache.rocketmq.eventbridge.domain.rpc;
 
+import java.util.Map;
+
 public interface SecretManagerAPI {
 
     String createSecretName(String accountId, String connectionName, String 
secretData) throws Exception;
@@ -24,4 +26,10 @@ public interface SecretManagerAPI {
     void deleteSecretName(String secretName) throws Exception;
 
     String getSecretName(String accountId, String connectionName);
+
+    Boolean querySecretName(String secretName);
+
+    Object getSecretValue(String secretName);
+
+    String updateSecretValue(String oldSecretName, String accountId, String 
connectionName, String key, String value) throws Exception;
 }
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 591a9b5..b314544 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
@@ -26,6 +26,7 @@ import 
org.apache.rocketmq.eventbridge.domain.model.connection.ConnectionService
 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.NetworkParameters;
+import 
org.apache.rocketmq.eventbridge.domain.repository.ApiDestinationRepository;
 import org.apache.rocketmq.eventbridge.domain.repository.ConnectionRepository;
 import org.apache.rocketmq.eventbridge.domain.rpc.NetworkServiceAPI;
 import org.apache.rocketmq.eventbridge.domain.rpc.SecretManagerAPI;
@@ -57,6 +58,8 @@ public class ConnectionServiceTest {
     private SecretManagerAPI secretManagerAPI;
     @Mock
     private NetworkServiceAPI networkServiceAPI;
+    @Mock
+    private ApiDestinationRepository apiDestinationRepository;
 
     @Before
     public void testBefore() throws Exception {
@@ -99,6 +102,7 @@ public class ConnectionServiceTest {
     @Test
     public void testDeleteConnection() throws Exception {
         Mockito.when(connectionRepository.deleteConnection(any(), 
any())).thenReturn(Boolean.TRUE);
+        
Mockito.when(apiDestinationRepository.queryApiDestinationByConnectionName(any(),
 any())).thenReturn(null);
         connectionService.deleteConnection(UUID.randomUUID().toString(), 
UUID.randomUUID().toString());
     }
 
diff --git 
a/start/src/main/java/org/apache/rocketmq/eventbridge/handler/ExceptionHandler.java
 
b/start/src/main/java/org/apache/rocketmq/eventbridge/handler/ExceptionHandler.java
index 9081bfb..4977aa5 100644
--- 
a/start/src/main/java/org/apache/rocketmq/eventbridge/handler/ExceptionHandler.java
+++ 
b/start/src/main/java/org/apache/rocketmq/eventbridge/handler/ExceptionHandler.java
@@ -47,7 +47,7 @@ public class ExceptionHandler implements 
ErrorWebExceptionHandler {
         BaseResponse baseResponse = new BaseResponse();
         HttpStatus httpStatus = null;
         if (throwable instanceof EventBridgeException) {
-            EventBridgeException eventBridgeException = 
(EventBridgeException)throwable;
+            EventBridgeException eventBridgeException = 
(EventBridgeException)throwable.getCause();
             baseResponse.setCode(eventBridgeException.getCode());
             baseResponse.setMessage(eventBridgeException.getMessage());
             httpStatus = 
HttpStatus.resolve(eventBridgeException.getHttpCode());

Reply via email to