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