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());